@@ -31,7 +31,7 @@ describe('web-server', () => {
31
31
// NOTE(vojta): only loading once, to speed things up
32
32
// this relies on the fact that none of these tests mutate fs
33
33
const m = mocks . loadFile ( path . join ( __dirname , '/../../lib/web-server.js' ) , _mocks , _globals )
34
- server = emitter = null
34
+ let customFileHandlers = server = emitter = null
35
35
let beforeMiddlewareActive = false
36
36
let middlewareActive = false
37
37
const servedFiles = ( files ) => {
@@ -40,6 +40,7 @@ describe('web-server', () => {
40
40
41
41
describe ( 'request' , ( ) => {
42
42
beforeEach ( ( ) => {
43
+ customFileHandlers = [ ]
43
44
emitter = new EventEmitter ( )
44
45
const config = {
45
46
basePath : '/base/path' ,
@@ -56,6 +57,7 @@ describe('web-server', () => {
56
57
57
58
const injector = new di . Injector ( [ {
58
59
config : [ 'value' , config ] ,
60
+ customFileHandlers : [ 'value' , customFileHandlers ] ,
59
61
emitter : [ 'value' , emitter ] ,
60
62
fileList : [ 'value' , { files : { served : [ ] , included : [ ] } } ] ,
61
63
filesPromise : [ 'factory' , m . createFilesPromise ] ,
@@ -180,6 +182,22 @@ describe('web-server', () => {
180
182
} )
181
183
} )
182
184
185
+ it ( 'should load custom handlers' , ( ) => {
186
+ servedFiles ( new Set ( ) )
187
+
188
+ customFileHandlers . push ( {
189
+ urlRegex : / \/ s o m e \/ w e i r d / ,
190
+ handler ( request , response , staticFolder , adapterFolder , baseFolder , urlRoot ) {
191
+ response . writeHead ( 222 )
192
+ response . end ( 'CONTENT' )
193
+ }
194
+ } )
195
+
196
+ return request ( server )
197
+ . get ( '/some/weird/url' )
198
+ . expect ( 222 , 'CONTENT' )
199
+ } )
200
+
183
201
it ( 'should serve 404 for non-existing files' , ( ) => {
184
202
servedFiles ( new Set ( ) )
185
203
@@ -196,6 +214,7 @@ describe('web-server', () => {
196
214
cert : fs . readFileSync ( path . join ( __dirname , '/certificates/server.crt' ) )
197
215
}
198
216
217
+ customFileHandlers = [ ]
199
218
emitter = new EventEmitter ( )
200
219
201
220
const injector = new di . Injector ( [ {
@@ -206,6 +225,7 @@ describe('web-server', () => {
206
225
httpsServerOptions : credentials ,
207
226
client : { useIframe : true , useSingleWindow : false }
208
227
} ] ,
228
+ customFileHandlers : [ 'value' , customFileHandlers ] ,
209
229
emitter : [ 'value' , emitter ] ,
210
230
fileList : [ 'value' , { files : { served : [ ] , included : [ ] } } ] ,
211
231
filesPromise : [ 'factory' , m . createFilesPromise ] ,
@@ -244,10 +264,12 @@ describe('web-server', () => {
244
264
cert : fs . readFileSync ( path . join ( __dirname , '/certificates/server.crt' ) )
245
265
}
246
266
267
+ customFileHandlers = [ ]
247
268
emitter = new EventEmitter ( )
248
269
249
270
const injector = new di . Injector ( [ {
250
271
config : [ 'value' , { basePath : '/base/path' , urlRoot : '/' , httpModule : http2 , protocol : 'https:' , httpsServerOptions : credentials } ] ,
272
+ customFileHandlers : [ 'value' , customFileHandlers ] ,
251
273
emitter : [ 'value' , emitter ] ,
252
274
fileList : [ 'value' , { files : { served : [ ] , included : [ ] } } ] ,
253
275
filesPromise : [ 'factory' , m . createFilesPromise ] ,
0 commit comments