Files
dspace-angular/src/app/core/xsrf/browser-xsrf.service.spec.ts
2025-03-06 14:16:45 +01:00

67 lines
1.7 KiB
TypeScript

import {
HttpClient,
provideHttpClient,
withInterceptorsFromDi,
} from '@angular/common/http';
import {
HttpTestingController,
provideHttpClientTesting,
} from '@angular/common/http/testing';
import { TestBed } from '@angular/core/testing';
import { RESTURLCombiner } from '../url-combiner/rest-url-combiner';
import { BrowserXSRFService } from './browser-xsrf.service';
describe(`BrowserXSRFService`, () => {
let service: BrowserXSRFService;
let httpClient: HttpClient;
let httpTestingController: HttpTestingController;
const endpointURL = new RESTURLCombiner('/security/csrf').toString();
beforeEach(() => {
TestBed.configureTestingModule({
imports: [],
providers: [
BrowserXSRFService,
provideHttpClient(withInterceptorsFromDi()),
provideHttpClientTesting(),
],
});
httpClient = TestBed.inject(HttpClient);
httpTestingController = TestBed.inject(HttpTestingController);
service = TestBed.inject(BrowserXSRFService);
});
describe(`initXSRFToken`, () => {
it(`should perform a GET to the csrf endpoint`, (done: DoneFn) => {
service.initXSRFToken(httpClient)();
const req = httpTestingController.expectOne({
url: endpointURL,
method: 'GET',
});
req.flush({});
httpTestingController.verify();
expect().nothing();
done();
});
describe(`when the GET succeeds`, () => {
it(`should set tokenInitialized$ to true`, (done: DoneFn) => {
service.initXSRFToken(httpClient)();
const req = httpTestingController.expectOne(endpointURL);
req.flush({});
httpTestingController.verify();
expect(service.tokenInitialized$.getValue()).toBeTrue();
done();
});
});
});
});