feat: init
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
import { TestBed, waitForAsync } from '@angular/core/testing';
|
||||
import { TestBed } from '@/testing';
|
||||
import { of, throwError } from 'rxjs';
|
||||
import { mockProvider } from '../../../test/auto-mock';
|
||||
import { vi } from 'vitest';
|
||||
import { AuthStateService } from '../../auth-state/auth-state.service';
|
||||
import { LoggerService } from '../../logging/logger.service';
|
||||
import { StoragePersistenceService } from '../../storage/storage-persistence.service';
|
||||
import { JwtKey, JwtKeys } from '../../validation/jwtkeys';
|
||||
import { mockProvider } from '../../testing/mock';
|
||||
import type { JwtKey, JwtKeys } from '../../validation/jwtkeys';
|
||||
import { ValidationResult } from '../../validation/validation-result';
|
||||
import { AuthResult, CallbackContext } from '../callback-context';
|
||||
import type { AuthResult, CallbackContext } from '../callback-context';
|
||||
import { FlowsDataService } from '../flows-data.service';
|
||||
import { ResetAuthDataService } from '../reset-auth-data.service';
|
||||
import { SigninKeyDataService } from '../signin-key-data.service';
|
||||
@@ -46,9 +47,6 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
mockProvider(ResetAuthDataService),
|
||||
],
|
||||
});
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
service = TestBed.inject(HistoryJwtKeysCallbackHandlerService);
|
||||
storagePersistenceService = TestBed.inject(StoragePersistenceService);
|
||||
resetAuthDataService = TestBed.inject(ResetAuthDataService);
|
||||
@@ -62,8 +60,8 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
});
|
||||
|
||||
describe('callbackHistoryAndResetJwtKeys', () => {
|
||||
it('writes authResult into the storage', waitForAsync(() => {
|
||||
const storagePersistenceServiceSpy = spyOn(
|
||||
it('writes authResult into the storage', async () => {
|
||||
const storagePersistenceServiceSpy = vi.spyOn(
|
||||
storagePersistenceService,
|
||||
'write'
|
||||
);
|
||||
@@ -75,86 +73,86 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
const callbackContext = {
|
||||
authResult: DUMMY_AUTH_RESULT,
|
||||
} as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: true,
|
||||
},
|
||||
];
|
||||
|
||||
spyOn(signInKeyDataService, 'getSigningKeys').and.returnValue(
|
||||
vi.spyOn(signInKeyDataService, 'getSigningKeys').mockReturnValue(
|
||||
of({ keys: [] } as JwtKeys)
|
||||
);
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
callbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe(() => {
|
||||
expect(storagePersistenceServiceSpy.calls.allArgs()).toEqual([
|
||||
['authnResult', DUMMY_AUTH_RESULT, allconfigs[0]],
|
||||
['jwtKeys', { keys: [] }, allconfigs[0]],
|
||||
expect(storagePersistenceServiceSpy).toBeCalledWith([
|
||||
['authnResult', DUMMY_AUTH_RESULT, allConfigs[0]],
|
||||
['jwtKeys', { keys: [] }, allConfigs[0]],
|
||||
]);
|
||||
// write authnResult & jwtKeys
|
||||
expect(storagePersistenceServiceSpy).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('writes refresh_token into the storage without reuse (refresh token rotation)', waitForAsync(() => {
|
||||
it('writes refresh_token into the storage without reuse (refresh token rotation)', async () => {
|
||||
const DUMMY_AUTH_RESULT = {
|
||||
refresh_token: 'dummy_refresh_token',
|
||||
id_token: 'some-id-token',
|
||||
};
|
||||
|
||||
const storagePersistenceServiceSpy = spyOn(
|
||||
const storagePersistenceServiceSpy = vi.spyOn(
|
||||
storagePersistenceService,
|
||||
'write'
|
||||
);
|
||||
const callbackContext = {
|
||||
authResult: DUMMY_AUTH_RESULT,
|
||||
} as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: true,
|
||||
},
|
||||
];
|
||||
|
||||
spyOn(signInKeyDataService, 'getSigningKeys').and.returnValue(
|
||||
vi.spyOn(signInKeyDataService, 'getSigningKeys').mockReturnValue(
|
||||
of({ keys: [] } as JwtKeys)
|
||||
);
|
||||
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
callbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe(() => {
|
||||
expect(storagePersistenceServiceSpy.calls.allArgs()).toEqual([
|
||||
['authnResult', DUMMY_AUTH_RESULT, allconfigs[0]],
|
||||
['jwtKeys', { keys: [] }, allconfigs[0]],
|
||||
expect(storagePersistenceServiceSpy).toBeCalledWith([
|
||||
['authnResult', DUMMY_AUTH_RESULT, allConfigs[0]],
|
||||
['jwtKeys', { keys: [] }, allConfigs[0]],
|
||||
]);
|
||||
// write authnResult & refresh_token & jwtKeys
|
||||
expect(storagePersistenceServiceSpy).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('writes refresh_token into the storage with reuse (without refresh token rotation)', waitForAsync(() => {
|
||||
it('writes refresh_token into the storage with reuse (without refresh token rotation)', async () => {
|
||||
const DUMMY_AUTH_RESULT = {
|
||||
refresh_token: 'dummy_refresh_token',
|
||||
id_token: 'some-id-token',
|
||||
};
|
||||
|
||||
const storagePersistenceServiceSpy = spyOn(
|
||||
const storagePersistenceServiceSpy = vi.spyOn(
|
||||
storagePersistenceService,
|
||||
'write'
|
||||
);
|
||||
const callbackContext = {
|
||||
authResult: DUMMY_AUTH_RESULT,
|
||||
} as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: true,
|
||||
@@ -162,27 +160,27 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
},
|
||||
];
|
||||
|
||||
spyOn(signInKeyDataService, 'getSigningKeys').and.returnValue(
|
||||
vi.spyOn(signInKeyDataService, 'getSigningKeys').mockReturnValue(
|
||||
of({ keys: [] } as JwtKeys)
|
||||
);
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
callbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe(() => {
|
||||
expect(storagePersistenceServiceSpy.calls.allArgs()).toEqual([
|
||||
['authnResult', DUMMY_AUTH_RESULT, allconfigs[0]],
|
||||
['reusable_refresh_token', 'dummy_refresh_token', allconfigs[0]],
|
||||
['jwtKeys', { keys: [] }, allconfigs[0]],
|
||||
expect(storagePersistenceServiceSpy).toBeCalledWith([
|
||||
['authnResult', DUMMY_AUTH_RESULT, allConfigs[0]],
|
||||
['reusable_refresh_token', 'dummy_refresh_token', allConfigs[0]],
|
||||
['jwtKeys', { keys: [] }, allConfigs[0]],
|
||||
]);
|
||||
// write authnResult & refresh_token & jwtKeys
|
||||
expect(storagePersistenceServiceSpy).toHaveBeenCalledTimes(3);
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('resetBrowserHistory if historyCleanup is turned on and is not in a renewProcess', waitForAsync(() => {
|
||||
it('resetBrowserHistory if historyCleanup is turned on and is not in a renewProcess', async () => {
|
||||
const DUMMY_AUTH_RESULT = {
|
||||
id_token: 'some-id-token',
|
||||
};
|
||||
@@ -190,30 +188,30 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
isRenewProcess: false,
|
||||
authResult: DUMMY_AUTH_RESULT,
|
||||
} as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: false,
|
||||
},
|
||||
];
|
||||
|
||||
const windowSpy = spyOn(window.history, 'replaceState');
|
||||
const windowSpy = vi.spyOn(window.history, 'replaceState');
|
||||
|
||||
spyOn(signInKeyDataService, 'getSigningKeys').and.returnValue(
|
||||
vi.spyOn(signInKeyDataService, 'getSigningKeys').mockReturnValue(
|
||||
of({ keys: [] } as JwtKeys)
|
||||
);
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
callbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe(() => {
|
||||
expect(windowSpy).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('returns callbackContext with jwtkeys filled if everything works fine', waitForAsync(() => {
|
||||
it('returns callbackContext with jwtkeys filled if everything works fine', async () => {
|
||||
const DUMMY_AUTH_RESULT = {
|
||||
id_token: 'some-id-token',
|
||||
};
|
||||
@@ -222,21 +220,21 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
isRenewProcess: false,
|
||||
authResult: DUMMY_AUTH_RESULT,
|
||||
} as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: false,
|
||||
},
|
||||
];
|
||||
|
||||
spyOn(signInKeyDataService, 'getSigningKeys').and.returnValue(
|
||||
vi.spyOn(signInKeyDataService, 'getSigningKeys').mockReturnValue(
|
||||
of({ keys: [{ kty: 'henlo' } as JwtKey] } as JwtKeys)
|
||||
);
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
callbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe((result) => {
|
||||
expect(result).toEqual({
|
||||
@@ -245,9 +243,9 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
jwtKeys: { keys: [{ kty: 'henlo' }] },
|
||||
} as CallbackContext);
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('returns error if no jwtKeys have been in the call --> keys are null', waitForAsync(() => {
|
||||
it('returns error if no jwtKeys have been in the call --> keys are null', async () => {
|
||||
const DUMMY_AUTH_RESULT = {
|
||||
id_token: 'some-id-token',
|
||||
};
|
||||
@@ -256,32 +254,32 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
isRenewProcess: false,
|
||||
authResult: DUMMY_AUTH_RESULT,
|
||||
} as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: false,
|
||||
},
|
||||
];
|
||||
|
||||
spyOn(signInKeyDataService, 'getSigningKeys').and.returnValue(
|
||||
vi.spyOn(signInKeyDataService, 'getSigningKeys').mockReturnValue(
|
||||
of({} as JwtKeys)
|
||||
);
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
callbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe({
|
||||
error: (err) => {
|
||||
expect(err.message).toEqual(
|
||||
`Failed to retrieve signing key with error: Error: Failed to retrieve signing key`
|
||||
'Failed to retrieve signing key with error: Error: Failed to retrieve signing key'
|
||||
);
|
||||
},
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('returns error if no jwtKeys have been in the call --> keys throw an error', waitForAsync(() => {
|
||||
it('returns error if no jwtKeys have been in the call --> keys throw an error', async () => {
|
||||
const DUMMY_AUTH_RESULT = {
|
||||
id_token: 'some-id-token',
|
||||
};
|
||||
@@ -289,36 +287,36 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
isRenewProcess: false,
|
||||
authResult: DUMMY_AUTH_RESULT,
|
||||
} as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: false,
|
||||
},
|
||||
];
|
||||
|
||||
spyOn(signInKeyDataService, 'getSigningKeys').and.returnValue(
|
||||
vi.spyOn(signInKeyDataService, 'getSigningKeys').mockReturnValue(
|
||||
throwError(() => new Error('error'))
|
||||
);
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
callbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe({
|
||||
error: (err) => {
|
||||
expect(err.message).toEqual(
|
||||
`Failed to retrieve signing key with error: Error: Error: error`
|
||||
'Failed to retrieve signing key with error: Error: Error: error'
|
||||
);
|
||||
},
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('returns error if callbackContext.authresult has an error property filled', waitForAsync(() => {
|
||||
it('returns error if callbackContext.authresult has an error property filled', async () => {
|
||||
const callbackContext = {
|
||||
authResult: { error: 'someError' },
|
||||
} as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: true,
|
||||
@@ -328,36 +326,36 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
callbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe({
|
||||
error: (err) => {
|
||||
expect(err.message).toEqual(
|
||||
`AuthCallback AuthResult came with error: someError`
|
||||
'AuthCallback AuthResult came with error: someError'
|
||||
);
|
||||
},
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('calls resetAuthorizationData, resets nonce and authStateService in case of an error', waitForAsync(() => {
|
||||
it('calls resetAuthorizationData, resets nonce and authStateService in case of an error', async () => {
|
||||
const callbackContext = {
|
||||
authResult: { error: 'someError' },
|
||||
isRenewProcess: false,
|
||||
} as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: true,
|
||||
},
|
||||
];
|
||||
|
||||
const resetAuthorizationDataSpy = spyOn(
|
||||
const resetAuthorizationDataSpy = vi.spyOn(
|
||||
resetAuthDataService,
|
||||
'resetAuthorizationData'
|
||||
);
|
||||
const setNonceSpy = spyOn(flowsDataService, 'setNonce');
|
||||
const updateAndPublishAuthStateSpy = spyOn(
|
||||
const setNonceSpy = vi.spyOn(flowsDataService, 'setNonce');
|
||||
const updateAndPublishAuthStateSpy = vi.spyOn(
|
||||
authStateService,
|
||||
'updateAndPublishAuthState'
|
||||
);
|
||||
@@ -365,40 +363,42 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
callbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe({
|
||||
error: () => {
|
||||
expect(resetAuthorizationDataSpy).toHaveBeenCalledTimes(1);
|
||||
expect(setNonceSpy).toHaveBeenCalledTimes(1);
|
||||
expect(updateAndPublishAuthStateSpy).toHaveBeenCalledOnceWith({
|
||||
expect(
|
||||
updateAndPublishAuthStateSpy
|
||||
).toHaveBeenCalledExactlyOnceWith({
|
||||
isAuthenticated: false,
|
||||
validationResult: ValidationResult.SecureTokenServerError,
|
||||
isRenewProcess: false,
|
||||
});
|
||||
},
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('calls authStateService.updateAndPublishAuthState with login required if the error is `login_required`', waitForAsync(() => {
|
||||
it('calls authStateService.updateAndPublishAuthState with login required if the error is `login_required`', async () => {
|
||||
const callbackContext = {
|
||||
authResult: { error: 'login_required' },
|
||||
isRenewProcess: false,
|
||||
} as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: true,
|
||||
},
|
||||
];
|
||||
|
||||
const resetAuthorizationDataSpy = spyOn(
|
||||
const resetAuthorizationDataSpy = vi.spyOn(
|
||||
resetAuthDataService,
|
||||
'resetAuthorizationData'
|
||||
);
|
||||
const setNonceSpy = spyOn(flowsDataService, 'setNonce');
|
||||
const updateAndPublishAuthStateSpy = spyOn(
|
||||
const setNonceSpy = vi.spyOn(flowsDataService, 'setNonce');
|
||||
const updateAndPublishAuthStateSpy = vi.spyOn(
|
||||
authStateService,
|
||||
'updateAndPublishAuthState'
|
||||
);
|
||||
@@ -406,23 +406,25 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
callbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe({
|
||||
error: () => {
|
||||
expect(resetAuthorizationDataSpy).toHaveBeenCalledTimes(1);
|
||||
expect(setNonceSpy).toHaveBeenCalledTimes(1);
|
||||
expect(updateAndPublishAuthStateSpy).toHaveBeenCalledOnceWith({
|
||||
expect(
|
||||
updateAndPublishAuthStateSpy
|
||||
).toHaveBeenCalledExactlyOnceWith({
|
||||
isAuthenticated: false,
|
||||
validationResult: ValidationResult.LoginRequired,
|
||||
isRenewProcess: false,
|
||||
});
|
||||
},
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('should store jwtKeys', waitForAsync(() => {
|
||||
it('should store jwtKeys', async () => {
|
||||
const DUMMY_AUTH_RESULT = {
|
||||
id_token: 'some-id-token',
|
||||
};
|
||||
@@ -430,33 +432,33 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
const initialCallbackContext = {
|
||||
authResult: DUMMY_AUTH_RESULT,
|
||||
} as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: true,
|
||||
},
|
||||
];
|
||||
const storagePersistenceServiceSpy = spyOn(
|
||||
const storagePersistenceServiceSpy = vi.spyOn(
|
||||
storagePersistenceService,
|
||||
'write'
|
||||
);
|
||||
|
||||
spyOn(signInKeyDataService, 'getSigningKeys').and.returnValue(
|
||||
vi.spyOn(signInKeyDataService, 'getSigningKeys').mockReturnValue(
|
||||
of(DUMMY_JWT_KEYS)
|
||||
);
|
||||
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
initialCallbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe({
|
||||
next: (callbackContext: CallbackContext) => {
|
||||
expect(storagePersistenceServiceSpy).toHaveBeenCalledTimes(2);
|
||||
expect(storagePersistenceServiceSpy.calls.allArgs()).toEqual([
|
||||
['authnResult', DUMMY_AUTH_RESULT, allconfigs[0]],
|
||||
['jwtKeys', DUMMY_JWT_KEYS, allconfigs[0]],
|
||||
expect(storagePersistenceServiceSpy).toBeCalledWith([
|
||||
['authnResult', DUMMY_AUTH_RESULT, allConfigs[0]],
|
||||
['jwtKeys', DUMMY_JWT_KEYS, allConfigs[0]],
|
||||
]);
|
||||
|
||||
expect(callbackContext.jwtKeys).toEqual(DUMMY_JWT_KEYS);
|
||||
@@ -465,9 +467,9 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
expect(err).toBeFalsy();
|
||||
},
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('should not store jwtKeys on error', waitForAsync(() => {
|
||||
it('should not store jwtKeys on error', async () => {
|
||||
const authResult = {
|
||||
id_token: 'some-id-token',
|
||||
access_token: 'some-access-token',
|
||||
@@ -476,26 +478,26 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
authResult,
|
||||
} as CallbackContext;
|
||||
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: true,
|
||||
},
|
||||
];
|
||||
const storagePersistenceServiceSpy = spyOn(
|
||||
const storagePersistenceServiceSpy = vi.spyOn(
|
||||
storagePersistenceService,
|
||||
'write'
|
||||
);
|
||||
|
||||
spyOn(signInKeyDataService, 'getSigningKeys').and.returnValue(
|
||||
vi.spyOn(signInKeyDataService, 'getSigningKeys').mockReturnValue(
|
||||
throwError(() => new Error('Error'))
|
||||
);
|
||||
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
initialCallbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe({
|
||||
next: (callbackContext: CallbackContext) => {
|
||||
@@ -505,16 +507,18 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
expect(err).toBeTruthy();
|
||||
|
||||
// storagePersistenceService.write() should not have been called with jwtKeys
|
||||
expect(storagePersistenceServiceSpy).toHaveBeenCalledOnceWith(
|
||||
expect(
|
||||
storagePersistenceServiceSpy
|
||||
).toHaveBeenCalledExactlyOnceWith(
|
||||
'authnResult',
|
||||
authResult,
|
||||
allconfigs[0]
|
||||
allConfigs[0]
|
||||
);
|
||||
},
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('should fallback to stored jwtKeys on error', waitForAsync(() => {
|
||||
it('should fallback to stored jwtKeys on error', async () => {
|
||||
const authResult = {
|
||||
id_token: 'some-id-token',
|
||||
access_token: 'some-access-token',
|
||||
@@ -523,66 +527,65 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
authResult,
|
||||
} as CallbackContext;
|
||||
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: true,
|
||||
},
|
||||
];
|
||||
const storagePersistenceServiceSpy = spyOn(
|
||||
const storagePersistenceServiceSpy = vi.spyOn(
|
||||
storagePersistenceService,
|
||||
'read'
|
||||
);
|
||||
|
||||
storagePersistenceServiceSpy.and.returnValue(DUMMY_JWT_KEYS);
|
||||
spyOn(signInKeyDataService, 'getSigningKeys').and.returnValue(
|
||||
storagePersistenceServiceSpy.mockReturnValue(DUMMY_JWT_KEYS);
|
||||
vi.spyOn(signInKeyDataService, 'getSigningKeys').mockReturnValue(
|
||||
throwError(() => new Error('Error'))
|
||||
);
|
||||
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
initialCallbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe({
|
||||
next: (callbackContext: CallbackContext) => {
|
||||
expect(storagePersistenceServiceSpy).toHaveBeenCalledOnceWith(
|
||||
'jwtKeys',
|
||||
allconfigs[0]
|
||||
);
|
||||
expect(
|
||||
storagePersistenceServiceSpy
|
||||
).toHaveBeenCalledExactlyOnceWith('jwtKeys', allConfigs[0]);
|
||||
expect(callbackContext.jwtKeys).toEqual(DUMMY_JWT_KEYS);
|
||||
},
|
||||
error: (err) => {
|
||||
expect(err).toBeFalsy();
|
||||
},
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
it('should throw error if no jwtKeys are stored', waitForAsync(() => {
|
||||
it('should throw error if no jwtKeys are stored', async () => {
|
||||
const authResult = {
|
||||
id_token: 'some-id-token',
|
||||
access_token: 'some-access-token',
|
||||
} as AuthResult;
|
||||
|
||||
const initialCallbackContext = { authResult } as CallbackContext;
|
||||
const allconfigs = [
|
||||
const allConfigs = [
|
||||
{
|
||||
configId: 'configId1',
|
||||
historyCleanupOff: true,
|
||||
},
|
||||
];
|
||||
|
||||
spyOn(storagePersistenceService, 'read').and.returnValue(null);
|
||||
spyOn(signInKeyDataService, 'getSigningKeys').and.returnValue(
|
||||
vi.spyOn(storagePersistenceService, 'read').mockReturnValue(null);
|
||||
vi.spyOn(signInKeyDataService, 'getSigningKeys').mockReturnValue(
|
||||
throwError(() => new Error('Error'))
|
||||
);
|
||||
|
||||
service
|
||||
.callbackHistoryAndResetJwtKeys(
|
||||
initialCallbackContext,
|
||||
allconfigs[0],
|
||||
allconfigs
|
||||
allConfigs[0]!,
|
||||
allConfigs
|
||||
)
|
||||
.subscribe({
|
||||
next: (callbackContext: CallbackContext) => {
|
||||
@@ -592,7 +595,7 @@ describe('HistoryJwtKeysCallbackHandlerService', () => {
|
||||
expect(err).toBeTruthy();
|
||||
},
|
||||
});
|
||||
}));
|
||||
});
|
||||
});
|
||||
|
||||
describe('historyCleanUpTurnedOn ', () => {
|
||||
|
||||
Reference in New Issue
Block a user