@@ -41,6 +41,11 @@ class HelloWorld(HtmlResource):
4141 extra_headers = {'X-MyHeader' : 'my value' , 'Set-Cookie' : 'sessionid=ABCD' }
4242
4343
44+ class Http400Resource (HtmlResource ):
45+ status_code = 400
46+ html = "Website returns HTTP 400 error"
47+
48+
4449
4550class ManyCookies (Resource , object ):
4651 class SetMyCookie (HtmlResource ):
@@ -131,6 +136,37 @@ def start_requests(self):
131136 assert resp .data ['args' ]['foo' ] == 'bar'
132137
133138
139+ @requires_splash
140+ @inlineCallbacks
141+ def test_bad_request (settings ):
142+ class BadRequestSpider (ResponseSpider ):
143+ custom_settings = {'HTTPERROR_ALLOW_ALL' : True }
144+
145+ def start_requests (self ):
146+ yield SplashRequest (self .url , endpoint = 'execute' ,
147+ args = {'lua_source' : DEFAULT_SCRIPT , 'wait' : 'bar' })
148+
149+ class GoodRequestSpider (ResponseSpider ):
150+ custom_settings = {'HTTPERROR_ALLOW_ALL' : True }
151+
152+ def start_requests (self ):
153+ yield SplashRequest (self .url , endpoint = 'execute' ,
154+ args = {'lua_source' : DEFAULT_SCRIPT })
155+
156+
157+ items , url , crawler = yield crawl_items (BadRequestSpider , HelloWorld ,
158+ settings )
159+ resp = items [0 ]['response' ]
160+ assert resp .status == 400
161+ assert resp .splash_response_status == 400
162+
163+ items , url , crawler = yield crawl_items (GoodRequestSpider , Http400Resource ,
164+ settings )
165+ resp = items [0 ]['response' ]
166+ assert resp .status == 400
167+ assert resp .splash_response_status == 200
168+
169+
134170@requires_splash
135171@inlineCallbacks
136172def test_cookies (settings ):
0 commit comments