diff --git a/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-index-transformer-override.test.ts b/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-index-transformer-override.test.ts index d13dc77093..9d4d562e27 100644 --- a/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-index-transformer-override.test.ts +++ b/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-index-transformer-override.test.ts @@ -7,8 +7,10 @@ import { testTransform } from '@aws-amplify/graphql-transformer-test-utils'; import { Construct } from 'constructs'; import { applyFileBasedOverride } from '../../../graphql-transformer/override'; -jest.spyOn(stateManager, 'getLocalEnvInfo').mockReturnValue({ envName: 'testEnvName' }); +jest.spyOn(stateManager, 'getLocalEnvInfo').mockReturnValue({ envName: 'testEnvName' }); // TODO EnvName can not contain capital letters jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); test('it overrides expected resources', () => { const validSchema = ` diff --git a/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-primary-key-transformer-override.test.ts b/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-primary-key-transformer-override.test.ts index aec3a8cd79..e2b162b1ca 100644 --- a/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-primary-key-transformer-override.test.ts +++ b/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-primary-key-transformer-override.test.ts @@ -7,7 +7,7 @@ import { testTransform } from '@aws-amplify/graphql-transformer-test-utils'; import { Construct } from 'constructs'; import { applyFileBasedOverride } from '../../../graphql-transformer/override'; -jest.spyOn(stateManager, 'getLocalEnvInfo').mockReturnValue({ envName: 'testEnvName' }); +jest.spyOn(stateManager, 'getLocalEnvInfo').mockReturnValue({ envName: 'testEnvName' }); // TODO EnvName can not contain capital letters jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); test('it overrides expected resources', () => { diff --git a/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-searchable-transformer-override.test.ts b/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-searchable-transformer-override.test.ts index 6c62220431..359e5a8066 100644 --- a/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-searchable-transformer-override.test.ts +++ b/packages/amplify-category-api/src/__tests__/graphql-transformer/override/amplify-graphql-searchable-transformer-override.test.ts @@ -7,8 +7,10 @@ import { stateManager } from '@aws-amplify/amplify-cli-core'; import { Construct } from 'constructs'; import { applyFileBasedOverride } from '../../../graphql-transformer/override'; -jest.spyOn(stateManager, 'getLocalEnvInfo').mockReturnValue({ envName: 'testEnvName' }); +jest.spyOn(stateManager, 'getLocalEnvInfo').mockReturnValue({ envName: 'testEnvName' }); // Env name can not have capital letters jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); test('it overrides expected resources', () => { const validSchema = ` diff --git a/packages/amplify-category-api/src/graphql-transformer/override.ts b/packages/amplify-category-api/src/graphql-transformer/override.ts index 5c94b93566..7f64fc425a 100644 --- a/packages/amplify-category-api/src/graphql-transformer/override.ts +++ b/packages/amplify-category-api/src/graphql-transformer/override.ts @@ -14,6 +14,7 @@ import { AmplifyApiGraphQlResourceStackTemplate } from './cdk-compat/amplify-api * @param scope * @param overrideDir */ + export function applyFileBasedOverride(scope: Construct, overrideDirPath?: string): AmplifyApiGraphQlResourceStackTemplate { const overrideDir = overrideDirPath ?? path.join(pathManager.getBackendDirPath(), 'api', getAppSyncAPIName()); const overrideFilePath = path.join(overrideDir, 'build', 'override.js'); diff --git a/packages/amplify-graphql-api-construct/src/__tests__/__functional__/resources.test.ts b/packages/amplify-graphql-api-construct/src/__tests__/__functional__/resources.test.ts index 26d0604b34..0f1541d27d 100644 --- a/packages/amplify-graphql-api-construct/src/__tests__/__functional__/resources.test.ts +++ b/packages/amplify-graphql-api-construct/src/__tests__/__functional__/resources.test.ts @@ -1,8 +1,13 @@ import * as cdk from 'aws-cdk-lib'; import * as cognito from 'aws-cdk-lib/aws-cognito'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import { AmplifyGraphqlApi } from '../../amplify-graphql-api'; import { AmplifyGraphqlSchema } from '../../amplify-graphql-schema'; +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); + describe('generated resource access', () => { describe('l1 resources', () => { describe('singleton appsync resources', () => { diff --git a/packages/amplify-graphql-auth-transformer/src/__tests__/auth-operations.test.ts b/packages/amplify-graphql-auth-transformer/src/__tests__/auth-operations.test.ts index 2240c57491..8f5569448a 100644 --- a/packages/amplify-graphql-auth-transformer/src/__tests__/auth-operations.test.ts +++ b/packages/amplify-graphql-auth-transformer/src/__tests__/auth-operations.test.ts @@ -1,12 +1,17 @@ import { ModelTransformer } from '@aws-amplify/graphql-model-transformer'; import { ConflictHandlerType, SyncConfig } from '@aws-amplify/graphql-transformer-core'; import { AppSyncAuthConfiguration } from '@aws-amplify/graphql-transformer-interfaces'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import { SearchableModelTransformer } from '@aws-amplify/graphql-searchable-transformer'; import { testTransform } from '@aws-amplify/graphql-transformer-test-utils'; import { AccessControlMatrix } from '../accesscontrol'; import { AuthTransformer } from '../graphql-auth-transformer'; import { MODEL_OPERATIONS } from '../utils'; +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); + test('invalid granular read operation at the field level', () => { const authConfig: AppSyncAuthConfiguration = { defaultAuthentication: { diff --git a/packages/amplify-graphql-auth-transformer/src/__tests__/searchable-auth.test.ts b/packages/amplify-graphql-auth-transformer/src/__tests__/searchable-auth.test.ts index bdf2ff62fd..40e1cf40c0 100644 --- a/packages/amplify-graphql-auth-transformer/src/__tests__/searchable-auth.test.ts +++ b/packages/amplify-graphql-auth-transformer/src/__tests__/searchable-auth.test.ts @@ -2,9 +2,14 @@ import { ModelTransformer } from '@aws-amplify/graphql-model-transformer'; import { SearchableModelTransformer } from '@aws-amplify/graphql-searchable-transformer'; import { testTransform } from '@aws-amplify/graphql-transformer-test-utils'; import { AppSyncAuthConfiguration } from '@aws-amplify/graphql-transformer-interfaces'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import { DocumentNode, ObjectTypeDefinitionNode, Kind, FieldDefinitionNode, parse } from 'graphql'; import { AuthTransformer, SEARCHABLE_AGGREGATE_TYPES } from '..'; +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); + const getObjectType = (doc: DocumentNode, type: string): ObjectTypeDefinitionNode | undefined => doc.definitions.find((def) => def.kind === Kind.OBJECT_TYPE_DEFINITION && def.name.value === type) as | ObjectTypeDefinitionNode diff --git a/packages/amplify-graphql-maps-to-transformer/src/__tests__/__integ__/with-searchable.test.ts b/packages/amplify-graphql-maps-to-transformer/src/__tests__/__integ__/with-searchable.test.ts index e17912d73a..cb25fb4799 100644 --- a/packages/amplify-graphql-maps-to-transformer/src/__tests__/__integ__/with-searchable.test.ts +++ b/packages/amplify-graphql-maps-to-transformer/src/__tests__/__integ__/with-searchable.test.ts @@ -1,9 +1,14 @@ import { ModelTransformer } from '@aws-amplify/graphql-model-transformer'; import { testTransform } from '@aws-amplify/graphql-transformer-test-utils'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import { MapsToTransformer } from '@aws-amplify/graphql-maps-to-transformer'; import { HasManyTransformer } from '@aws-amplify/graphql-relational-transformer'; import { SearchableModelTransformer } from '@aws-amplify/graphql-searchable-transformer'; +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); + const mappedSearchableSchema = /* GraphQL */ ` type Agenda @model { id: ID! diff --git a/packages/amplify-graphql-searchable-transformer/src/__tests__/amplify-graphql-searchable-transformer.test.ts b/packages/amplify-graphql-searchable-transformer/src/__tests__/amplify-graphql-searchable-transformer.test.ts index 542635296b..ed1011ba8a 100644 --- a/packages/amplify-graphql-searchable-transformer/src/__tests__/amplify-graphql-searchable-transformer.test.ts +++ b/packages/amplify-graphql-searchable-transformer/src/__tests__/amplify-graphql-searchable-transformer.test.ts @@ -1,11 +1,16 @@ import { ConflictHandlerType } from '@aws-amplify/graphql-transformer-core'; import { ModelTransformer } from '@aws-amplify/graphql-model-transformer'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import { Match, Template } from 'aws-cdk-lib/assertions'; import { parse } from 'graphql'; import { testTransform } from '@aws-amplify/graphql-transformer-test-utils'; import { SearchableModelTransformer } from '..'; import { ALLOWABLE_SEARCHABLE_INSTANCE_TYPES } from '../constants'; +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); + test('SearchableModelTransformer validation happy case', () => { const validSchema = ` type Post @model @searchable { diff --git a/packages/amplify-graphql-searchable-transformer/src/cdk/create-searchable-domain.ts b/packages/amplify-graphql-searchable-transformer/src/cdk/create-searchable-domain.ts index 7dd28b9ff6..07de3e0e6f 100644 --- a/packages/amplify-graphql-searchable-transformer/src/cdk/create-searchable-domain.ts +++ b/packages/amplify-graphql-searchable-transformer/src/cdk/create-searchable-domain.ts @@ -2,7 +2,7 @@ import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-int import { EbsDeviceVolumeType } from 'aws-cdk-lib/aws-ec2'; import { CfnDomain, Domain, ElasticsearchVersion } from 'aws-cdk-lib/aws-elasticsearch'; import { IRole, Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam'; -import { CfnParameter, Fn, RemovalPolicy } from 'aws-cdk-lib'; +import { CfnParameter, RemovalPolicy } from 'aws-cdk-lib'; import { Construct } from 'constructs'; import { ResourceConstants } from 'graphql-transformer-common'; import { setResourceName } from '@aws-amplify/graphql-transformer-core'; @@ -10,12 +10,11 @@ import { setResourceName } from '@aws-amplify/graphql-transformer-core'; export const createSearchableDomain = ( stack: Construct, parameterMap: Map, - apiId: string, + context: TransformerContextProvider, nodeToNodeEncryption: boolean, ): Domain => { const { OpenSearchEBSVolumeGB, OpenSearchInstanceType, OpenSearchInstanceCount } = ResourceConstants.PARAMETERS; const { OpenSearchDomainLogicalID } = ResourceConstants.RESOURCES; - const { HasEnvironmentParameter } = ResourceConstants.CONDITIONS; const domain = new Domain(stack, OpenSearchDomainLogicalID, { version: { version: '7.10' } as ElasticsearchVersion, @@ -29,7 +28,7 @@ export const createSearchableDomain = ( zoneAwareness: { enabled: false, }, - domainName: Fn.conditionIf(HasEnvironmentParameter, Fn.ref('AWS::NoValue'), `d${apiId}`).toString(), + domainName: context.resourceHelper.generateDomainName(), removalPolicy: RemovalPolicy.DESTROY, }); diff --git a/packages/amplify-graphql-searchable-transformer/src/graphql-searchable-transformer.ts b/packages/amplify-graphql-searchable-transformer/src/graphql-searchable-transformer.ts index 5e78c987d9..1ab177b8f4 100644 --- a/packages/amplify-graphql-searchable-transformer/src/graphql-searchable-transformer.ts +++ b/packages/amplify-graphql-searchable-transformer/src/graphql-searchable-transformer.ts @@ -306,12 +306,7 @@ export class SearchableModelTransformer extends TransformerPluginBase { const parameterMap = createParametersInStack(context.stackManager.scope); - const domain = createSearchableDomain( - stack, - parameterMap, - context.api.apiId, - context.transformParameters.enableSearchNodeToNodeEncryption, - ); + const domain = createSearchableDomain(stack, parameterMap, context, context.transformParameters.enableSearchNodeToNodeEncryption); const openSearchRole = createSearchableDomainRole(context, stack, parameterMap); diff --git a/packages/amplify-graphql-transformer-core/src/__tests__/transformer-context/resource-helper.test.ts b/packages/amplify-graphql-transformer-core/src/__tests__/transformer-context/resource-helper.test.ts index 5efd5e1877..4554fba15f 100644 --- a/packages/amplify-graphql-transformer-core/src/__tests__/transformer-context/resource-helper.test.ts +++ b/packages/amplify-graphql-transformer-core/src/__tests__/transformer-context/resource-helper.test.ts @@ -1,6 +1,11 @@ import { GraphQLAPIProvider, TransformerResourceHelperProvider, SynthParameters } from '@aws-amplify/graphql-transformer-interfaces'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import { TransformerResourceHelper } from '../../transformer-context/resource-helper'; +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); + const testEnv = 'testenv'; const testApiId = 'testtest123'; @@ -26,6 +31,17 @@ describe('generateTableName', () => { }); }); +describe('generateDomainName', () => { + it('throws if api not initialized', () => { + resourceHelper = getResourceHelper(false); + expect(() => resourceHelper.generateDomainName()).toThrowErrorMatchingInlineSnapshot(`"API not initialized"`); + }); + + it('generate domain name', () => { + expect(resourceHelper.generateDomainName()).toEqual('testproj-testapi-testenv'); + }); +}); + describe('getModelNameMapping', () => { it('returns given model name if no mapping found', () => { expect(resourceHelper.getModelNameMapping('Test')).toEqual('Test'); diff --git a/packages/amplify-graphql-transformer-core/src/transformer-context/resource-helper.ts b/packages/amplify-graphql-transformer-core/src/transformer-context/resource-helper.ts index cce839eb99..e05fb53f75 100644 --- a/packages/amplify-graphql-transformer-core/src/transformer-context/resource-helper.ts +++ b/packages/amplify-graphql-transformer-core/src/transformer-context/resource-helper.ts @@ -6,6 +6,7 @@ import { } from '@aws-amplify/graphql-transformer-interfaces'; import { Token } from 'aws-cdk-lib'; import { ModelResourceIDs } from 'graphql-transformer-common'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import md5 from 'md5'; import { DirectiveNode, FieldNode, ObjectTypeDefinitionNode, ObjectTypeExtensionNode } from 'graphql'; import { ModelFieldMapImpl } from './model-field-map'; @@ -44,6 +45,31 @@ export class TransformerResourceHelper implements TransformerResourceHelperProvi return `${baseName}-${apiId}-${env}`; }; + /** + * Fetching all the parameters from state manager instead of CFN params to perform compile time + * transformations + * (8 + 8 + 2 + 10) = 28 + * @returns Domain name containing maximum of 28 characters all lower case + */ + + generateDomainName = (): string => { + if (!this.api) { + throw new Error('API not initialized'); + } + const env = stateManager.getCurrentEnvName(); + const { projectName } = stateManager.getProjectConfig(); + const apiNames = Object.entries(stateManager.getMeta()?.api || {}) + .filter(([, apiResource]) => (apiResource as any).service === 'AppSync') + .map(([name]) => name); + const shortAPIName = apiNames[0].slice(0, 8).toLowerCase(); + const shortProjectName = projectName.slice(0, 8).toLowerCase(); + if (env) { + return `${shortProjectName}-${shortAPIName}-${env}`; + } else { + return `${shortProjectName}-${shortAPIName}`; + } + }; + public generateIAMRoleName = (name: string): string => { if (!this.api) { throw new Error('API not initialized'); diff --git a/packages/amplify-graphql-transformer-interfaces/API.md b/packages/amplify-graphql-transformer-interfaces/API.md index 6d3d2cee01..87ff8b6281 100644 --- a/packages/amplify-graphql-transformer-interfaces/API.md +++ b/packages/amplify-graphql-transformer-interfaces/API.md @@ -651,6 +651,8 @@ export interface TransformerResourceHelperProvider { // (undocumented) addDirectiveConfigExclusion(object: ObjectTypeDefinitionNode | ObjectTypeExtensionNode, field: FieldNode, directive: DirectiveNode): void; // (undocumented) + generateDomainName(): string; + // (undocumented) generateIAMRoleName(name: string): string; // (undocumented) generateTableName(modelName: string): string; diff --git a/packages/amplify-graphql-transformer-interfaces/src/transformer-context/resource-resource-provider.ts b/packages/amplify-graphql-transformer-interfaces/src/transformer-context/resource-resource-provider.ts index aca98de49a..03a149c85b 100644 --- a/packages/amplify-graphql-transformer-interfaces/src/transformer-context/resource-resource-provider.ts +++ b/packages/amplify-graphql-transformer-interfaces/src/transformer-context/resource-resource-provider.ts @@ -2,6 +2,7 @@ import { DirectiveNode, FieldNode, ObjectTypeDefinitionNode, ObjectTypeExtension export interface TransformerResourceHelperProvider { generateTableName(modelName: string): string; + generateDomainName(): string; generateIAMRoleName(name: string): string; setModelNameMapping(modelName: string, mappedName: string): void; getModelNameMapping(modelName: string): string; diff --git a/packages/amplify-util-mock/src/__e2e__/utils/index.ts b/packages/amplify-util-mock/src/__e2e__/utils/index.ts index a824dba6de..e1ac916168 100644 --- a/packages/amplify-util-mock/src/__e2e__/utils/index.ts +++ b/packages/amplify-util-mock/src/__e2e__/utils/index.ts @@ -1,6 +1,7 @@ import * as path from 'path'; import { AmplifyAppSyncSimulator } from '@aws-amplify/amplify-appsync-simulator'; import * as dynamoEmulator from 'amplify-category-api-dynamodb-simulator'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import * as fs from 'fs-extra'; import { v4 } from 'uuid'; import { DynamoDB } from 'aws-sdk'; @@ -20,8 +21,17 @@ jest.mock('@aws-amplify/amplify-cli-core', () => ({ pathManager: { getAmplifyPackageLibDirPath: jest.fn().mockReturnValue('../amplify-dynamodb-simulator'), }, + stateManager: { + getCurrentEnvName: jest.fn().mockReturnValue('testenv'), + getProjectConfig: jest.fn().mockReturnValue({ projectName: 'testProjectName' }), + getMeta: jest.fn().mockReturnValue({ api: { testApi: { service: 'AppSync' } } }), + }, })); +jest.spyOn(stateManager, 'getCurrentEnvName').mockImplementation(() => 'testenv'); +jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); + const getAuthenticationTypesForAuthConfig = (authConfig?: AppSyncAuthConfiguration): (string | undefined)[] => [authConfig?.defaultAuthentication, ...(authConfig?.additionalAuthenticationProviders ?? [])].map( (authConfigEntry) => authConfigEntry?.authenticationType, diff --git a/packages/graphql-auth-transformer/src/__tests__/SearchableAuthTransformer.test.ts b/packages/graphql-auth-transformer/src/__tests__/SearchableAuthTransformer.test.ts index 5e7d719c90..9df1ccf56e 100644 --- a/packages/graphql-auth-transformer/src/__tests__/SearchableAuthTransformer.test.ts +++ b/packages/graphql-auth-transformer/src/__tests__/SearchableAuthTransformer.test.ts @@ -1,8 +1,13 @@ import { GraphQLTransform } from 'graphql-transformer-core'; import { DynamoDBModelTransformer } from 'graphql-dynamodb-transformer'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import { SearchableModelTransformer } from 'graphql-elasticsearch-transformer'; import { ModelAuthTransformer } from '../ModelAuthTransformer'; +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); + const featureFlags = { getBoolean: jest.fn().mockImplementation((name, defaultValue) => { if (name === 'improvePluralization') { diff --git a/packages/graphql-elasticsearch-transformer/src/__tests__/SearchableModelTransformer.test.ts b/packages/graphql-elasticsearch-transformer/src/__tests__/SearchableModelTransformer.test.ts index 12d2234070..f8c85b428e 100644 --- a/packages/graphql-elasticsearch-transformer/src/__tests__/SearchableModelTransformer.test.ts +++ b/packages/graphql-elasticsearch-transformer/src/__tests__/SearchableModelTransformer.test.ts @@ -1,7 +1,12 @@ import { GraphQLTransform, TRANSFORM_CURRENT_VERSION, ConflictHandlerType } from 'graphql-transformer-core'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import { DynamoDBModelTransformer } from 'graphql-dynamodb-transformer'; import { SearchableModelTransformer } from '../SearchableModelTransformer'; +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); + const featureFlags = { getBoolean: jest.fn().mockImplementation((name, defaultValue) => { if (name === 'improvePluralization') { diff --git a/packages/graphql-transformers-e2e-tests/src/__tests__/SearchableModelTransformer.e2e.test.ts b/packages/graphql-transformers-e2e-tests/src/__tests__/SearchableModelTransformer.e2e.test.ts index 0dee8f14a5..ca02683c84 100644 --- a/packages/graphql-transformers-e2e-tests/src/__tests__/SearchableModelTransformer.e2e.test.ts +++ b/packages/graphql-transformers-e2e-tests/src/__tests__/SearchableModelTransformer.e2e.test.ts @@ -3,6 +3,7 @@ import { GraphQLTransform, ConflictHandlerType } from 'graphql-transformer-core' import { DynamoDBModelTransformer } from 'graphql-dynamodb-transformer'; import { KeyTransformer } from 'graphql-key-transformer'; import { SearchableModelTransformer } from 'graphql-elasticsearch-transformer'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import { ModelAuthTransformer } from 'graphql-auth-transformer'; import { Output } from 'aws-sdk/clients/cloudformation'; import { default as moment } from 'moment'; @@ -17,6 +18,9 @@ import { resolveTestRegion } from '../testSetup'; const region = resolveTestRegion(); // tslint:disable: no-magic-numbers +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); jest.setTimeout(60000 * 60); const cf = new CloudFormationClient(region); diff --git a/packages/graphql-transformers-e2e-tests/src/__tests__/SearchableModelTransformerV2.e2e.test.ts b/packages/graphql-transformers-e2e-tests/src/__tests__/SearchableModelTransformerV2.e2e.test.ts index 1fdd6e9aec..3a61678fe9 100644 --- a/packages/graphql-transformers-e2e-tests/src/__tests__/SearchableModelTransformerV2.e2e.test.ts +++ b/packages/graphql-transformers-e2e-tests/src/__tests__/SearchableModelTransformerV2.e2e.test.ts @@ -1,6 +1,7 @@ import { ResourceConstants } from 'graphql-transformer-common'; import { testTransform } from '@aws-amplify/graphql-transformer-test-utils'; import { SearchableModelTransformer } from '@aws-amplify/graphql-searchable-transformer'; +import { stateManager } from '@aws-amplify/amplify-cli-core'; import { ModelTransformer } from '@aws-amplify/graphql-model-transformer'; import { Output } from 'aws-sdk/clients/cloudformation'; import { default as moment } from 'moment'; @@ -14,6 +15,9 @@ import { resolveTestRegion } from '../testSetup'; const region = resolveTestRegion(); // tslint:disable: no-magic-numbers +jest.spyOn(stateManager, 'getCurrentEnvName').mockReturnValue('testenv'); +jest.spyOn(stateManager, 'getProjectConfig').mockReturnValue({ projectName: 'testProjectName' }); +jest.spyOn(stateManager, 'getMeta').mockReturnValue({ api: { testApi: { service: 'AppSync' } } }); jest.setTimeout(60000 * 60); const cf = new CloudFormationClient(region);