Please find attached a patch to make urlutils' unit test only run the hashlib test if hashlib is installed. Right now it always runs the test, and fails when hashlib isn't installed - despite the fact that hashlib isn't a dependency (actually it's not mentioned in INSTALL at all.)
Joe
From 85b4c526c929696997b5831234651b99d2d1cbaa Mon Sep 17 00:00:00 2001 From: Joe Blaylock <[email protected]> Date: Wed, 4 May 2011 15:25:01 -0700 Subject: [PATCH] Urlutils: only unit test testable code * Causes hashlib unit tests to silently skip running rather than to fail. --- modules/miscutil/lib/urlutils_tests.py | 106 ++++++++++++++++---------------- 1 files changed, 52 insertions(+), 54 deletions(-) diff --git a/modules/miscutil/lib/urlutils_tests.py b/modules/miscutil/lib/urlutils_tests.py index f33d5ad..daa54ec 100644 --- a/modules/miscutil/lib/urlutils_tests.py +++ b/modules/miscutil/lib/urlutils_tests.py @@ -84,60 +84,58 @@ class TestUrls(unittest.TestCase): 'b': ('str', 2)}), "?b%26=2%3D&%3A=%3F%26&b=2") - def test_signed_aws_request_creation(self): - """urlutils - test creation of signed AWS requests""" - - if not HASHLIB_IMPORTED: - self.fail("SKIPPED: Hashlib not available, test skipped.") - - signed_aws_request_url = create_AWS_request_url("http://webservices.amazon.com/onca/xml", - {'AWSAccessKeyId': '00000000000000000000', - 'Service': 'AWSECommerceService', - 'Operation': 'ItemLookup', - 'ItemId': '0679722769', - 'ResponseGroup': 'ItemAttributes,Offers,Images,Reviews', - 'Version': '2009-01-06'}, - "1234567890", - _timestamp="2009-01-01T12:00:00Z") - - # Are we at least acccessing correct base url? - self.assert_(signed_aws_request_url.startswith("http://webservices.amazon.com/onca/xml")) - - # Check that parameters with special characters (, :) get correctly - # encoded/decoded - ## Note: using parse_qs() url-decodes the string - self.assertEqual(parse_qs(signed_aws_request_url)["ResponseGroup"], - ['ItemAttributes,Offers,Images,Reviews']) - self.assert_('ItemAttributes%2COffers%2CImages%2CReviews' \ - in signed_aws_request_url) - - self.assertEqual(parse_qs(signed_aws_request_url)["Timestamp"], - ['2009-01-01T12:00:00Z']) - - # Check signature exists and is correct - self.assertEqual(parse_qs(signed_aws_request_url)["Signature"], - ['Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=']) - self.assert_('Nace%2BU3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg%3D&Operation' \ - in signed_aws_request_url) - - # Continute with an additional request - signed_aws_request_url_2 = \ - create_AWS_request_url("http://ecs.amazonaws.co.uk/onca/xml", - {'AWSAccessKeyId': '00000000000000000000', - 'Actor': 'Johnny Depp', - 'AssociateTag': 'mytag-20', - 'Operation': 'ItemSearch', - 'ResponseGroup': 'ItemAttributes,Offers,Images,Reviews,Variations', - 'SearchIndex': 'DVD', - 'Service': 'AWSECommerceService', - 'Sort': 'salesrank', - 'Version': '2009-01-01'}, - "1234567890", - _timestamp="2009-01-01T12:00:00Z") - # Check signature exists and is correct - self.assertEqual(parse_qs(signed_aws_request_url_2)["Signature"], - ['TuM6E5L9u/uNqOX09ET03BXVmHLVFfJIna5cxXuHxiU=']) - + if HASHLIB_IMPORTED: + def test_signed_aws_request_creation(self): + """urlutils - test creation of signed AWS requests""" + + signed_aws_request_url = create_AWS_request_url("http://webservices.amazon.com/onca/xml", + {'AWSAccessKeyId': '00000000000000000000', + 'Service': 'AWSECommerceService', + 'Operation': 'ItemLookup', + 'ItemId': '0679722769', + 'ResponseGroup': 'ItemAttributes,Offers,Images,Reviews', + 'Version': '2009-01-06'}, + "1234567890", + _timestamp="2009-01-01T12:00:00Z") + + # Are we at least acccessing correct base url? + self.assert_(signed_aws_request_url.startswith("http://webservices.amazon.com/onca/xml")) + + # Check that parameters with special characters (, :) get correctly + # encoded/decoded + ## Note: using parse_qs() url-decodes the string + self.assertEqual(parse_qs(signed_aws_request_url)["ResponseGroup"], + ['ItemAttributes,Offers,Images,Reviews']) + self.assert_('ItemAttributes%2COffers%2CImages%2CReviews' \ + in signed_aws_request_url) + + self.assertEqual(parse_qs(signed_aws_request_url)["Timestamp"], + ['2009-01-01T12:00:00Z']) + + # Check signature exists and is correct + self.assertEqual(parse_qs(signed_aws_request_url)["Signature"], + ['Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=']) + self.assert_('Nace%2BU3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg%3D&Operation' \ + in signed_aws_request_url) + + # Continute with an additional request + signed_aws_request_url_2 = \ + create_AWS_request_url("http://ecs.amazonaws.co.uk/onca/xml", + {'AWSAccessKeyId': '00000000000000000000', + 'Actor': 'Johnny Depp', + 'AssociateTag': 'mytag-20', + 'Operation': 'ItemSearch', + 'ResponseGroup': 'ItemAttributes,Offers,Images,Reviews,Variations', + 'SearchIndex': 'DVD', + 'Service': 'AWSECommerceService', + 'Sort': 'salesrank', + 'Version': '2009-01-01'}, + "1234567890", + _timestamp="2009-01-01T12:00:00Z") + # Check signature exists and is correct + self.assertEqual(parse_qs(signed_aws_request_url_2)["Signature"], + ['TuM6E5L9u/uNqOX09ET03BXVmHLVFfJIna5cxXuHxiU=']) + def test_same_urls_p(self): """urlutils - test checking URLs equality""" self.assertEqual(same_urls_p(CFG_SITE_URL + '?a=b&c=d&e=f', -- 1.7.4.1
