Skip to content

Commit 47d55ec

Browse files
AAwoutersybnd
authored andcommitted
120243: Fix xsrf.interceptor tests
1 parent 1df73d6 commit 47d55ec

1 file changed

Lines changed: 20 additions & 15 deletions

File tree

src/app/core/xsrf/xsrf.interceptor.spec.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { XsrfInterceptor } from './xsrf.interceptor';
2222
describe(`XsrfInterceptor`, () => {
2323
let service: DspaceRestService;
2424
let httpMock: HttpTestingController;
25-
let cookieService: CookieService;
25+
let cookieService: CookieServiceMock;
2626

2727
// mock XSRF token
2828
const testToken = 'test-token';
@@ -35,47 +35,52 @@ describe(`XsrfInterceptor`, () => {
3535
const mockStatusCode = 200;
3636
const mockStatusText = 'SUCCESS';
3737

38+
const testUrl = 'https://rest.com/server/api/core/items';
39+
3840
beforeEach(() => {
41+
const tokenExtractor = new HttpXsrfTokenExtractorMock(testToken);
42+
cookieService = new CookieServiceMock();
43+
const interceptor = new XsrfInterceptor(tokenExtractor,cookieService as any);
44+
3945
TestBed.configureTestingModule({
4046
imports: [],
4147
providers: [
4248
DspaceRestService,
4349
{
4450
provide: HTTP_INTERCEPTORS,
45-
useClass: XsrfInterceptor,
51+
useValue: interceptor,
4652
multi: true,
4753
},
48-
{ provide: HttpXsrfTokenExtractor, useValue: new HttpXsrfTokenExtractorMock(testToken) },
49-
{ provide: CookieService, useValue: new CookieServiceMock() },
54+
{ provide: HttpXsrfTokenExtractor, useValue: tokenExtractor },
55+
{ provide: CookieService, useValue: cookieService },
5056
provideHttpClient(withInterceptorsFromDi()),
5157
provideHttpClientTesting(),
5258
],
5359
});
5460

5561
service = TestBed.get(DspaceRestService);
5662
httpMock = TestBed.get(HttpTestingController);
57-
cookieService = TestBed.get(CookieService);
5863
});
5964

6065
it('should change withCredentials to true at all times', (done) => {
61-
service.request(RestRequestMethod.POST, 'server/api/core/items', 'test', { withCredentials: false }).subscribe((response) => {
66+
service.request(RestRequestMethod.POST, testUrl, 'test', { withCredentials: false }).subscribe((response) => {
6267
expect(response).toBeTruthy();
6368
done();
6469
});
6570

66-
const httpRequest = httpMock.expectOne('server/api/core/items');
71+
const httpRequest = httpMock.expectOne(testUrl);
6772
expect(httpRequest.request.withCredentials).toBeTrue();
6873

6974
httpRequest.flush(mockPayload, { status: mockStatusCode, statusText: mockStatusText });
7075
});
7176

7277
it('should add an X-XSRF-TOKEN header when we are sending an HTTP POST request', (done) => {
73-
service.request(RestRequestMethod.POST, 'server/api/core/items', 'test').subscribe((response) => {
78+
service.request(RestRequestMethod.POST, testUrl, 'test').subscribe((response) => {
7479
expect(response).toBeTruthy();
7580
done();
7681
});
7782

78-
const httpRequest = httpMock.expectOne('server/api/core/items');
83+
const httpRequest = httpMock.expectOne(testUrl);
7984

8085
expect(httpRequest.request.headers.has('X-XSRF-TOKEN')).toBeTrue();
8186
expect(httpRequest.request.withCredentials).toBeTrue();
@@ -87,12 +92,12 @@ describe(`XsrfInterceptor`, () => {
8792
});
8893

8994
it('should NOT add an X-XSRF-TOKEN header when we are sending an HTTP GET request', (done) => {
90-
service.request(RestRequestMethod.GET, 'server/api/core/items').subscribe((response) => {
95+
service.request(RestRequestMethod.GET, testUrl).subscribe((response) => {
9196
expect(response).toBeTruthy();
9297
done();
9398
});
9499

95-
const httpRequest = httpMock.expectOne('server/api/core/items');
100+
const httpRequest = httpMock.expectOne(testUrl);
96101

97102
expect(httpRequest.request.headers.has('X-XSRF-TOKEN')).toBeFalse();
98103
expect(httpRequest.request.withCredentials).toBeTrue();
@@ -119,7 +124,7 @@ describe(`XsrfInterceptor`, () => {
119124
// Create a mock XSRF token to be returned in response within DSPACE-XSRF-TOKEN header
120125
const mockNewXSRFToken = '123456789abcdefg';
121126

122-
service.request(RestRequestMethod.GET, 'server/api/core/items').subscribe((response) => {
127+
service.request(RestRequestMethod.GET, testUrl).subscribe((response) => {
123128
expect(response).toBeTruthy();
124129

125130
// ensure mock data (added in below flush() call) is returned.
@@ -139,7 +144,7 @@ describe(`XsrfInterceptor`, () => {
139144
done();
140145
});
141146

142-
const httpRequest = httpMock.expectOne('server/api/core/items');
147+
const httpRequest = httpMock.expectOne(testUrl);
143148

144149
// Flush & create mock response (including sending back a new XSRF token in header)
145150
httpRequest.flush(mockPayload, {
@@ -157,7 +162,7 @@ describe(`XsrfInterceptor`, () => {
157162
const mockErrorText = 'Forbidden';
158163
const mockErrorMessage = 'CSRF token mismatch';
159164

160-
service.request(RestRequestMethod.GET, 'server/api/core/items').subscribe({
165+
service.request(RestRequestMethod.GET, testUrl).subscribe({
161166
error: (error: unknown) => {
162167
expect(error).toBeTruthy();
163168
expect(error instanceof RequestError).toBeTrue();
@@ -174,7 +179,7 @@ describe(`XsrfInterceptor`, () => {
174179
},
175180
});
176181

177-
const httpRequest = httpMock.expectOne('server/api/core/items');
182+
const httpRequest = httpMock.expectOne(testUrl);
178183

179184
// Flush & create mock error response (including sending back a new XSRF token in header)
180185
httpRequest.flush(mockErrorMessage, {

0 commit comments

Comments
 (0)