def setUp(self): self.set_response_data("", http.OK, {}) self.server = MockHttpServer(handler=self.handle_request) return self.server.start()
class HttpUtilsTestCase(unittest.TestCase): def setUp(self): self.set_response_data("", http.OK, {}) self.server = MockHttpServer(handler=self.handle_request) return self.server.start() def tearDown(self): return self.server.stop() def set_response_data(self, body, code, headers): self.response_body = body self.response_code = code self.response_headers = headers @inlineCallbacks def assert_last_request(self, args, data="", headers={}, method='GET'): request = yield self.server.queue.get() self.assertEqual(request.content.read(), data) self.assertEqual(request.method, method) self.assertEqual(request.args, args) for k, v in headers.iteritems(): self.assertEqual(request.requestHeaders.getRawHeaders(k), v) def handle_request(self, request): request.setResponseCode(self.response_code) for h_name, h_values in self.response_headers.iteritems(): request.responseHeaders.setRawHeaders(h_name, h_values) self.server.queue.put(request) return self.response_body def assert_happy_response(self, body, code=http.OK, headers={}): self.set_response_data(body, code, headers) d = utils.http_request(self.server.url) def assert_response(response): self.assertEqual(response['body'], body) self.assertEqual(response['status'], str(code)) for k, v in headers.iteritems(): self.assertEqual(response['headers'][k], v) d.addCallback(assert_response) return d def assert_response(self, body, code=http.OK, headers={}): self.set_response_data(body, code, headers) d = utils.http_request(self.server.url) def got_response(response): self.assertEqual(response['body'], body) self.assertEqual(response['status'], str(code)) for k, v in headers.iteritems(): self.assertEqual(response['headers'][k], v) d.addCallback(got_response) return d @inlineCallbacks def test_http_request_response_handling(self): yield self.assert_response("") yield self.assert_response( json.dumps({'a': [1, 2]}), code=http.CREATED, headers={'luke': ['Skywalker']}) def test_http_request_for_GET(self): utils.http_request( "%s?%s" % (self.server.url, urlencode({'a': 'lerp', 'b': 'larp'})), headers={'Han': 'Solo', 'Mon': 'Mothma'}, method='GET') return self.assert_last_request( args={'a': ['lerp'], 'b': ['larp']}, headers={'Han': ['Solo'], 'Mon': ['Mothma']}, method='GET') def test_http_request_for_POST(self): data = json.dumps({'a': 'lerp', 'b': 'larp'}) utils.http_request(self.server.url, data=data, method='POST') return self.assert_last_request(args={}, data=data, method='POST') def test_http_request_for_DELETE(self): data = json.dumps({'a': 'lerp', 'b': 'larp'}) utils.http_request(self.server.url, data=data, method='DELETE') return self.assert_last_request(args={}, data=data, method='DELETE')