@@ -33,6 +33,7 @@ describe('web-server', () => {
3333 // this relies on the fact that none of these tests mutate fs
3434 var m = mocks . loadFile ( path . join ( __dirname , '/../../lib/web-server.js' ) , _mocks , _globals )
3535 var customFileHandlers = server = emitter = null
36+ var beforeMiddlewareActive = false
3637 var middlewareActive = false
3738 var servedFiles = ( files ) => {
3839 emitter . emit ( 'file_list_modified' , { included : [ ] , served : files } )
@@ -45,6 +46,7 @@ describe('web-server', () => {
4546 var config = {
4647 basePath : '/base/path' ,
4748 urlRoot : '/' ,
49+ beforeMiddleware : [ 'beforeCustom' ] ,
4850 middleware : [ 'custom' ] ,
4951 middlewareResponse : 'hello middleware!' ,
5052 mime : { 'custom/custom' : [ 'custom' ] }
@@ -59,6 +61,15 @@ describe('web-server', () => {
5961 reporter : [ 'value' , null ] ,
6062 executor : [ 'value' , null ] ,
6163 proxies : [ 'value' , null ] ,
64+ 'middleware:beforeCustom' : [ 'factory' , function ( config ) {
65+ return function ( request , response , next ) {
66+ if ( beforeMiddlewareActive ) {
67+ response . writeHead ( 223 )
68+ return response . end ( 'hello from before middleware!' )
69+ }
70+ next ( )
71+ }
72+ } ] ,
6273 'middleware:custom' : [ 'factory' , function ( config ) {
6374 return function ( request , response , next ) {
6475 if ( middlewareActive ) {
@@ -106,12 +117,39 @@ describe('web-server', () => {
106117 . expect ( 200 , 'new-js-source' )
107118 } )
108119
120+ describe ( 'beforeMiddleware' , ( ) => {
121+ beforeEach ( ( ) => {
122+ servedFiles ( new Set ( [ new File ( '/base/path/one.js' ) ] ) )
123+ beforeMiddlewareActive = true
124+ } )
125+
126+ afterEach ( ( ) => {
127+ beforeMiddlewareActive = false
128+ } )
129+
130+ it ( 'should use injected middleware' , ( ) => {
131+ return request ( server )
132+ . get ( '/base/other.js' )
133+ . expect ( 223 , 'hello from before middleware!' )
134+ } )
135+
136+ it ( 'should inject middleware before served files' , ( ) => {
137+ return request ( server )
138+ . get ( '/base/one.js' )
139+ . expect ( 223 , 'hello from before middleware!' )
140+ } )
141+ } )
142+
109143 describe ( 'middleware' , ( ) => {
110144 beforeEach ( ( ) => {
111145 servedFiles ( new Set ( [ new File ( '/base/path/one.js' ) ] ) )
112146 middlewareActive = true
113147 } )
114148
149+ afterEach ( ( ) => {
150+ middlewareActive = false
151+ } )
152+
115153 it ( 'should use injected middleware' , ( ) => {
116154 return request ( server )
117155 . get ( '/base/other.js' )
0 commit comments