@@ -22,7 +22,7 @@ import { XsrfInterceptor } from './xsrf.interceptor';
2222describe ( `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