Esempio n. 1
0
    def _test_signed_request_ec2_POST_DescribeInstances(self):
        from urllib.parse import unquote
        from faws.sign.v2 import signed_request_basic
        creds = Creds(
            'AKIAIZITJ2OY2UJKRWHQ',
            'ZfDPmZWdZcEAH293+XPAxn386zf2lQIvRgakag3m',
            'us-east-1',
            )
        method = 'POST'
        url = 'https://us-east-1.ec2.amazonaws.com'
        params = {
            'Action' : 'DescribeInstances',
            'Version' : '2013-02-01',
            }
        timestamp_val = unquote('2013-05-09T23%3A23%3A03.963Z')

        expected_string_to_sign_value = '''POST
us-east-1.ec2.amazonaws.com
/

AWSAccessKeyId=AKIAIZITJ2OY2UJKRWHQ&Action=DescribeInstances&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-05-09T23%3A23%3A03.963Z&Version=2013-02-01'''
        expected_url = 'http://us-east-1.ec2.amazonaws.com/'
        expected_payload = 'Action=DescribeInstances&SignatureMethod=HmacSHA256&AWSAccessKeyId=AKIAIZITJ2OY2UJKRWHQ&SignatureVersion=2&Version=2013-02-01&Signature=qaiwRgKRzlnHWGlR2ANhD0vLclYBJeghGkush0SD1C4%3D&Timestamp=2013-05-09T23%3A23%3A03.963Z'
        expected_signature = unquote('VdZti1oSszsAiCYVrMGKx3nxbXiiXBIlL4V80%2FkyfO0%3D')
        expected_params_nosig = {
            'Action'           : 'DescribeInstances',
            'Version'          : '2013-02-01',
            'Timestamp'        : timestamp_val,
            'SignatureMethod'  : 'HmacSHA256',
            'SignatureVersion' : '2',
            'AWSAccessKeyId'   : creds.access_key,
            }
        
        sr = signed_request_basic(method, url, params, creds, timestamp_val)

        sr_params_nosig = dict(sr.aux['sig_params'])
        del sr_params_nosig['Signature']
        
        self.assertDictEqual(expected_params_nosig, sr_params_nosig)
        self.assertSequenceEqual(expected_string_to_sign_value, sr.aux['string_to_sign_value'])
        self.assertSequenceEqual(expected_signature, sr.aux['signature'])
        self.assertUrlEqual(expected_url, sr.url)
Esempio n. 2
0
    def test_signed_request(self):
        # taken from http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html
        from urllib.parse import unquote
        from faws.sign.v2 import signed_request_basic
        method = 'GET'
        url = 'https://elasticmapreduce.amazonaws.com'
        params = {
            'Action' : 'DescribeJobFlows',
            'Version' : '2009-03-31',
            }
        timestamp_val = '2011-10-03T15:19:30'

        expected_string_to_sign_value = '''GET
elasticmapreduce.amazonaws.com
/
AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Action=DescribeJobFlows&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2011-10-03T15%3A19%3A30&Version=2009-03-31'''
        expected_url = 'https://elasticmapreduce.amazonaws.com?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Action=DescribeJobFlows&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2011-10-03T15%3A19%3A30&Version=2009-03-31&Signature=i91nKc4PWAt0JJIdXwz9HxZCJDdiy6cf%2FMj6vPxyYIs%3D'
        expected_signature = unquote('i91nKc4PWAt0JJIdXwz9HxZCJDdiy6cf%2FMj6vPxyYIs%3D')
        expected_params_nosig = {
            'Action'           : 'DescribeJobFlows',
            'Version'          : '2009-03-31',
            'Timestamp'        : timestamp_val,
            'SignatureMethod'  : 'HmacSHA256',
            'SignatureVersion' : '2',
            'AWSAccessKeyId'   : TEST_CREDS.access_key,
            }
        
        sr = signed_request_basic(method, url, params, TEST_CREDS, timestamp_val)

        sr_params_nosig = dict(sr.aux['sig_params'])
        del sr_params_nosig['Signature']
        
        self.assertDictEqual(expected_params_nosig, sr_params_nosig)
        self.assertSequenceEqual(expected_string_to_sign_value, sr.aux['string_to_sign_value'])
        self.assertSequenceEqual(expected_signature, sr.aux['signature'])
        self.assertUrlEqual(expected_url, sr.url)