def test_json(self): deferred = Deferred() deferred.addCallback(lambda _: self.callbacks.add("success")) deferred.addErrback(lambda _: self.callbacks.add("failure")) twisted_headers = Headers({"Content-Type": ["application/json"]}) twisted_response = TWResponse( ("HTTP", 1, 1), 200, "OK", twisted_headers, None) request = Request( method="GET", url="/", kwargs={ "headers": { "Content-Type": "application/json"}, "data": None}) data = { os.urandom(6).encode("hex"): os.urandom(6).encode("hex"), os.urandom(6).encode("hex"): os.urandom(6).encode("hex") } r = Response(deferred, twisted_response, request) map(r.dataReceived, json.dumps(data)) r.connectionLost(responseDone) self.assertEqual(self.callbacks, set(["success"])) self.assertTrue(r._done) self.assertEqual(r.json(), data) return deferred
def test_json_early(self): deferred = Deferred() twisted_headers = Headers({"Content-Type": ["application/json"]}) twisted_response = TWResponse( ("HTTP", 1, 1), 200, "OK", twisted_headers, None) request = Request( method="GET", url="/", kwargs={ "headers": { "Content-Type": "application/json"}, "data": None}) r = Response(deferred, twisted_response, request) with self.assertRaises(RuntimeError): r.json()
def test_json_decoding_error(self): deferred = Deferred() twisted_headers = Headers({"Content-Type": ["application/json"]}) twisted_response = TWResponse( ("HTTP", 1, 1), 200, "OK", twisted_headers, None) request = Request( method="GET", url="/", kwargs={ "headers": { "Content-Type": "application/json"}, "data": None}) r = Response(deferred, twisted_response, request) r._done = True with self.assertRaisesRegexp(ValueError, re.compile( "No JSON object could be decoded")): r.json()
def test_data_received(self): request = Request( method="GET", url="/", kwargs={ "headers": { "Content-Type": "application/json"}, "data": None}) deferred = Deferred() twisted_headers = Headers({"Content-Type": ["application/json"]}) twisted_response = TWResponse( ("HTTP", 1, 1), 200, "OK", twisted_headers, None) r = Response(deferred, twisted_response, request) self.assertEqual(r._body, "") data = os.urandom(6).encode("hex") r.dataReceived(data) self.assertEqual(r._body, data)
def test_json_wrong_content_type(self): deferred = Deferred() twisted_headers = Headers({"Content-Type": ["text/html"]}) twisted_response = TWResponse( ("HTTP", 1, 1), 200, "OK", twisted_headers, None) request = Request( method="GET", url="/", kwargs={ "headers": { "Content-Type": "text/html"}, "data": None}) r = Response(deferred, twisted_response, request) r._done = True with self.assertRaisesRegexp( ValueError, re.compile("Not an application/json response\.")): r.json()
def test_data_early(self): deferred = Deferred() deferred.addCallback(lambda _: self.callbacks.add("success")) deferred.addErrback(lambda _: self.callbacks.add("failure")) twisted_headers = Headers({"Content-Type": ["application/json"]}) twisted_response = TWResponse( ("HTTP", 1, 1), 200, "OK", twisted_headers, None) request = Request( method="GET", url="/", kwargs={ "headers": { "Content-Type": "application/json"}, "data": None}) r = Response(deferred, twisted_response, request) with self.assertRaises(RuntimeError): r.data()
def test_connection_done(self): deferred = Deferred() deferred.addCallback(lambda _: self.callbacks.add("success")) deferred.addErrback(lambda _: self.callbacks.add("failure")) twisted_headers = Headers({"Content-Type": ["application/json"]}) twisted_response = TWResponse( ("HTTP", 1, 1), 200, "OK", twisted_headers, None) request = Request( method="GET", url="/", kwargs={ "headers": { "Content-Type": "application/json"}, "data": None}) r = Response(deferred, twisted_response, request) r.connectionLost(connectionDone) self.assertEqual(self.callbacks, set(["failure"])) self.assertFalse(r._done) return deferred