Skip to content

Commit e6c5f60

Browse files
fix(auth): Added missing UserContextData to Cognito User Pool operation SignUp (#13477)
1 parent 44696fb commit e6c5f60

File tree

2 files changed

+43
-3
lines changed

2 files changed

+43
-3
lines changed

packages/auth/__tests__/providers/cognito/signUp.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,38 @@ describe('signUp', () => {
172172
userId,
173173
});
174174
});
175+
176+
it('should send UserContextData', async () => {
177+
(window as any).AmazonCognitoAdvancedSecurityData = {
178+
getData() {
179+
return 'abcd';
180+
},
181+
};
182+
await signUp({
183+
username: user1.username,
184+
password: user1.password,
185+
options: {
186+
userAttributes: { email: user1.email },
187+
},
188+
});
189+
expect(mockSignUp).toHaveBeenCalledWith(
190+
{
191+
region: 'us-west-2',
192+
userAgentValue: expect.any(String),
193+
},
194+
{
195+
ClientMetadata: undefined,
196+
Password: user1.password,
197+
UserAttributes: [{ Name: 'email', Value: user1.email }],
198+
Username: user1.username,
199+
ValidationData: undefined,
200+
ClientId: '111111-aaaaa-42d8-891d-ee81a1549398',
201+
UserContextData: { EncodedData: 'abcd' },
202+
},
203+
);
204+
expect(mockSignUp).toHaveBeenCalledTimes(1);
205+
(window as any).AmazonCognitoAdvancedSecurityData = undefined;
206+
});
175207
});
176208

177209
describe('Error Path Cases:', () => {

packages/auth/src/providers/cognito/apis/signUp.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
setAutoSignInStarted,
2626
setUsernameUsedForAutoSignIn,
2727
} from '../utils/signUpHelpers';
28+
import { getUserContextData } from '../utils/userContextData';
2829
import { getAuthUserAgentValue } from '../../../utils';
2930

3031
import { setAutoSignIn } from './autoSignIn';
@@ -62,7 +63,6 @@ export async function signUp(input: SignUpInput): Promise<SignUpOutput> {
6263
username,
6364
options: signInServiceOptions,
6465
};
65-
6666
// if the authFlowType is 'CUSTOM_WITHOUT_SRP' then we don't include the password
6767
if (signInServiceOptions?.authFlowType !== 'CUSTOM_WITHOUT_SRP') {
6868
signInInput.password = password;
@@ -71,9 +71,12 @@ export async function signUp(input: SignUpInput): Promise<SignUpOutput> {
7171
setUsernameUsedForAutoSignIn(username);
7272
setAutoSignInStarted(true);
7373
}
74+
75+
const { userPoolId, userPoolClientId } = authConfig;
76+
7477
const clientOutput = await signUpClient(
7578
{
76-
region: getRegion(authConfig.userPoolId),
79+
region: getRegion(userPoolId),
7780
userAgentValue: getAuthUserAgentValue(AuthAction.SignUp),
7881
},
7982
{
@@ -83,7 +86,12 @@ export async function signUp(input: SignUpInput): Promise<SignUpOutput> {
8386
options?.userAttributes && toAttributeType(options?.userAttributes),
8487
ClientMetadata: clientMetadata,
8588
ValidationData: validationData && toAttributeType(validationData),
86-
ClientId: authConfig.userPoolClientId,
89+
ClientId: userPoolClientId,
90+
UserContextData: getUserContextData({
91+
username,
92+
userPoolId,
93+
userPoolClientId,
94+
}),
8795
},
8896
);
8997
const { UserSub, CodeDeliveryDetails } = clientOutput;

0 commit comments

Comments
 (0)