@@ -51,30 +51,6 @@ describe("FastBoot", function() {
5151 } ) ;
5252 } ) ;
5353
54- it ( "returns 404 when navigating to a URL that doesn't exist" , function ( ) {
55- let middleware = fastbootMiddleware ( fixture ( 'basic-app' ) ) ;
56- server = new TestHTTPServer ( middleware ) ;
57-
58- return server . start ( )
59- . then ( ( ) => server . request ( '/foo-bar-baz/non-existent' ) )
60- . catch ( ( result ) => {
61- expect ( result . statusCode ) . to . equal ( 404 ) ;
62- } ) ;
63- } ) ;
64-
65- it ( "returns a 500 error if an error occurs" , function ( ) {
66- let middleware = fastbootMiddleware ( {
67- distPath : fixture ( 'rejected-promise' )
68- } ) ;
69- server = new TestHTTPServer ( middleware ) ;
70-
71- return server . start ( )
72- . then ( ( ) => server . request ( '/' ) )
73- . catch ( err => {
74- expect ( err . message ) . to . match ( / R e j e c t e d o n p u r p o s e / ) ;
75- } ) ;
76- } ) ;
77-
7854 it ( "can be provided with a custom FastBoot instance" , function ( ) {
7955 let fastboot = new FastBoot ( {
8056 distPath : fixture ( 'basic-app' )
@@ -130,102 +106,156 @@ describe("FastBoot", function() {
130106 }
131107 } ) ;
132108
133- describe ( 'when reslient mode is enabled' , function ( ) {
134- it ( "renders no FastBoot markup" , function ( ) {
135- let middleware = fastbootMiddleware ( {
136- distPath : fixture ( 'rejected-promise' ) ,
137- resilient : true
138- } ) ;
139- server = new TestHTTPServer ( middleware ) ;
109+ [ true , false ] . forEach ( ( chunkedResponse ) => {
110+ describe ( `when chunked response is ${ chunkedResponse ? 'enabled' : 'disabled' } ` , function ( ) {
111+ if ( chunkedResponse ) {
112+ it ( "responds with a chunked response" , function ( ) {
113+ let middleware = fastbootMiddleware ( {
114+ distPath : fixture ( 'basic-app' ) ,
115+ chunkedResponse
116+ } ) ;
117+ server = new TestHTTPServer ( middleware , { errorHandling : true } ) ;
118+
119+ return server . start ( )
120+ . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
121+ . then ( ( { body, _, headers } ) => {
122+ expect ( headers [ 'transfer-encoding' ] ) . to . eq ( 'chunked' ) ;
123+ expect ( body ) . to . match ( / W e l c o m e t o E m b e r / ) ;
124+ } ) ;
125+ } ) ;
126+ }
140127
141- return server . start ( )
142- . then ( ( ) => server . request ( '/' ) )
143- . then ( html => {
144- expect ( html ) . to . not . match ( / e r r o r / ) ;
128+ it ( "returns 404 when navigating to a URL that doesn't exist" , function ( ) {
129+ let middleware = fastbootMiddleware ( {
130+ distPath : fixture ( 'basic-app' ) ,
131+ chunkedResponse
145132 } ) ;
146- } ) ;
133+ server = new TestHTTPServer ( middleware ) ;
147134
148- it ( "propagates to error handling middleware" , function ( ) {
149- let middleware = fastbootMiddleware ( {
150- distPath : fixture ( 'rejected-promise' ) ,
151- resilient : true
135+ return server . start ( )
136+ . then ( ( ) => server . request ( '/foo-bar-baz/non-existent' ) )
137+ . catch ( ( result ) => {
138+ expect ( result . statusCode ) . to . equal ( 404 ) ;
139+ } ) ;
152140 } ) ;
153- server = new TestHTTPServer ( middleware , { errorHandling : true } ) ;
154-
155- return server . start ( )
156- . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
157- . then ( ( { body, statusCode, headers } ) => {
158- expect ( statusCode ) . to . equal ( 200 ) ;
159- expect ( headers [ 'x-test-error' ] ) . to . match ( / e r r o r h a n d l e r c a l l e d / ) ;
160- expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
141+
142+ it ( "returns a 500 error if an error occurs" , function ( ) {
143+ let middleware = fastbootMiddleware ( {
144+ distPath : fixture ( 'rejected-promise' ) ,
145+ chunkedResponse
161146 } ) ;
162- } ) ;
147+ server = new TestHTTPServer ( middleware ) ;
163148
164- it ( "is does not propagate errors when and there is no error handling middleware" , function ( ) {
165- let middleware = fastbootMiddleware ( {
166- distPath : fixture ( 'rejected-promise' ) ,
167- resilient : true ,
149+ return server . start ( )
150+ . then ( ( ) => server . request ( '/' ) )
151+ . catch ( err => {
152+ expect ( err . message ) . to . match ( / R e j e c t e d o n p u r p o s e / ) ;
153+ } ) ;
168154 } ) ;
169- server = new TestHTTPServer ( middleware , { errorHandling : false } ) ;
170-
171- return server . start ( )
172- . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
173- . then ( ( { body, statusCode, headers } ) => {
174- expect ( statusCode ) . to . equal ( 200 ) ;
175- expect ( headers [ 'x-test-error' ] ) . to . not . match ( / e r r o r h a n d l e r c a l l e d / ) ;
176- expect ( body ) . to . not . match ( / e r r o r / ) ;
177- expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
155+
156+ describe ( 'when reslient mode is enabled' , function ( ) {
157+ it ( "renders no FastBoot markup" , function ( ) {
158+ let middleware = fastbootMiddleware ( {
159+ distPath : fixture ( 'rejected-promise' ) ,
160+ resilient : true ,
161+ chunkedResponse
162+ } ) ;
163+ server = new TestHTTPServer ( middleware ) ;
164+
165+ return server . start ( )
166+ . then ( ( ) => server . request ( '/' ) )
167+ . then ( html => {
168+ expect ( html ) . to . not . match ( / e r r o r / ) ;
169+ } ) ;
178170 } ) ;
179- } ) ;
180171
181- it ( "allows post-fastboot middleware to recover the response when it fails" , function ( ) {
182- let middleware = fastbootMiddleware ( {
183- distPath : fixture ( 'rejected-promise' ) ,
184- resilient : true
185- } ) ;
186- server = new TestHTTPServer ( middleware , { recoverErrors : true } ) ;
187-
188- return server . start ( )
189- . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
190- . then ( ( { body, statusCode, headers } ) => {
191- expect ( statusCode ) . to . equal ( 200 ) ;
192- expect ( headers [ 'x-test-recovery' ] ) . to . match ( / r e c o v e r e d r e s p o n s e / ) ;
193- expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
172+ it ( "propagates to error handling middleware" , function ( ) {
173+ let middleware = fastbootMiddleware ( {
174+ distPath : fixture ( 'rejected-promise' ) ,
175+ resilient : true ,
176+ chunkedResponse
177+ } ) ;
178+ server = new TestHTTPServer ( middleware , { errorHandling : true } ) ;
179+
180+ return server . start ( )
181+ . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
182+ . then ( ( { body, statusCode, headers } ) => {
183+ expect ( statusCode ) . to . equal ( 200 ) ;
184+ expect ( headers [ 'x-test-error' ] ) . to . match ( / e r r o r h a n d l e r c a l l e d / ) ;
185+ expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
186+ } ) ;
187+ } ) ;
188+
189+ it ( "is does not propagate errors when and there is no error handling middleware" , function ( ) {
190+ let middleware = fastbootMiddleware ( {
191+ distPath : fixture ( 'rejected-promise' ) ,
192+ resilient : true ,
193+ chunkedResponse
194+ } ) ;
195+ server = new TestHTTPServer ( middleware , { errorHandling : false } ) ;
196+
197+ return server . start ( )
198+ . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
199+ . then ( ( { body, statusCode, headers } ) => {
200+ expect ( statusCode ) . to . equal ( 200 ) ;
201+ expect ( headers [ 'x-test-error' ] ) . to . not . match ( / e r r o r h a n d l e r c a l l e d / ) ;
202+ expect ( body ) . to . not . match ( / e r r o r / ) ;
203+ expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
204+ } ) ;
194205 } ) ;
195- } ) ;
196- } ) ;
197206
198- describe ( 'when reslient mode is disabled' , function ( ) {
199- it ( "propagates to error handling middleware" , function ( ) {
200- let middleware = fastbootMiddleware ( {
201- distPath : fixture ( 'rejected-promise' ) ,
202- resilient : false ,
207+ it ( "allows post-fastboot middleware to recover the response when it fails" , function ( ) {
208+ let middleware = fastbootMiddleware ( {
209+ distPath : fixture ( 'rejected-promise' ) ,
210+ resilient : true ,
211+ chunkedResponse
212+ } ) ;
213+ server = new TestHTTPServer ( middleware , { recoverErrors : true } ) ;
214+
215+ return server . start ( )
216+ . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
217+ . then ( ( { body, statusCode, headers } ) => {
218+ expect ( statusCode ) . to . equal ( 200 ) ;
219+ expect ( headers [ 'x-test-recovery' ] ) . to . match ( / r e c o v e r e d r e s p o n s e / ) ;
220+ expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
221+ } ) ;
222+ } ) ;
203223 } ) ;
204- server = new TestHTTPServer ( middleware , { errorHandling : true } ) ;
205224
206- return server . start ( )
207- . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
208- . catch ( ( { statusCode, response : { headers } } ) => {
209- expect ( statusCode ) . to . equal ( 500 ) ;
210- expect ( headers [ 'x-test-error' ] ) . to . match ( / e r r o r h a n d l e r c a l l e d / ) ;
225+ describe ( 'when reslient mode is disabled' , function ( ) {
226+ it ( "propagates to error handling middleware" , function ( ) {
227+ let middleware = fastbootMiddleware ( {
228+ distPath : fixture ( 'rejected-promise' ) ,
229+ resilient : false ,
230+ chunkedResponse
231+ } ) ;
232+ server = new TestHTTPServer ( middleware , { errorHandling : true } ) ;
233+
234+ return server . start ( )
235+ . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
236+ . catch ( ( { statusCode, response : { headers } } ) => {
237+ expect ( statusCode ) . to . equal ( 500 ) ;
238+ expect ( headers [ 'x-test-error' ] ) . to . match ( / e r r o r h a n d l e r c a l l e d / ) ;
239+ } ) ;
211240 } ) ;
212- } ) ;
213241
214- it ( "allows post-fastboot middleware to recover the response when it fails" , function ( ) {
215- let middleware = fastbootMiddleware ( {
216- distPath : fixture ( 'rejected-promise' ) ,
217- resilient : false
218- } ) ;
219- server = new TestHTTPServer ( middleware , { recoverErrors : true } ) ;
220-
221- return server . start ( )
222- . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
223- . then ( ( { body, statusCode, headers } ) => {
224- expect ( statusCode ) . to . equal ( 200 ) ;
225- expect ( headers [ 'x-test-recovery' ] ) . to . match ( / r e c o v e r e d r e s p o n s e / ) ;
226- expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
242+ it ( "allows post-fastboot middleware to recover the response when it fails" , function ( ) {
243+ let middleware = fastbootMiddleware ( {
244+ distPath : fixture ( 'rejected-promise' ) ,
245+ resilient : false ,
246+ chunkedResponse
247+ } ) ;
248+ server = new TestHTTPServer ( middleware , { recoverErrors : true } ) ;
249+
250+ return server . start ( )
251+ . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
252+ . then ( ( { body, statusCode, headers } ) => {
253+ expect ( statusCode ) . to . equal ( 200 ) ;
254+ expect ( headers [ 'x-test-recovery' ] ) . to . match ( / r e c o v e r e d r e s p o n s e / ) ;
255+ expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
256+ } ) ;
227257 } ) ;
258+ } ) ;
228259 } ) ;
229260 } ) ;
230-
231261} ) ;
0 commit comments