From 4ad2d581d1d50c7414c5c72746a7c5fc435e0dca Mon Sep 17 00:00:00 2001 From: Jamie Lennox Date: Mon, 30 Sep 2013 10:36:03 +1000 Subject: [PATCH] Add AssertRequestHeaderEqual test helper and make use of it This will be a fairly common pattern and so should be a helper of its own. Change-Id: Ic06add6dfe40c7d3ab88dfdd99a9087fdebd9b67 --- keystoneclient/tests/test_http.py | 26 +++++++++----------------- keystoneclient/tests/utils.py | 9 +++++++++ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/keystoneclient/tests/test_http.py b/keystoneclient/tests/test_http.py index 213864415..4beef3455 100644 --- a/keystoneclient/tests/test_http.py +++ b/keystoneclient/tests/test_http.py @@ -16,7 +16,6 @@ import httpretty import six -import testtools from testtools import matchers from keystoneclient import exceptions @@ -72,11 +71,8 @@ class ClientTest(utils.TestCase): self.assertEqual(httpretty.last_request().method, 'GET') self.assertEqual(httpretty.last_request().path, '/hi') - req_headers = httpretty.last_request().headers - - self.assertEqual(req_headers.getheader('X-Auth-Token'), 'token') - self.assertEqual(req_headers.getheader('User-Agent'), - httpclient.USER_AGENT) + self.assertRequestHeaderEqual('X-Auth-Token', 'token') + self.assertRequestHeaderEqual('User-Agent', httpclient.USER_AGENT) # Automatic JSON parsing self.assertEqual(body, {"hi": "there"}) @@ -118,13 +114,9 @@ class ClientTest(utils.TestCase): self.assertEqual(httpretty.last_request().method, 'POST') self.assertEqual(httpretty.last_request().body, '[1, 2, 3]') - req_headers = httpretty.last_request().headers - - self.assertEqual(req_headers.getheader('X-Auth-Token'), 'token') - self.assertEqual(req_headers.getheader('Content-Type'), - 'application/json') - self.assertEqual(req_headers.getheader('User-Agent'), - httpclient.USER_AGENT) + self.assertRequestHeaderEqual('X-Auth-Token', 'token') + self.assertRequestHeaderEqual('Content-Type', 'application/json') + self.assertRequestHeaderEqual('User-Agent', httpclient.USER_AGENT) @httpretty.activate def test_forwarded_for(self): @@ -136,8 +128,8 @@ class ClientTest(utils.TestCase): self.stub_url(httpretty.GET) cl.request(self.TEST_URL, 'GET') - self.assertEqual(httpretty.last_request().headers['Forwarded'], - "for=%s;by=%s" % (ORIGINAL_IP, httpclient.USER_AGENT)) + forwarded = "for=%s;by=%s" % (ORIGINAL_IP, httpclient.USER_AGENT) + self.assertRequestHeaderEqual('Forwarded', forwarded) def test_client_deprecated(self): # Can resolve symbols from the keystoneclient.client module. @@ -153,7 +145,7 @@ class ClientTest(utils.TestCase): client.HTTPClient -class BasicRequestTests(testtools.TestCase): +class BasicRequestTests(utils.TestCase): url = 'http://keystone.test.com/' @@ -196,7 +188,7 @@ class BasicRequestTests(testtools.TestCase): self.request(headers=headers) for k, v in six.iteritems(headers): - self.assertEqual(httpretty.last_request().headers[k], v) + self.assertRequestHeaderEqual(k, v) for header in six.iteritems(headers): self.assertThat(self.logger.debug_log, diff --git a/keystoneclient/tests/utils.py b/keystoneclient/tests/utils.py index 620ec6bb3..a528a9eae 100644 --- a/keystoneclient/tests/utils.py +++ b/keystoneclient/tests/utils.py @@ -72,6 +72,15 @@ class TestCase(testtools.TestCase): def assertQueryStringIs(self, val): self.assertEqual(httpretty.last_request().querystring, val) + def assertRequestHeaderEqual(self, name, val): + """Verify that the last request made contains a header and its value + + The request must have already been made and httpretty must have been + activated for the request. + """ + headers = httpretty.last_request().headers + self.assertEqual(headers.getheader(name), val) + if tuple(sys.version_info)[0:2] < (2, 7):