mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-10-04 08:42:08 +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').click();
|
||||||
cy.get('stapps-favorite-button > ion-button > ion-icon')
|
cy.get('stapps-favorite-button > ion-button > ion-icon')
|
||||||
.invoke('attr', 'ng-reflect-fill')
|
.invoke('attr', 'class')
|
||||||
.should('eq', 'true');
|
.should('eq', 'selected');
|
||||||
});
|
});
|
||||||
cy.visit('/favorites');
|
cy.visit('/favorites');
|
||||||
cy.get('stapps-data-list-item').within(() => {
|
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 {AuthHelperService} from '../auth/auth-helper.service';
|
||||||
import {BehaviorSubject, firstValueFrom, of} from 'rxjs';
|
import {BehaviorSubject, firstValueFrom, of} from 'rxjs';
|
||||||
import {EncryptedStorageProvider} from '../storage/encrypted-storage.provider';
|
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 {
|
class FakeAuth {
|
||||||
isLoggedIn$ = new BehaviorSubject(false);
|
isLoggedIn$ = new BehaviorSubject(false);
|
||||||
@@ -13,40 +20,100 @@ class FakeAuth {
|
|||||||
}
|
}
|
||||||
|
|
||||||
describe('IdCards', () => {
|
describe('IdCards', () => {
|
||||||
let configProvider: ConfigProvider;
|
let configProviderSpy: ConfigProvider;
|
||||||
let httpClient: HttpClient;
|
let httpClient: HttpClient;
|
||||||
let authHelper: AuthHelperService;
|
|
||||||
let encryptedStorageProvider: EncryptedStorageProvider;
|
let encryptedStorageProvider: EncryptedStorageProvider;
|
||||||
let fakeAuth: FakeAuth;
|
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(() => {
|
beforeEach(() => {
|
||||||
configProvider = jasmine.createSpyObj('ConfigProvider', ['config']);
|
storageBackendSpy = jasmine.createSpyObj('StorageBackend', ['getItem']);
|
||||||
configProvider.config = {
|
configProviderSpy = jasmine.createSpyObj('ConfigProvider', ['config', 'getAnyValue']);
|
||||||
|
configProviderSpy.config = {
|
||||||
app: {features: {extern: {idCards: {url: 'http://id-cards.local', authProvider: 'fakeAuth'}}}},
|
app: {features: {extern: {idCards: {url: 'http://id-cards.local', authProvider: 'fakeAuth'}}}},
|
||||||
} as never;
|
} as never;
|
||||||
httpClient = jasmine.createSpyObj('HttpClient', ['get']);
|
configProviderSpy.getAnyValue = () =>
|
||||||
fakeAuth = new FakeAuth();
|
({
|
||||||
authHelper = jasmine.createSpyObj('AuthHelperService', ['getProvider']);
|
default: {
|
||||||
authHelper.getProvider = jasmine.createSpy().and.returnValue(fakeAuth);
|
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 = jasmine.createSpyObj('EncryptedStorageProvider', ['get', 'set', 'delete']);
|
||||||
encryptedStorageProvider.get = jasmine.createSpy().and.resolveTo();
|
encryptedStorageProvider.get = jasmine.createSpy().and.resolveTo();
|
||||||
encryptedStorageProvider.set = jasmine.createSpy().and.resolveTo();
|
encryptedStorageProvider.set = jasmine.createSpy().and.resolveTo();
|
||||||
encryptedStorageProvider.delete = 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 () => {
|
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(await firstValueFrom(provider.getIdCards())).toEqual([]);
|
||||||
expect(authHelper.getProvider).toHaveBeenCalledTimes(1);
|
expect(authHelperServiceMock.getProvider).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should emit network result when logged in', async () => {
|
it('should emit network result when logged in', async () => {
|
||||||
fakeAuth.isLoggedIn$.next(true);
|
fakeAuth.isLoggedIn$.next(true);
|
||||||
httpClient.get = jasmine.createSpy().and.returnValue(of(['abc']));
|
httpClient.get = jasmine.createSpy().and.returnValue(of(['abc']));
|
||||||
fakeAuth.getValidToken = jasmine.createSpy().and.resolveTo({accessToken: 'fake-token'});
|
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(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
|
// eslint-disable-next-line unicorn/no-null
|
||||||
expect(httpClient.get).toHaveBeenCalledOnceWith('http://id-cards.local', {
|
expect(httpClient.get).toHaveBeenCalledOnceWith('http://id-cards.local', {
|
||||||
headers: {
|
headers: {
|
||||||
@@ -57,7 +124,7 @@ describe('IdCards', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should react to logins', async () => {
|
it('should react to logins', async () => {
|
||||||
const provider = new IdCardsProvider();
|
const provider = TestBed.inject(IdCardsProvider);
|
||||||
const observable = provider.getIdCards();
|
const observable = provider.getIdCards();
|
||||||
expect(await firstValueFrom(observable)).toEqual([]);
|
expect(await firstValueFrom(observable)).toEqual([]);
|
||||||
httpClient.get = jasmine.createSpy().and.returnValue(of(['abc']));
|
httpClient.get = jasmine.createSpy().and.returnValue(of(['abc']));
|
||||||
|
|||||||
Reference in New Issue
Block a user