PM-7392 - Get token svc tests passing; WIP more tests to come for new scenarios.
This commit is contained in:
parent
814cf07daa
commit
e05e8395bf
|
@ -10,10 +10,12 @@ import { MessagingService } from "../../platform/abstractions/messaging.service"
|
||||||
import { AbstractStorageService } from "../../platform/abstractions/storage.service";
|
import { AbstractStorageService } from "../../platform/abstractions/storage.service";
|
||||||
import { StorageLocation } from "../../platform/enums";
|
import { StorageLocation } from "../../platform/enums";
|
||||||
import { StorageOptions } from "../../platform/models/domain/storage-options";
|
import { StorageOptions } from "../../platform/models/domain/storage-options";
|
||||||
|
import { SymmetricCryptoKey } from "../../platform/models/domain/symmetric-crypto-key";
|
||||||
|
import { CsprngArray } from "../../types/csprng";
|
||||||
import { UserId } from "../../types/guid";
|
import { UserId } from "../../types/guid";
|
||||||
|
|
||||||
import { ACCOUNT_ACTIVE_ACCOUNT_ID } from "./account.service";
|
import { ACCOUNT_ACTIVE_ACCOUNT_ID } from "./account.service";
|
||||||
import { DecodedAccessToken, TokenService } from "./token.service";
|
import { AccessTokenKey, DecodedAccessToken, TokenService } from "./token.service";
|
||||||
import {
|
import {
|
||||||
ACCESS_TOKEN_DISK,
|
ACCESS_TOKEN_DISK,
|
||||||
ACCESS_TOKEN_MEMORY,
|
ACCESS_TOKEN_MEMORY,
|
||||||
|
@ -27,6 +29,8 @@ import {
|
||||||
SECURITY_STAMP_MEMORY,
|
SECURITY_STAMP_MEMORY,
|
||||||
} from "./token.state";
|
} from "./token.state";
|
||||||
|
|
||||||
|
// TODO: add specific tests for new secure storage scenarios.
|
||||||
|
|
||||||
describe("TokenService", () => {
|
describe("TokenService", () => {
|
||||||
let tokenService: TokenService;
|
let tokenService: TokenService;
|
||||||
let singleUserStateProvider: FakeSingleUserStateProvider;
|
let singleUserStateProvider: FakeSingleUserStateProvider;
|
||||||
|
@ -216,6 +220,14 @@ describe("TokenService", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("Disk storage tests (secure storage supported on platform)", () => {
|
describe("Disk storage tests (secure storage supported on platform)", () => {
|
||||||
|
const accessTokenKey = new SymmetricCryptoKey(
|
||||||
|
new Uint8Array(64) as CsprngArray,
|
||||||
|
) as AccessTokenKey;
|
||||||
|
|
||||||
|
const accessTokenKeyB64 = {
|
||||||
|
keyB64:
|
||||||
|
"lI7lSoejJ1HsrTkRs2Ipm0x+YcZMKpgm7WQGCNjAWmFAyGOKossXwBJvvtbxcYDZ0G0XNY8Gp7DBXZV2tWAO5w==",
|
||||||
|
};
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
const supportsSecureStorage = true;
|
const supportsSecureStorage = true;
|
||||||
tokenService = createTokenService(supportsSecureStorage);
|
tokenService = createTokenService(supportsSecureStorage);
|
||||||
|
@ -229,7 +241,7 @@ describe("TokenService", () => {
|
||||||
.getFake(userIdFromAccessToken, ACCESS_TOKEN_MEMORY)
|
.getFake(userIdFromAccessToken, ACCESS_TOKEN_MEMORY)
|
||||||
.stateSubject.next([userIdFromAccessToken, accessTokenJwt]);
|
.stateSubject.next([userIdFromAccessToken, accessTokenJwt]);
|
||||||
|
|
||||||
keyGenerationService.createKey.mockResolvedValue("accessTokenKey" as any);
|
keyGenerationService.createKey.mockResolvedValue(accessTokenKey);
|
||||||
|
|
||||||
const mockEncryptedAccessToken = "encryptedAccessToken";
|
const mockEncryptedAccessToken = "encryptedAccessToken";
|
||||||
|
|
||||||
|
@ -237,6 +249,11 @@ describe("TokenService", () => {
|
||||||
encryptedString: mockEncryptedAccessToken,
|
encryptedString: mockEncryptedAccessToken,
|
||||||
} as any);
|
} as any);
|
||||||
|
|
||||||
|
// First call resolves to null to simulate no key in secure storage
|
||||||
|
// then resolves to the key to simulate the key being set in secure storage
|
||||||
|
// and retrieved successfully to ensure it was set.
|
||||||
|
secureStorageService.get.mockResolvedValueOnce(null).mockResolvedValue(accessTokenKeyB64);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
await tokenService.setAccessToken(
|
await tokenService.setAccessToken(
|
||||||
accessTokenJwt,
|
accessTokenJwt,
|
||||||
|
@ -248,7 +265,7 @@ describe("TokenService", () => {
|
||||||
// assert that the AccessTokenKey was set in secure storage
|
// assert that the AccessTokenKey was set in secure storage
|
||||||
expect(secureStorageService.save).toHaveBeenCalledWith(
|
expect(secureStorageService.save).toHaveBeenCalledWith(
|
||||||
accessTokenKeySecureStorageKey,
|
accessTokenKeySecureStorageKey,
|
||||||
"accessTokenKey",
|
accessTokenKey,
|
||||||
secureStorageOptions,
|
secureStorageOptions,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue