mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-10-03 00:03:29 +00:00
refactor: id-cards related test
This commit is contained in:
@@ -41,8 +41,8 @@ describe('favorites', function () {
|
||||
});
|
||||
cy.get('stapps-favorite-button').click();
|
||||
cy.get('stapps-favorite-button > ion-button > ion-icon')
|
||||
.invoke('attr', 'ng-reflect-fill')
|
||||
.should('eq', 'true');
|
||||
.invoke('attr', 'class')
|
||||
.should('eq', 'selected');
|
||||
});
|
||||
cy.visit('/favorites');
|
||||
cy.get('stapps-data-list-item').within(() => {
|
||||
|
||||
@@ -4,6 +4,13 @@ import {HttpClient} from '@angular/common/http';
|
||||
import {AuthHelperService} from '../auth/auth-helper.service';
|
||||
import {BehaviorSubject, firstValueFrom, of} from 'rxjs';
|
||||
import {EncryptedStorageProvider} from '../storage/encrypted-storage.provider';
|
||||
import {TestBed} from '@angular/core/testing';
|
||||
import {TranslateService} from '@ngx-translate/core';
|
||||
import {StorageBackend, Requestor} from '@openid/appauth';
|
||||
import {IonicStorage, Browser} from 'ionic-appauth';
|
||||
import {LoggerTestingModule} from 'ngx-logger/testing';
|
||||
import {StAppsWebHttpClient} from '../data/stapps-web-http-client.provider';
|
||||
import {SimpleBrowser} from '../../util/browser.factory';
|
||||
|
||||
class FakeAuth {
|
||||
isLoggedIn$ = new BehaviorSubject(false);
|
||||
@@ -13,40 +20,100 @@ class FakeAuth {
|
||||
}
|
||||
|
||||
describe('IdCards', () => {
|
||||
let configProvider: ConfigProvider;
|
||||
let configProviderSpy: ConfigProvider;
|
||||
let httpClient: HttpClient;
|
||||
let authHelper: AuthHelperService;
|
||||
let encryptedStorageProvider: EncryptedStorageProvider;
|
||||
let fakeAuth: FakeAuth;
|
||||
|
||||
const authHelperServiceMock = jasmine.createSpyObj('AuthHelperService', ['getProvider']);
|
||||
const translateServiceSpy = jasmine.createSpyObj('TranslateService', ['setDefaultLang', 'use']);
|
||||
let storageBackendSpy: jasmine.SpyObj<StorageBackend>;
|
||||
const simpleBrowserMock = jasmine.createSpyObj('SimpleBrowser', ['open']);
|
||||
|
||||
beforeEach(() => {
|
||||
configProvider = jasmine.createSpyObj('ConfigProvider', ['config']);
|
||||
configProvider.config = {
|
||||
storageBackendSpy = jasmine.createSpyObj('StorageBackend', ['getItem']);
|
||||
configProviderSpy = jasmine.createSpyObj('ConfigProvider', ['config', 'getAnyValue']);
|
||||
configProviderSpy.config = {
|
||||
app: {features: {extern: {idCards: {url: 'http://id-cards.local', authProvider: 'fakeAuth'}}}},
|
||||
} as never;
|
||||
httpClient = jasmine.createSpyObj('HttpClient', ['get']);
|
||||
fakeAuth = new FakeAuth();
|
||||
authHelper = jasmine.createSpyObj('AuthHelperService', ['getProvider']);
|
||||
authHelper.getProvider = jasmine.createSpy().and.returnValue(fakeAuth);
|
||||
configProviderSpy.getAnyValue = () =>
|
||||
({
|
||||
default: {
|
||||
endpoints: {
|
||||
mapping: {
|
||||
id: '$.id',
|
||||
email: '$.attributes.mailPrimaryAddress',
|
||||
givenName: '$.attributes.givenName',
|
||||
familyName: '$.attributes.sn',
|
||||
name: '$.attributes.sn',
|
||||
role: '$.attributes.eduPersonPrimaryAffiliation',
|
||||
studentId: '$.attributes.employeeNumber',
|
||||
},
|
||||
},
|
||||
},
|
||||
}) as never;
|
||||
encryptedStorageProvider = jasmine.createSpyObj('EncryptedStorageProvider', ['get', 'set', 'delete']);
|
||||
encryptedStorageProvider.get = jasmine.createSpy().and.resolveTo();
|
||||
encryptedStorageProvider.set = jasmine.createSpy().and.resolveTo();
|
||||
encryptedStorageProvider.delete = jasmine.createSpy().and.resolveTo();
|
||||
httpClient = jasmine.createSpyObj('HttpClient', ['get']);
|
||||
|
||||
TestBed.configureTestingModule({
|
||||
imports: [LoggerTestingModule],
|
||||
providers: [
|
||||
IdCardsProvider,
|
||||
StAppsWebHttpClient,
|
||||
{
|
||||
provide: TranslateService,
|
||||
useValue: translateServiceSpy,
|
||||
},
|
||||
{
|
||||
provide: EncryptedStorageProvider,
|
||||
useValue: encryptedStorageProvider,
|
||||
},
|
||||
IonicStorage,
|
||||
{
|
||||
provide: ConfigProvider,
|
||||
useValue: configProviderSpy,
|
||||
},
|
||||
Browser,
|
||||
{
|
||||
provide: StorageBackend,
|
||||
useValue: storageBackendSpy,
|
||||
},
|
||||
{
|
||||
provide: AuthHelperService,
|
||||
useValue: authHelperServiceMock,
|
||||
},
|
||||
{
|
||||
provide: SimpleBrowser,
|
||||
useValue: simpleBrowserMock,
|
||||
},
|
||||
{
|
||||
provide: HttpClient,
|
||||
useValue: httpClient,
|
||||
},
|
||||
Requestor,
|
||||
],
|
||||
});
|
||||
|
||||
fakeAuth = new FakeAuth();
|
||||
authHelperServiceMock.getProvider = jasmine.createSpy().and.returnValue(fakeAuth);
|
||||
});
|
||||
|
||||
it('should emit undefined if not logged in', async () => {
|
||||
const provider = new IdCardsProvider();
|
||||
const provider = TestBed.inject(IdCardsProvider);
|
||||
expect(await firstValueFrom(provider.getIdCards())).toEqual([]);
|
||||
expect(authHelper.getProvider).toHaveBeenCalledTimes(1);
|
||||
expect(authHelperServiceMock.getProvider).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it('should emit network result when logged in', async () => {
|
||||
fakeAuth.isLoggedIn$.next(true);
|
||||
httpClient.get = jasmine.createSpy().and.returnValue(of(['abc']));
|
||||
fakeAuth.getValidToken = jasmine.createSpy().and.resolveTo({accessToken: 'fake-token'});
|
||||
const provider = new IdCardsProvider();
|
||||
const provider = TestBed.inject(IdCardsProvider);
|
||||
expect(await firstValueFrom(provider.getIdCards())).toEqual(['abc' as never]);
|
||||
expect(authHelper.getProvider).toHaveBeenCalledTimes(1);
|
||||
expect(authHelperServiceMock.getProvider).toHaveBeenCalledTimes(1);
|
||||
// eslint-disable-next-line unicorn/no-null
|
||||
expect(httpClient.get).toHaveBeenCalledOnceWith('http://id-cards.local', {
|
||||
headers: {
|
||||
@@ -57,7 +124,7 @@ describe('IdCards', () => {
|
||||
});
|
||||
|
||||
it('should react to logins', async () => {
|
||||
const provider = new IdCardsProvider();
|
||||
const provider = TestBed.inject(IdCardsProvider);
|
||||
const observable = provider.getIdCards();
|
||||
expect(await firstValueFrom(observable)).toEqual([]);
|
||||
httpClient.get = jasmine.createSpy().and.returnValue(of(['abc']));
|
||||
|
||||
Reference in New Issue
Block a user