@@ -148,22 +148,40 @@ describe('dicomweb.api.DICOMwebClient', function() {
148148 } , 15000 ) ;
149149
150150 describe ( 'Request hooks' , function ( ) {
151- let requestHook1Spy , requestHook2Spy ;
152-
153- beforeAll ( function ( ) {
154- requestHook1Spy = createSpy ( 'requestHook1Spy' ) . and . callFake ( ( request , metadata ) => request ) ;
155- requestHook2Spy = createSpy ( 'requestHook2Spy' ) . and . callFake ( ( request , metadata ) => request ) ;
151+ let requestHook1Spy , requestHook2Spy , url , metadataUrl , request ;
152+
153+ beforeEach ( function ( ) {
154+ request = new XMLHttpRequest ( ) ;
155+ url = 'http://localhost:8008/dcm4chee-arc/aets/DCM4CHEE/rs' ;
156+ metadataUrl = 'http://localhost:8008/dcm4chee-arc/aets/DCM4CHEE/rs/studies/999.999.3859744/series/999.999.94827453/instances/999.999.133.1996.1.1800.1.6.25/metadata' ;
157+ requestHook1Spy = createSpy ( 'requestHook1Spy' , function ( request , metadata ) { return request } ) . and . callFake ( ( request , metadata ) => request ) ;
158+ requestHook2Spy = createSpy ( 'requestHook2Spy' , function ( request , metadata ) { return request } ) . and . callFake ( ( request , metadata ) => request ) ;
156159 } ) ;
157160
158- it ( 'request hooks should be called' , async function ( ) {
159- const url = 'http://localhost:8008/dcm4chee-arc/aets/DCM4CHEE/rs' ;
160- const metadataUrl = 'http://localhost:8008/dcm4chee-arc/aets/DCM4CHEE/rs/studies/999.999.3859744/series/999.999.94827453/instances/999.999.133.1996.1.1800.1.6.25/metadata' ;
161+ it ( 'invalid request hooks should be notified and ignored' , async function ( ) {
162+ /** Spy with invalid request hook signature */
163+ requestHook2Spy = createSpy ( 'requestHook2Spy' , function ( request ) { return request } ) . and . callFake ( ( request , metadata ) => request ) ;
164+ const dwc = new DICOMwebClient . api . DICOMwebClient ( {
165+ url,
166+ requestHooks : [ requestHook1Spy , requestHook2Spy ]
167+ } ) ;
168+ const metadata = { url : metadataUrl , method : 'get' } ;
169+ request . open ( 'GET' , metadata . url ) ;
170+ await dwc . retrieveInstanceMetadata ( {
171+ studyInstanceUID : '999.999.3859744' ,
172+ seriesInstanceUID : '999.999.94827453' ,
173+ sopInstanceUID : '999.999.133.1996.1.1800.1.6.25' ,
174+ } ) ;
175+ expect ( requestHook1Spy ) . not . toHaveBeenCalledWith ( request , metadata ) ;
176+ expect ( requestHook2Spy ) . not . toHaveBeenCalledWith ( request , metadata ) ;
177+ } )
178+
179+ it ( 'valid request hooks should be called' , async function ( ) {
161180 const dwc = new DICOMwebClient . api . DICOMwebClient ( {
162181 url,
163182 requestHooks : [ requestHook1Spy , requestHook2Spy ]
164183 } ) ;
165184 const metadata = { url : metadataUrl , method : 'get' } ;
166- const request = new XMLHttpRequest ( ) ;
167185 request . open ( 'GET' , metadata . url ) ;
168186 await dwc . retrieveInstanceMetadata ( {
169187 studyInstanceUID : '999.999.3859744' ,
0 commit comments