Updated AWS unit tests for the request signing mocks with the new method signatures.
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/57a0ca90 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/57a0ca90 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/57a0ca90 Branch: refs/heads/trunk Commit: 57a0ca90fe29fdc617cc62564325e8ae91c15e14 Parents: 4bde5af Author: anthony-shaw <anthony.p.s...@gmail.com> Authored: Sun Jan 3 21:01:23 2016 +1100 Committer: anthony-shaw <anthony.p.s...@gmail.com> Committed: Sun Jan 3 21:01:23 2016 +1100 ---------------------------------------------------------------------- libcloud/test/common/test_aws.py | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/57a0ca90/libcloud/test/common/test_aws.py ---------------------------------------------------------------------- diff --git a/libcloud/test/common/test_aws.py b/libcloud/test/common/test_aws.py index 6661f7d..c855534 100644 --- a/libcloud/test/common/test_aws.py +++ b/libcloud/test/common/test_aws.py @@ -53,10 +53,10 @@ class AWSRequestSignerAlgorithmV4TestCase(LibcloudTestCase): 'SignedHeaders=accept-encoding;host;user-agent;x-amz-date, ' 'Signature=f9868f8414b3c3f856c7955019cc1691265541f5162b9b772d26044280d39bd3') - def test_v4_signature_raises_error_if_request_method_not_GET(self): + def test_v4_signature_raises_error_if_request_method_not_GET_OR_POST(self): with self.assertRaises(Exception): self.signer._get_authorization_v4_header(params={}, headers={}, - dt=self.now, method='POST') + dt=self.now, method='PUT') def test_v4_signature_contains_user_id(self): sig = self.signer._get_authorization_v4_header(params={}, headers={}, @@ -97,7 +97,7 @@ class AWSRequestSignerAlgorithmV4TestCase(LibcloudTestCase): mock_get_key.return_value = 'my_signing_key' mock_get_string.return_value = 'my_string_to_sign' sig = self.signer._get_signature({}, {}, self.now, - method='GET', path='/') + method='GET', path='/', data=None) self.assertEqual(sig, 'H|my_signing_key|my_string_to_sign') @@ -105,7 +105,7 @@ class AWSRequestSignerAlgorithmV4TestCase(LibcloudTestCase): with mock.patch('hashlib.sha256') as mock_sha256: mock_sha256.return_value.hexdigest.return_value = 'chksum_of_canonical_request' to_sign = self.signer._get_string_to_sign({}, {}, self.now, - method='GET', path='/') + method='GET', path='/', data=None) self.assertEqual(to_sign, 'AWS4-HMAC-SHA256\n' @@ -216,7 +216,7 @@ class AWSRequestSignerAlgorithmV4TestCase(LibcloudTestCase): def test_get_payload_hash_returns_digest_of_empty_string_for_GET_requests(self): SignedAWSConnection.method = 'GET' - self.assertEqual(self.signer._get_payload_hash(), + self.assertEqual(self.signer._get_payload_hash(method='GET'), 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855') def test_get_canonical_request(self): @@ -224,7 +224,8 @@ class AWSRequestSignerAlgorithmV4TestCase(LibcloudTestCase): {'Action': 'DescribeInstances', 'Version': '2013-10-15'}, {'Accept-Encoding': 'gzip,deflate', 'User-Agent': 'My-UA'}, method='GET', - path='/my_action/' + path='/my_action/', + data=None ) self.assertEqual(req, 'GET\n' '/my_action/\n' @@ -235,5 +236,22 @@ class AWSRequestSignerAlgorithmV4TestCase(LibcloudTestCase): 'accept-encoding;user-agent\n' 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855') + def test_post_canonical_request(self): + req = self.signer._get_canonical_request( + {'Action': 'DescribeInstances', 'Version': '2013-10-15'}, + {'Accept-Encoding': 'gzip,deflate', 'User-Agent': 'My-UA'}, + method='POST', + path='/my_action/', + data='{}' + ) + self.assertEqual(req, 'POST\n' + '/my_action/\n' + 'Action=DescribeInstances&Version=2013-10-15\n' + 'accept-encoding:gzip,deflate\n' + 'user-agent:My-UA\n' + '\n' + 'accept-encoding;user-agent\n' + '44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a') + if __name__ == '__main__': sys.exit(unittest.main())