Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
 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()
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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()
Ejemplo n.º 6
0
    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()
Ejemplo n.º 7
0
    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