diff --git a/packages/auth/__tests__/providers/cognito/signUp.test.ts b/packages/auth/__tests__/providers/cognito/signUp.test.ts index 6777fc2894b..87e0dda27c6 100644 --- a/packages/auth/__tests__/providers/cognito/signUp.test.ts +++ b/packages/auth/__tests__/providers/cognito/signUp.test.ts @@ -172,6 +172,38 @@ describe('signUp', () => { userId, }); }); + + it('should send UserContextData', async () => { + (window as any).AmazonCognitoAdvancedSecurityData = { + getData() { + return 'abcd'; + }, + }; + await signUp({ + username: user1.username, + password: user1.password, + options: { + userAttributes: { email: user1.email }, + }, + }); + expect(mockSignUp).toHaveBeenCalledWith( + { + region: 'us-west-2', + userAgentValue: expect.any(String), + }, + { + ClientMetadata: undefined, + Password: user1.password, + UserAttributes: [{ Name: 'email', Value: user1.email }], + Username: user1.username, + ValidationData: undefined, + ClientId: '111111-aaaaa-42d8-891d-ee81a1549398', + UserContextData: { EncodedData: 'abcd' }, + }, + ); + expect(mockSignUp).toHaveBeenCalledTimes(1); + (window as any).AmazonCognitoAdvancedSecurityData = undefined; + }); }); describe('Error Path Cases:', () => { diff --git a/packages/auth/src/providers/cognito/apis/signUp.ts b/packages/auth/src/providers/cognito/apis/signUp.ts index 69aca1b528a..ef9aef32fa2 100644 --- a/packages/auth/src/providers/cognito/apis/signUp.ts +++ b/packages/auth/src/providers/cognito/apis/signUp.ts @@ -25,6 +25,7 @@ import { setAutoSignInStarted, setUsernameUsedForAutoSignIn, } from '../utils/signUpHelpers'; +import { getUserContextData } from '../utils/userContextData'; import { getAuthUserAgentValue } from '../../../utils'; import { setAutoSignIn } from './autoSignIn'; @@ -62,7 +63,6 @@ export async function signUp(input: SignUpInput): Promise { username, options: signInServiceOptions, }; - // if the authFlowType is 'CUSTOM_WITHOUT_SRP' then we don't include the password if (signInServiceOptions?.authFlowType !== 'CUSTOM_WITHOUT_SRP') { signInInput.password = password; @@ -71,9 +71,12 @@ export async function signUp(input: SignUpInput): Promise { setUsernameUsedForAutoSignIn(username); setAutoSignInStarted(true); } + + const { userPoolId, userPoolClientId } = authConfig; + const clientOutput = await signUpClient( { - region: getRegion(authConfig.userPoolId), + region: getRegion(userPoolId), userAgentValue: getAuthUserAgentValue(AuthAction.SignUp), }, { @@ -83,7 +86,12 @@ export async function signUp(input: SignUpInput): Promise { options?.userAttributes && toAttributeType(options?.userAttributes), ClientMetadata: clientMetadata, ValidationData: validationData && toAttributeType(validationData), - ClientId: authConfig.userPoolClientId, + ClientId: userPoolClientId, + UserContextData: getUserContextData({ + username, + userPoolId, + userPoolClientId, + }), }, ); const { UserSub, CodeDeliveryDetails } = clientOutput;