Skip to content

Commit

Permalink
fix(amplify-appsync-simulator): fixed app sync simulator util auth ty…
Browse files Browse the repository at this point in the history
…pe mock (#8451)
  • Loading branch information
lazpavel committed Oct 14, 2021
1 parent aedcae3 commit 2ce306f
Show file tree
Hide file tree
Showing 9 changed files with 124 additions and 8 deletions.
@@ -0,0 +1,57 @@
import { create } from '../../../velocity/util/index';
import { GraphQLResolveInfo } from 'graphql';
import { AppSyncGraphQLExecutionContext } from '../../../utils/graphql-runner';
import { AmplifyAppSyncSimulatorAuthenticationType } from '../../../type-definition';

const stubInfo = {} as unknown;
const mockInfo = stubInfo as GraphQLResolveInfo;

describe('$util.authType', () => {
it('should return API Key Authorization', () => {
const executionContext: AppSyncGraphQLExecutionContext = {
headers: { 'x-api-key': 'da-fake-key' },
requestAuthorizationMode: AmplifyAppSyncSimulatorAuthenticationType.API_KEY,
appsyncErrors: [],
};

const util = create(undefined, undefined, mockInfo, executionContext);

expect(util.authType()).toEqual('API Key Authorization');
});

it('should return IAM Authorization', () => {
const executionContext: AppSyncGraphQLExecutionContext = {
headers: { 'x-api-key': 'da-fake-key' },
requestAuthorizationMode: AmplifyAppSyncSimulatorAuthenticationType.AWS_IAM,
appsyncErrors: [],
};

const util = create(undefined, undefined, mockInfo, executionContext);

expect(util.authType()).toEqual('IAM Authorization');
});

it('should return Open ID Connect Authorization', () => {
const executionContext: AppSyncGraphQLExecutionContext = {
headers: { 'x-api-key': 'da-fake-key' },
requestAuthorizationMode: AmplifyAppSyncSimulatorAuthenticationType.OPENID_CONNECT,
appsyncErrors: [],
};

const util = create(undefined, undefined, mockInfo, executionContext);

expect(util.authType()).toEqual('Open ID Connect Authorization');
});

it('should return User Pool Authorization', () => {
const executionContext: AppSyncGraphQLExecutionContext = {
headers: { 'x-api-key': 'da-fake-key' },
requestAuthorizationMode: AmplifyAppSyncSimulatorAuthenticationType.AMAZON_COGNITO_USER_POOLS,
appsyncErrors: [],
};

const util = create(undefined, undefined, mockInfo, executionContext);

expect(util.authType()).toEqual('User Pool Authorization');
});
});
@@ -1,8 +1,9 @@
import { create } from '../../../velocity/util/index';
import { JavaMap } from '../../../velocity/value-mapper/map';
import { GraphQLResolveInfo } from 'graphql';
import { hasUncaughtExceptionCaptureCallback } from 'process';
import { generalUtils } from '../../../velocity/util/general-utils';
import { AppSyncGraphQLExecutionContext } from '../../../utils/graphql-runner';
import { AmplifyAppSyncSimulatorAuthenticationType } from '../../../type-definition';

const stubInfo = {
fieldName: 'testFieldName',
Expand Down Expand Up @@ -47,7 +48,13 @@ const stubJavaMap: JavaMap = new JavaMap({ field1: 'field1Value', field2: 'field
var util;

beforeEach(() => {
util = create(undefined, undefined, mockInfo);
const executionContext: AppSyncGraphQLExecutionContext = {
headers: { 'x-api-key': 'da-fake-key' },
requestAuthorizationMode: AmplifyAppSyncSimulatorAuthenticationType.API_KEY,
appsyncErrors: [],
};

util = create(undefined, undefined, mockInfo, executionContext);
});

it('error_filterDataJavaMap', () => {
Expand Down
@@ -1,13 +1,21 @@
import { create } from '../../../velocity/util/index';
import { GraphQLResolveInfo } from 'graphql';
import { map, random } from 'lodash';
import { AppSyncGraphQLExecutionContext } from '../../../utils/graphql-runner';
import { AmplifyAppSyncSimulatorAuthenticationType } from '../../../type-definition';

const stubInfo = {} as unknown;
export const mockInfo = stubInfo as GraphQLResolveInfo;
var util;

beforeEach(() => {
util = create(undefined, undefined, mockInfo);
const executionContext: AppSyncGraphQLExecutionContext = {
headers: { 'x-api-key': 'da-fake-key' },
requestAuthorizationMode: AmplifyAppSyncSimulatorAuthenticationType.API_KEY,
appsyncErrors: [],
};

util = create(undefined, undefined, mockInfo, executionContext);
});

describe('$utils.list.copyAndRetainAll', () => {
Expand Down
@@ -1,12 +1,20 @@
import { create } from '../../../velocity/util/index';
import { GraphQLResolveInfo } from 'graphql';
import { AppSyncGraphQLExecutionContext } from '../../../utils/graphql-runner';
import { AmplifyAppSyncSimulatorAuthenticationType } from '../../../type-definition';

const stubInfo = {} as unknown;
export const mockInfo = stubInfo as GraphQLResolveInfo;
var util;

beforeEach(() => {
util = create(undefined, undefined, mockInfo);
const executionContext: AppSyncGraphQLExecutionContext = {
headers: { 'x-api-key': 'da-fake-key' },
requestAuthorizationMode: AmplifyAppSyncSimulatorAuthenticationType.API_KEY,
appsyncErrors: [],
};

util = create(undefined, undefined, mockInfo, executionContext);
});

describe('$utils.math.round', () => {
Expand Down
@@ -1,13 +1,21 @@
import { create } from '../../../velocity/util/index';
import { mockedInputToRdsJsonString, mockedOutputFromRdsJsonString } from './mock-data';
import { GraphQLResolveInfo } from 'graphql';
import { AppSyncGraphQLExecutionContext } from '../../../utils/graphql-runner';
import { AmplifyAppSyncSimulatorAuthenticationType } from '../../../type-definition';

const stubInfo = {} as unknown;
const mockInfo = stubInfo as GraphQLResolveInfo;
let util;

beforeEach(() => {
util = create(undefined, undefined, mockInfo);
const executionContext: AppSyncGraphQLExecutionContext = {
headers: { 'x-api-key': 'da-fake-key' },
requestAuthorizationMode: AmplifyAppSyncSimulatorAuthenticationType.API_KEY,
appsyncErrors: [],
};

util = create(undefined, undefined, mockInfo, executionContext);
});

describe('$utils.rds.toJsonString', () => {
Expand Down
@@ -1,12 +1,20 @@
import { create } from '../../../velocity/util/index';
import { GraphQLResolveInfo } from 'graphql';
import { AmplifyAppSyncSimulatorAuthenticationType } from '../../../type-definition';
import { AppSyncGraphQLExecutionContext } from '../../../utils/graphql-runner';

const stubInfo = {} as unknown;
export const mockInfo = stubInfo as GraphQLResolveInfo;
var util;

beforeEach(() => {
util = create(undefined, undefined, mockInfo);
const executionContext: AppSyncGraphQLExecutionContext = {
headers: { 'x-api-key': 'da-fake-key' },
requestAuthorizationMode: AmplifyAppSyncSimulatorAuthenticationType.API_KEY,
appsyncErrors: [],
};

util = create(undefined, undefined, mockInfo, executionContext);
});

describe('$utils.str.toLower', () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/amplify-appsync-simulator/src/velocity/index.ts
Expand Up @@ -93,7 +93,7 @@ export class VelocityTemplate {
const { jwt } = requestContext;
const { iss: issuer, sub, 'cognito:username': cognitoUserName, username } = jwt || {};

const util = createUtil([], new Date(Date.now()), info);
const util = createUtil([], new Date(Date.now()), info, requestContext);
const args = convertToJavaTypes(argument);
// Identity is null for API Key
let identity = null;
Expand Down
17 changes: 17 additions & 0 deletions packages/amplify-appsync-simulator/src/velocity/util/auth-utils.ts
@@ -0,0 +1,17 @@
import { AmplifyAppSyncSimulatorAuthenticationType } from '../../type-definition';

export const authUtils = context => ({
authType() {
if (context.requestAuthorizationMode === AmplifyAppSyncSimulatorAuthenticationType.API_KEY) {
return 'API Key Authorization';
} else if (context.requestAuthorizationMode === AmplifyAppSyncSimulatorAuthenticationType.AWS_IAM) {
return 'IAM Authorization';
} else if (context.requestAuthorizationMode === AmplifyAppSyncSimulatorAuthenticationType.AMAZON_COGNITO_USER_POOLS) {
return 'User Pool Authorization';
} else if (context.requestAuthorizationMode === AmplifyAppSyncSimulatorAuthenticationType.OPENID_CONNECT) {
return 'Open ID Connect Authorization';
}

return 'API Key Authorization';
},
});
Expand Up @@ -3,14 +3,17 @@ import { generalUtils } from './general-utils';
import { dynamodbUtils } from './dynamodb-utils';
import { listUtils } from './list-utils';
import { mapUtils } from './map-utils';
import { authUtils } from './auth-utils';
import { transformUtils } from './transform';
import { time } from './time';
import { rds } from './rds';
import { str } from './str';
import { math } from './math';
import { GraphQLResolveInfo } from 'graphql';
export function create(errors = [], now: Date = new Date(), info: GraphQLResolveInfo) {
import { AppSyncGraphQLExecutionContext } from '../../utils/graphql-runner';
export function create(errors = [], now: Date = new Date(), info: GraphQLResolveInfo, context: AppSyncGraphQLExecutionContext) {
return {
...authUtils(context),
...generalUtils,
dynamodb: dynamodbUtils,
list: listUtils,
Expand Down

0 comments on commit 2ce306f

Please sign in to comment.