def test_response_headers(self): key = 'test' headers = {key: 'this'} self._simulate('GET', '/headers', headers=headers) response_headers = types.Headers(dict(self.srmock.headers)) self.assertIn(key, response_headers) self.assertEqual(headers[key], response_headers[key])
def _simulate(self, method, url, query_string=None, body=None, headers=None, binary_response=False): kwargs = {} headers = headers or {} if query_string: kwargs["query_string"] = query_string if body is not None: content_type = headers.get(common.CONTENT_TYPE, common.TYPE_JSON) kwargs["body"] = json.dumps( body) if common.TYPE_JSON in content_type else body headers.update({common.CONTENT_TYPE: content_type}) kwargs["headers"] = headers response = self.simulate_request(url, method=method, **kwargs) if isinstance(response, collections.Iterable): result = six.b('').join(response) else: result = response if not binary_response: result = result.decode(common.ENCODING) headers = types.Headers(dict(self.srmock.headers)) if not binary_response and common.TYPE_JSON in headers.get( common.CONTENT_TYPE, ''): result = json.loads(result) return result
def test_keywords(self): url = "/keywords" expected = {"arg": 1, "default": 2, "c": 3, "d": 4} expected_no_default = expected.copy() expected_no_default["default"] = keywords.Keywords.DEFAULT logging.info("Testing keywords with GET") get = self._simulate( "GET", url, query_string="arg=1&default=2&c=3&d=4", ) self.assertDictEqual({k: int(v) for k, v in six.iteritems(get)}, expected) logging.info("Testing keywords with GET and no default") get = self._simulate( "GET", url, query_string="arg=1&c=3&d=4", ) self.assertDictEqual({k: int(v) for k, v in six.iteritems(get)}, expected_no_default) for method in ("POST", "PUT"): logging.info("Testing keywords with %s", method) ret = self._simulate( method, url, body=expected, ) self.assertDictEqual(ret, expected) no_default = expected.copy() del no_default["default"] ret = self._simulate( method, url, body=no_default, ) self.assertDictEqual(ret, expected_no_default) logging.info("Testing keywords with GET and headers") response = self._simulate( "GET", "{}/headers".format(url), query_string="arg=1&default=2&c=3", headers={"d": str(expected["d"])}, ) self.assertEqual(int(response["arg"]), expected["arg"]) self.assertEqual(int(response["default"]), expected["default"]) self.assertEqual(int(response["c"]), expected["c"]) headers = types.Headers(response["headers"]) self.assertEqual(int(headers["d"]), expected["d"])