@@ -65,68 +65,6 @@ describe("FastBoot", function() {
6565 } ) ;
6666 } ) ;
6767
68- it ( "renders no FastBoot markup if the resilient flag is set" , function ( ) {
69- let middleware = fastbootMiddleware ( {
70- distPath : fixture ( 'rejected-promise' ) ,
71- resilient : true
72- } ) ;
73- server = new TestHTTPServer ( middleware ) ;
74-
75- return server . start ( )
76- . then ( ( ) => server . request ( '/' ) )
77- . then ( html => {
78- expect ( html ) . to . not . match ( / e r r o r / ) ;
79- } ) ;
80- } ) ;
81-
82- it ( "propagates to error handling middleware if the resilient flag is set" , function ( ) {
83- let middleware = fastbootMiddleware ( {
84- distPath : fixture ( 'rejected-promise' ) ,
85- resilient : true
86- } ) ;
87- server = new TestHTTPServer ( middleware , { errorHandling : true } ) ;
88-
89- return server . start ( )
90- . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
91- . then ( ( { body, statusCode, headers } ) => {
92- expect ( statusCode ) . to . equal ( 200 ) ;
93- 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 / ) ;
94- expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
95- } ) ;
96- } ) ;
97-
98- it ( "propagates to error handling middleware if the resilient flag is not set" , function ( ) {
99- let middleware = fastbootMiddleware ( {
100- distPath : fixture ( 'rejected-promise' ) ,
101- resilient : false ,
102- } ) ;
103- server = new TestHTTPServer ( middleware , { errorHandling : true } ) ;
104-
105- return server . start ( )
106- . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
107- . catch ( ( { statusCode, response : { headers } } ) => {
108- expect ( statusCode ) . to . equal ( 500 ) ;
109- 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 / ) ;
110- } ) ;
111- } ) ;
112-
113- it ( "is does not propagate errors when the reslient flag is set and there is no error handling middleware" , function ( ) {
114- let middleware = fastbootMiddleware ( {
115- distPath : fixture ( 'rejected-promise' ) ,
116- resilient : true ,
117- } ) ;
118- server = new TestHTTPServer ( middleware , { errorHandling : false } ) ;
119-
120- return server . start ( )
121- . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
122- . then ( ( { body, statusCode, headers } ) => {
123- expect ( statusCode ) . to . equal ( 200 ) ;
124- 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 / ) ;
125- expect ( body ) . to . not . match ( / e r r o r / ) ;
126- expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
127- } ) ;
128- } ) ;
129-
13068 it ( "can be provided with a custom FastBoot instance" , function ( ) {
13169 let fastboot = new FastBoot ( {
13270 distPath : fixture ( 'basic-app' )
@@ -181,4 +119,103 @@ describe("FastBoot", function() {
181119 } ) ;
182120 }
183121 } ) ;
122+
123+ describe ( 'when reslient mode is enabled' , function ( ) {
124+ it ( "renders no FastBoot markup" , function ( ) {
125+ let middleware = fastbootMiddleware ( {
126+ distPath : fixture ( 'rejected-promise' ) ,
127+ resilient : true
128+ } ) ;
129+ server = new TestHTTPServer ( middleware ) ;
130+
131+ return server . start ( )
132+ . then ( ( ) => server . request ( '/' ) )
133+ . then ( html => {
134+ expect ( html ) . to . not . match ( / e r r o r / ) ;
135+ } ) ;
136+ } ) ;
137+
138+ it ( "propagates to error handling middleware" , function ( ) {
139+ let middleware = fastbootMiddleware ( {
140+ distPath : fixture ( 'rejected-promise' ) ,
141+ resilient : true
142+ } ) ;
143+ server = new TestHTTPServer ( middleware , { errorHandling : true } ) ;
144+
145+ return server . start ( )
146+ . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
147+ . then ( ( { body, statusCode, headers } ) => {
148+ expect ( statusCode ) . to . equal ( 200 ) ;
149+ 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 / ) ;
150+ expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
151+ } ) ;
152+ } ) ;
153+
154+ it ( "is does not propagate errors when and there is no error handling middleware" , function ( ) {
155+ let middleware = fastbootMiddleware ( {
156+ distPath : fixture ( 'rejected-promise' ) ,
157+ resilient : true ,
158+ } ) ;
159+ server = new TestHTTPServer ( middleware , { errorHandling : false } ) ;
160+
161+ return server . start ( )
162+ . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
163+ . then ( ( { body, statusCode, headers } ) => {
164+ expect ( statusCode ) . to . equal ( 200 ) ;
165+ 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 / ) ;
166+ expect ( body ) . to . not . match ( / e r r o r / ) ;
167+ expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
168+ } ) ;
169+ } ) ;
170+
171+ it ( "allows post-fastboot middleware to recover the response when it fails" , function ( ) {
172+ let middleware = fastbootMiddleware ( {
173+ distPath : fixture ( 'rejected-promise' ) ,
174+ resilient : true
175+ } ) ;
176+ server = new TestHTTPServer ( middleware , { recoverErrors : true } ) ;
177+
178+ return server . start ( )
179+ . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
180+ . then ( ( { body, statusCode, headers } ) => {
181+ expect ( statusCode ) . to . equal ( 200 ) ;
182+ expect ( headers [ 'x-test-recovery' ] ) . to . match ( / r e c o v e r e d r e s p o n s e / ) ;
183+ expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
184+ } ) ;
185+ } ) ;
186+ } ) ;
187+
188+ describe ( 'when reslient mode is disabled' , function ( ) {
189+ it ( "propagates to error handling middleware" , function ( ) {
190+ let middleware = fastbootMiddleware ( {
191+ distPath : fixture ( 'rejected-promise' ) ,
192+ resilient : false ,
193+ } ) ;
194+ server = new TestHTTPServer ( middleware , { errorHandling : true } ) ;
195+
196+ return server . start ( )
197+ . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
198+ . catch ( ( { statusCode, response : { headers } } ) => {
199+ expect ( statusCode ) . to . equal ( 500 ) ;
200+ 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 / ) ;
201+ } ) ;
202+ } ) ;
203+
204+ it ( "allows post-fastboot middleware to recover the response when it fails" , function ( ) {
205+ let middleware = fastbootMiddleware ( {
206+ distPath : fixture ( 'rejected-promise' ) ,
207+ resilient : false
208+ } ) ;
209+ server = new TestHTTPServer ( middleware , { recoverErrors : true } ) ;
210+
211+ return server . start ( )
212+ . then ( ( ) => server . request ( '/' , { resolveWithFullResponse : true } ) )
213+ . then ( ( { body, statusCode, headers } ) => {
214+ expect ( statusCode ) . to . equal ( 200 ) ;
215+ expect ( headers [ 'x-test-recovery' ] ) . to . match ( / r e c o v e r e d r e s p o n s e / ) ;
216+ expect ( body ) . to . match ( / h e l l o w o r l d / ) ;
217+ } ) ;
218+ } ) ;
219+ } ) ;
220+
184221} ) ;
0 commit comments