Skip to content

Commit

Permalink
chore(auth): additional granular unit tests for identityIdStore and t…
Browse files Browse the repository at this point in the history
…okenOrchestrator (#12527)
  • Loading branch information
Samaritan1011001 authored Nov 10, 2023
1 parent 86ab927 commit 3cfd338
Show file tree
Hide file tree
Showing 3 changed files with 192 additions and 10 deletions.
96 changes: 96 additions & 0 deletions packages/auth/__tests__/providers/cognito/identityIdStore.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

import { DefaultIdentityIdStore } from '../../../src/providers/cognito';
import { Identity, ResourcesConfig } from '@aws-amplify/core';

const mockKeyValueStorage = {
setItem: jest.fn(),
getItem: jest.fn(),
removeItem: jest.fn(),
clear: jest.fn(),
};

const validAuthConfig: ResourcesConfig = {
Auth: {
Cognito: {
userPoolId: 'us-east-1_test-id',
identityPoolId: 'us-east-1:test-id',
userPoolClientId: 'test-id',
allowGuestAccess: true,
},
},
};
const validAuthKey = {
identityId: `com.amplify.Cognito.${
validAuthConfig.Auth!.Cognito!.identityPoolId
}.identityId`,
};
const validGuestIdentityId: Identity = { type: 'guest', id: 'guest-id' };
const validPrimaryIdentityId: Identity = { type: 'primary', id: 'primary-id' };

const noIdentityPoolIdAuthConfig: ResourcesConfig = {
Auth: {
Cognito: {
userPoolId: 'us-east-1_test-id',
userPoolClientId: 'test-id',
},
},
};

describe('DefaultIdentityIdStore', () => {
const defaultIdStore = new DefaultIdentityIdStore(mockKeyValueStorage);
describe('Happy Path Cases:', () => {
beforeAll(() => {
defaultIdStore.setAuthConfig(validAuthConfig.Auth!);
});
it('Should set the Auth config required to form the storage keys', async () => {
expect(defaultIdStore._authKeys).toEqual(validAuthKey);
});
it('Should store guest identityId in keyValueStorage', async () => {
defaultIdStore.storeIdentityId(validGuestIdentityId);
expect(mockKeyValueStorage.setItem).toBeCalledWith(
validAuthKey.identityId,
validGuestIdentityId.id
);
expect(defaultIdStore._primaryIdentityId).toBeUndefined();
});
it('Should load guest identityId from keyValueStorage', async () => {
mockKeyValueStorage.getItem.mockReturnValue(validGuestIdentityId.id);

expect(await defaultIdStore.loadIdentityId()).toEqual(
validGuestIdentityId
);
});
it('Should store primary identityId in keyValueStorage', async () => {
defaultIdStore.storeIdentityId(validPrimaryIdentityId);
expect(mockKeyValueStorage.removeItem).toBeCalledWith(
validAuthKey.identityId
);
expect(defaultIdStore._primaryIdentityId).toEqual(
validPrimaryIdentityId.id
);
});
it('Should load primary identityId from keyValueStorage', async () => {
expect(await defaultIdStore.loadIdentityId()).toEqual(
validPrimaryIdentityId
);
});
it('Should clear the cached identityId', async () => {
defaultIdStore.clearIdentityId();
expect(mockKeyValueStorage.removeItem).toBeCalledWith(
validAuthKey.identityId
);
expect(defaultIdStore._primaryIdentityId).toBeUndefined();
});
});
describe('Error Path Cases:', () => {
it('Should assert when identityPoolId is not present while setting the auth config', async () => {
try {
defaultIdStore.setAuthConfig(noIdentityPoolIdAuthConfig.Auth!);
} catch (e) {
expect(e.name).toEqual('InvalidIdentityPoolIdException');
}
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -148,25 +148,34 @@ export const authAPITestParams = {
// Test values
ValidAuthTokens: {
idToken: decodeJWT(
'eyJraWQiOiIyd1FTbElUQ2N0bWVMdTYwY3hzRFJPOW9DXC93eDZDdVMzT2lQbHRJRldYVT0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIzOGEwODU1Ny1hMTFkLTQzYjEtYjc5Yi03ZTNjNDE2YWUzYzciLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tXC91cy1lYXN0LTJfUTRpaTdlZFRJIiwiY29nbml0bzp1c2VybmFtZSI6InRlc3QyIiwib3JpZ2luX2p0aSI6ImRiM2QxOGE1LTViZTAtNDVmOS05Y2RjLTI3OWQyMmJmNzgxZCIsImF1ZCI6IjZ1bG1sYTc0Y245cDlhdmEwZmcxYnV1cjhxIiwiZXZlbnRfaWQiOiJhZjRjMmM5NC04ZTY0LTRkYWYtYjc5ZS02NTE0NTEyMjE3OTAiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY5MDkzMjM0MCwiZXhwIjoxNjkwOTM1OTQwLCJpYXQiOjE2OTA5MzIzNDAsImp0aSI6ImVhM2JmNmNlLWEyZWUtNGJiMC05MjdkLWNjMzRjYzRhMWVjMiIsImVtYWlsIjoiYW16bm1hbm9qQGdtYWlsLmNvbSJ9.i71wkSBPZt8BlBFMZPILJ6RsfDaJx0xqriD9y6ly3LnNB2vNAIOZqPLcCKEi8u0obyoFIK_EY7jKVRva5wbDDcHGt5YrnjT3SsWc1FGVUhrPW6IzEwbfYkUsbVGYjfO1hqTMW7q3FHvJ4yFjLDIUHQe-1_NogYeuhjrNxEupOPmE5-52N4dRriZ0DlHD4fe7gqL8B6AJXr5np1XaxZySU4KpdePwIp1Nb2fkolMEGHvOANHqWdBe5I0vRhAh0MDJ6IxvEr65tnaJNgVQuQaZFR4kQlpjemvB7kaVQ-SpH-tV_zXzqpwr_OEH6dgGMcxIsFrBFC8AGQnGXlSsS-5ThQ'
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIHRoZSBzZWNvbmQiLCJpYXQiOjE1MTYyMzkwMjIsImlzcyI6Imh0dHBzOi8vdGVzdC5jb20iLCJleHAiOjE3MTAyOTMxMzB9.kpvsHfKH4JvCecECmb26Pl6HaedVX7PNiiF_8AlAbYc'
),
accessToken: decodeJWT(
'eyJraWQiOiJsUjZHYWlsakJyNVl6Z2tSakxoenNLR2IwUkFqd2FmbVg3RTlJOFRRdUE0PSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIzOGEwODU1Ny1hMTFkLTQzYjEtYjc5Yi03ZTNjNDE2YWUzYzciLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0yLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMl9RNGlpN2VkVEkiLCJjbGllbnRfaWQiOiI2dWxtbGE3NGNuOXA5YXZhMGZnMWJ1dXI4cSIsIm9yaWdpbl9qdGkiOiJkYjNkMThhNS01YmUwLTQ1ZjktOWNkYy0yNzlkMjJiZjc4MWQiLCJldmVudF9pZCI6ImFmNGMyYzk0LThlNjQtNGRhZi1iNzllLTY1MTQ1MTIyMTc5MCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE2OTA5MzIzNDAsImV4cCI6MTY5MDkzNTk0MCwiaWF0IjoxNjkwOTMyMzQwLCJqdGkiOiIzMjY2NWI4Zi04ZWFlLTQ5NzgtYjA1Ny00ODc1ZmFhNDBhMzUiLCJ1c2VybmFtZSI6InRlc3QyIn0.EHXtiMNrZQ0WzxWM8N15wXGVxLyxXkUaOzEf7Nj4yETpFsOQH1thufbxfu0e2Td0flDjiVTwTyeRD0Hue3_F4tC2o9_6kFlO9TBnQJnMI4mrSsbaTSTSgHJ8HS9YP7nDbcZ1QXFdWHlzPEoRSoJ9y_0oji8Bl3ZsyXIVCzSUfil_t0ZKhtprQnUakPDeqCunBT1oh-pqUsYC1g6lwS7vfucivJpuyxfnpcOEfQYY6VMlZxpDurEniOy7vgy6e8ElYpIdUzpBaRB_CvhDj6tYlnLRVTBOnKcRdckZMd69SJ8zTKtmxAsYbxF6DWZQTK6e82Rft1Uc5rLxKAD6VK92xA'
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIHRoZSBzZWNvbmQiLCJpYXQiOjE1MTYyMzkwMjIsImlzcyI6Imh0dHBzOi8vdGVzdC5jb20iLCJleHAiOjE3MTAyOTMxMzB9.kpvsHfKH4JvCecECmb26Pl6HaedVX7PNiiF_8AlAbYc'
),
accessTokenExpAt: Date.UTC(2023, 8, 24, 18, 55),
clockDrift: undefined,
metadata: undefined,
},
ExpiredAuthTokens: {
idToken: decodeJWT(
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTAyOTMxMzB9.1o9dQV9035dCO0nKDgZ-MwFf22Ptmysymt2ENyR5Mko'
),
accessToken: decodeJWT(
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTAyOTMxMzB9.1o9dQV9035dCO0nKDgZ-MwFf22Ptmysymt2ENyR5Mko'
),
accessTokenExpAt: Date.UTC(2023, 8, 24, 18, 55),

clockDrift: undefined,
metadata: undefined,
},
NewValidAuthTokens: {
idToken: decodeJWT(
'yJraWQiOiIyd1FTbElUQ2N0bWVMdTYwY3hzRFJPOW9DXC93eDZDdVMzT2lQbHRJRldYVT0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIzOGEwODU1Ny1hMTFkLTQzYjEtYjc5Yi03ZTNjNDE2YWUzYzciLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tXC91cy1lYXN0LTJfUTRpaTdlZFRJIiwiY29nbml0bzp1c2VybmFtZSI6InRlc3QyIiwib3JpZ2luX2p0aSI6ImRiM2QxOGE1LTViZTAtNDVmOS05Y2RjLTI3OWQyMmJmNzgxZCIsImF1ZCI6IjZ1bG1sYTc0Y245cDlhdmEwZmcxYnV1cjhxIiwiZXZlbnRfaWQiOiJhZjRjMmM5NC04ZTY0LTRkYWYtYjc5ZS02NTE0NTEyMjE3OTAiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY5MDkzMjM0MCwiZXhwIjoxNjkwOTM1OTQwLCJpYXQiOjE2OTA5MzIzNDAsImp0aSI6ImVhM2JmNmNlLWEyZWUtNGJiMC05MjdkLWNjMzRjYzRhMWVjMiIsImVtYWlsIjoiYW16bm1hbm9qQGdtYWlsLmNvbSJ9.i71wkSBPZt8BlBFMZPILJ6RsfDaJx0xqriD9y6ly3LnNB2vNAIOZqPLcCKEi8u0obyoFIK_EY7jKVRva5wbDDcHGt5YrnjT3SsWc1FGVUhrPW6IzEwbfYkUsbVGYjfO1hqTMW7q3FHvJ4yFjLDIUHQe-1_NogYeuhjrNxEupOPmE5-52N4dRriZ0DlHD4fe7gqL8B6AJXr5np1XaxZySU4KpdePwIp1Nb2fkolMEGHvOANHqWdBe5I0vRhAh0MDJ6IxvEr65tnaJNgVQuQaZFR4kQlpjemvB7kaVQ-SpH-tV_zXzqpwr_OEH6dgGMcxIsFrBFC8AGQnGXlSsS-5ThQ'
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIHRoZSBzZWNvbmQiLCJpYXQiOjE1MTYyMzkwMjIsImlzcyI6Imh0dHBzOi8vdGVzdC5jb20ifQ.5eGzqDYCAYmagLpVDc1kqRT1da1wPu0_1FAg6ZNAuj8'
),
accessToken: decodeJWT(
'eyJraWQiOiJsUjZHYWlsakJyNVl6Z2tSakxoenNLR2IwUkFqd2FmbVg3RTlJOFRRdUE0PSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIzOGEwODU1Ny1hMTFkLTQzYjEtYjc5Yi03ZTNjNDE2YWUzYzciLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0yLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMl9RNGlpN2VkVEkiLCJjbGllbnRfaWQiOiI2dWxtbGE3NGNuOXA5YXZhMGZnMWJ1dXI4cSIsIm9yaWdpbl9qdGkiOiJkYjNkMThhNS01YmUwLTQ1ZjktOWNkYy0yNzlkMjJiZjc4MWQiLCJldmVudF9pZCI6ImFmNGMyYzk0LThlNjQtNGRhZi1iNzllLTY1MTQ1MTIyMTc5MCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE2OTA5MzIzNDAsImV4cCI6MTY5MDkzNTk0MCwiaWF0IjoxNjkwOTMyMzQwLCJqdGkiOiIzMjY2NWI4Zi04ZWFlLTQ5NzgtYjA1Ny00ODc1ZmFhNDBhMzUiLCJ1c2VybmFtZSI6InRlc3QyIn0.EHXtiMNrZQ0WzxWM8N15wXGVxLyxXkUaOzEf7Nj4yETpFsOQH1thufbxfu0e2Td0flDjiVTwTyeRD0Hue3_F4tC2o9_6kFlO9TBnQJnMI4mrSsbaTSTSgHJ8HS9YP7nDbcZ1QXFdWHlzPEoRSoJ9y_0oji8Bl3ZsyXIVCzSUfil_t0ZKhtprQnUakPDeqCunBT1oh-pqUsYC1g6lwS7vfucivJpuyxfnpcOEfQYY6VMlZxpDurEniOy7vgy6e8ElYpIdUzpBaRB_CvhDj6tYlnLRVTBOnKcRdckZMd69SJ8zTKtmxAsYbxF6DWZQTK6e82Rft1Uc5rLxKAD6VK92xA'
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIHRoZSBzZWNvbmQiLCJpYXQiOjE1MTYyMzkwMjIsImlzcyI6Imh0dHBzOi8vdGVzdC5jb20ifQ.5eGzqDYCAYmagLpVDc1kqRT1da1wPu0_1FAg6ZNAuj8'
),
accessTokenExpAt: Date.UTC(2023, 8, 24, 18, 55),

clockDrift: undefined,
metadata: undefined,
},
Expand All @@ -175,15 +184,15 @@ export const authAPITestParams = {
withValidAuthToken: {
IdentityId: 'identity-id-test',
Logins: {
'cognito-idp.us-east-2.amazonaws.com/us-east-2_Q4ii7edTI':
'eyJraWQiOiIyd1FTbElUQ2N0bWVMdTYwY3hzRFJPOW9DXC93eDZDdVMzT2lQbHRJRldYVT0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIzOGEwODU1Ny1hMTFkLTQzYjEtYjc5Yi03ZTNjNDE2YWUzYzciLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tXC91cy1lYXN0LTJfUTRpaTdlZFRJIiwiY29nbml0bzp1c2VybmFtZSI6InRlc3QyIiwib3JpZ2luX2p0aSI6ImRiM2QxOGE1LTViZTAtNDVmOS05Y2RjLTI3OWQyMmJmNzgxZCIsImF1ZCI6IjZ1bG1sYTc0Y245cDlhdmEwZmcxYnV1cjhxIiwiZXZlbnRfaWQiOiJhZjRjMmM5NC04ZTY0LTRkYWYtYjc5ZS02NTE0NTEyMjE3OTAiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY5MDkzMjM0MCwiZXhwIjoxNjkwOTM1OTQwLCJpYXQiOjE2OTA5MzIzNDAsImp0aSI6ImVhM2JmNmNlLWEyZWUtNGJiMC05MjdkLWNjMzRjYzRhMWVjMiIsImVtYWlsIjoiYW16bm1hbm9qQGdtYWlsLmNvbSJ9.i71wkSBPZt8BlBFMZPILJ6RsfDaJx0xqriD9y6ly3LnNB2vNAIOZqPLcCKEi8u0obyoFIK_EY7jKVRva5wbDDcHGt5YrnjT3SsWc1FGVUhrPW6IzEwbfYkUsbVGYjfO1hqTMW7q3FHvJ4yFjLDIUHQe-1_NogYeuhjrNxEupOPmE5-52N4dRriZ0DlHD4fe7gqL8B6AJXr5np1XaxZySU4KpdePwIp1Nb2fkolMEGHvOANHqWdBe5I0vRhAh0MDJ6IxvEr65tnaJNgVQuQaZFR4kQlpjemvB7kaVQ-SpH-tV_zXzqpwr_OEH6dgGMcxIsFrBFC8AGQnGXlSsS-5ThQ',
'test.com':
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIHRoZSBzZWNvbmQiLCJpYXQiOjE1MTYyMzkwMjIsImlzcyI6Imh0dHBzOi8vdGVzdC5jb20iLCJleHAiOjE3MTAyOTMxMzB9.kpvsHfKH4JvCecECmb26Pl6HaedVX7PNiiF_8AlAbYc',
},
},
withNewValidAuthToken: {
IdentityId: 'identity-id-test',
Logins: {
'cognito-idp.us-east-2.amazonaws.com/us-east-2_Q4ii7edTI':
'yJraWQiOiIyd1FTbElUQ2N0bWVMdTYwY3hzRFJPOW9DXC93eDZDdVMzT2lQbHRJRldYVT0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIzOGEwODU1Ny1hMTFkLTQzYjEtYjc5Yi03ZTNjNDE2YWUzYzciLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tXC91cy1lYXN0LTJfUTRpaTdlZFRJIiwiY29nbml0bzp1c2VybmFtZSI6InRlc3QyIiwib3JpZ2luX2p0aSI6ImRiM2QxOGE1LTViZTAtNDVmOS05Y2RjLTI3OWQyMmJmNzgxZCIsImF1ZCI6IjZ1bG1sYTc0Y245cDlhdmEwZmcxYnV1cjhxIiwiZXZlbnRfaWQiOiJhZjRjMmM5NC04ZTY0LTRkYWYtYjc5ZS02NTE0NTEyMjE3OTAiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY5MDkzMjM0MCwiZXhwIjoxNjkwOTM1OTQwLCJpYXQiOjE2OTA5MzIzNDAsImp0aSI6ImVhM2JmNmNlLWEyZWUtNGJiMC05MjdkLWNjMzRjYzRhMWVjMiIsImVtYWlsIjoiYW16bm1hbm9qQGdtYWlsLmNvbSJ9.i71wkSBPZt8BlBFMZPILJ6RsfDaJx0xqriD9y6ly3LnNB2vNAIOZqPLcCKEi8u0obyoFIK_EY7jKVRva5wbDDcHGt5YrnjT3SsWc1FGVUhrPW6IzEwbfYkUsbVGYjfO1hqTMW7q3FHvJ4yFjLDIUHQe-1_NogYeuhjrNxEupOPmE5-52N4dRriZ0DlHD4fe7gqL8B6AJXr5np1XaxZySU4KpdePwIp1Nb2fkolMEGHvOANHqWdBe5I0vRhAh0MDJ6IxvEr65tnaJNgVQuQaZFR4kQlpjemvB7kaVQ-SpH-tV_zXzqpwr_OEH6dgGMcxIsFrBFC8AGQnGXlSsS-5ThQ',
'test.com':
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIHRoZSBzZWNvbmQiLCJpYXQiOjE1MTYyMzkwMjIsImlzcyI6Imh0dHBzOi8vdGVzdC5jb20iLCJleHAiOjE3MTAyOTMxMzB9.kpvsHfKH4JvCecECmb26Pl6HaedVX7PNiiF_8AlAbYc',
},
},
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

import { TokenOrchestrator } from '../../../src/providers/cognito';
import { Hub, ResourcesConfig } from '@aws-amplify/core';
import { authAPITestParams } from './testUtils/authApiTestParams';
import { AMPLIFY_SYMBOL } from '@aws-amplify/core/internals/utils';
jest.mock('@aws-amplify/core', () => ({
...jest.requireActual('@aws-amplify/core'),
Hub: {
dispatch: jest.fn(),
listen: jest.fn(),
},
}));

const mockAuthTokenStore = {
getLastAuthUser: jest.fn(),
loadTokens: jest.fn(),
storeTokens: jest.fn(),
clearTokens: jest.fn(),
setKeyValueStorage: jest.fn(),
getDeviceMetadata: jest.fn(),
clearDeviceMetadata: jest.fn(),
};
const mockTokenRefresher = jest.fn();
const validAuthConfig: ResourcesConfig = {
Auth: {
Cognito: {
userPoolId: 'us-east-1_test-id',
identityPoolId: 'us-east-1:test-id',
userPoolClientId: 'test-id',
allowGuestAccess: true,
},
},
};

describe('TokenOrchestrator', () => {
const tokenOrchestrator = new TokenOrchestrator();
describe('Happy Path Cases:', () => {
beforeAll(() => {
tokenOrchestrator.setAuthConfig(validAuthConfig.Auth!);
tokenOrchestrator.setAuthTokenStore(mockAuthTokenStore);
tokenOrchestrator.setTokenRefresher(mockTokenRefresher);
mockAuthTokenStore.getLastAuthUser.mockResolvedValue('test-username');
});
it('Should get tokens', async () => {
mockAuthTokenStore.loadTokens.mockResolvedValue(
authAPITestParams.ValidAuthTokens
);

const tokensRes = await tokenOrchestrator.getTokens();
expect(tokensRes).toEqual({
accessToken: authAPITestParams.ValidAuthTokens.accessToken,
idToken: authAPITestParams.ValidAuthTokens.idToken,
signInDetails: undefined,
});
});
it('Should call tokenRefresher and return valid tokens', async () => {
mockAuthTokenStore.loadTokens.mockResolvedValue(
authAPITestParams.ExpiredAuthTokens
);
mockTokenRefresher.mockResolvedValue(authAPITestParams.ValidAuthTokens);
const tokensRes = await tokenOrchestrator.getTokens();
expect(tokensRes).toEqual({
accessToken: authAPITestParams.ValidAuthTokens.accessToken,
idToken: authAPITestParams.ValidAuthTokens.idToken,
signInDetails: undefined,
});
expect(Hub.dispatch).toHaveBeenCalledWith(
'auth',
{ event: 'tokenRefresh' },
'Auth',
AMPLIFY_SYMBOL
);
});
});
});

0 comments on commit 3cfd338

Please sign in to comment.