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})