示例#1
0
    def test_http_request_bytes(self):
        r = bind_http.HttpRequest(
            'get',
            'http://example.com/abc?a=1',
            headers=dict(aaa='zzz', bAb='xYz'),
            params=dict(a='b'),
            route_params={'route': 'param'},
            body_type=bind_meta.TypedDataKind.bytes,
            body=b'abc')

        self.assertEqual(r.method, 'GET')
        self.assertEqual(r.url, 'http://example.com/abc?a=1')
        self.assertEqual(r.params, {'a': 'b'})
        self.assertEqual(r.route_params, {'route': 'param'})

        with self.assertRaises(TypeError):
            r.params['a'] = 'z'

        self.assertEqual(r.get_body(), b'abc')

        with self.assertRaisesRegex(ValueError, 'does not contain valid JSON'):
            r.get_json()

        h = r.headers
        with self.assertRaises(AttributeError):
            r.headers = dict()

        self.assertEqual(h['aaa'], 'zzz')
        self.assertEqual(h['aaA'], 'zzz')
        self.assertEqual(h['bab'], 'xYz')
        self.assertEqual(h['BaB'], 'xYz')

        # test that request headers are read-only
        with self.assertRaises(TypeError):
            h['zzz'] = '123'
    def test_http_request_json(self):
        r = bind_http.HttpRequest('POST',
                                  'http://example.com/abc?a=1',
                                  headers={},
                                  params={},
                                  body_type=bind_meta.TypedDataKind.json,
                                  body='{"a":1}')

        self.assertEqual(r.method, 'POST')
        self.assertEqual(r.url, 'http://example.com/abc?a=1')
        self.assertEqual(r.params, {})

        self.assertEqual(r.get_body(), b'{"a":1}')
        self.assertEqual(r.get_json(), {'a': 1})