Skip to content

Commit

Permalink
AAE-24081 test silent refresh and token refresh are called when autom…
Browse files Browse the repository at this point in the history
…atic silent refresh is setup
  • Loading branch information
alep85 committed Jul 23, 2024
1 parent 5e9791f commit 26d99cc
Showing 1 changed file with 30 additions and 3 deletions.
33 changes: 30 additions & 3 deletions lib/core/src/lib/auth/oidc/redirect-auth.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/

import { TestBed } from '@angular/core/testing';
import { OAuthService, OAuthEvent, OAuthStorage, AUTH_CONFIG } from 'angular-oauth2-oidc';
import { OAuthService, OAuthEvent, OAuthStorage, AUTH_CONFIG, TokenResponse } from 'angular-oauth2-oidc';
import { Subject } from 'rxjs';
import { RedirectAuthService } from './redirect-auth.service';
import { AUTH_MODULE_CONFIG } from './auth-config';
Expand All @@ -31,7 +31,13 @@ describe('RedirectAuthService', () => {
const oauthEvents$ = new Subject<OAuthEvent>();
const mockOauthService: Partial<OAuthService> = {
clearHashAfterLogin: false,
events: oauthEvents$
events: oauthEvents$,
configure: () => {},
hasValidAccessToken: jasmine.createSpy().and.returnValue(true),
setupAutomaticSilentRefresh: () => {
mockOauthService.silentRefresh();
mockOauthService.refreshToken();
}
};

beforeEach(() => {
Expand All @@ -45,8 +51,10 @@ describe('RedirectAuthService', () => {
]
});

service = TestBed.inject(RedirectAuthService);
TestBed.inject(OAuthService);
service = TestBed.inject(RedirectAuthService);
spyOn(service, 'ensureDiscoveryDocument').and.resolveTo(true);
mockOauthService.getAccessToken = () => 'access-token';
});

it('should emit event when token_received event is received', () => {
Expand All @@ -66,4 +74,23 @@ describe('RedirectAuthService', () => {

expect(onTokenReceivedSpy).not.toHaveBeenCalled();
});

it('should call refresh token and silent refresh when automatic silent refresh is setup', async () => {
let refreshTokenCalled = false;
let silentRefreshCalled = false;

mockOauthService.refreshToken = async () => {
refreshTokenCalled = true;
return Promise.resolve({} as TokenResponse);
};
mockOauthService.silentRefresh = async () => {
silentRefreshCalled = true;
return Promise.resolve({} as OAuthEvent);
};

await service.init();

expect(refreshTokenCalled).toBe(true);
expect(silentRefreshCalled).toBe(true);
});
});

0 comments on commit 26d99cc

Please sign in to comment.