Example #1
0
 def test_generate_presign_url_with_expire_time(self):
     signed_url = self.signer.generate_presigned_url(
         'http://test.com/foo.txt',
         date_less_than=datetime.datetime(2016, 1, 1))
     expected = (
         'http://test.com/foo.txt?Expires=1451606400&Signature=c2lnbmVk'
         '&Key-Pair-Id=MY_KEY_ID')
     assert_url_equal(signed_url, expected)
Example #2
0
 def test_generate_presign_url_with_expire_time(self):
     signed_url = self.signer.generate_presigned_url(
         'http://test.com/foo.txt',
         date_less_than=datetime.datetime(2016, 1, 1))
     expected = (
         'http://test.com/foo.txt?Expires=1451606400&Signature=c2lnbmVk'
         '&Key-Pair-Id=MY_KEY_ID')
     assert_url_equal(signed_url, expected)
Example #3
0
    def test_presigned_url_contains_no_content_type(self):
        timestamp = datetime(2017, 3, 22, 0, 0)
        with mock.patch('botocore.auth.datetime') as _datetime:
            _datetime.datetime.utcnow.return_value = timestamp
            url = self.client.generate_presigned_url('get_caller_identity', {})

        # There should be no 'content-type' in x-amz-signedheaders
        expected_url = (
            'https://sts.amazonaws.com/?Action=GetCallerIdentity&'
            'Version=2011-06-15&X-Amz-Algorithm=AWS4-HMAC-SHA256&'
            'X-Amz-Credential=access_key%2F20170322%2Fus-east-1%2Fsts%2F'
            'aws4_request&X-Amz-Date=20170322T000000Z&X-Amz-Expires=3600&'
            'X-Amz-SignedHeaders=host&X-Amz-Signature=767845d2ee858069a598d5f'
            '8b497b75c7d57356885b1b3dba46dbbc0fc62bf5a')
        assert_url_equal(url, expected_url)
Example #4
0
 def test_generate_presign_url_with_custom_policy(self):
     policy = self.signer.build_policy('foo',
                                       datetime.datetime(2016, 1, 1),
                                       date_greater_than=datetime.datetime(
                                           2015, 12, 1),
                                       ip_address='12.34.56.78/9')
     signed_url = self.signer.generate_presigned_url(
         'http://test.com/index.html?foo=bar', policy=policy)
     expected = ('http://test.com/index.html?foo=bar'
                 '&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiZm9vIiwiQ29uZ'
                 'Gl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIj'
                 'oxNDUxNjA2NDAwfSwiSXBBZGRyZXNzIjp7IkFXUzpTb3VyY2VJcCI'
                 '6IjEyLjM0LjU2Ljc4LzkifSwiRGF0ZUdyZWF0ZXJUaGFuIjp7IkFX'
                 'UzpFcG9jaFRpbWUiOjE0NDg5MjgwMDB9fX1dfQ__'
                 '&Signature=c2lnbmVk&Key-Pair-Id=MY_KEY_ID')
     assert_url_equal(signed_url, expected)
Example #5
0
    def test_presigned_url_contains_no_content_type(self):
        timestamp = datetime(2017, 3, 22, 0, 0)
        with mock.patch('botocore.auth.datetime') as _datetime:
            _datetime.datetime.utcnow.return_value = timestamp
            url = self.client.generate_presigned_url('get_caller_identity', {})

        # There should be no 'content-type' in x-amz-signedheaders
        expected_url = (
            'https://sts.amazonaws.com/?Action=GetCallerIdentity&'
            'Version=2011-06-15&X-Amz-Algorithm=AWS4-HMAC-SHA256&'
            'X-Amz-Credential=access_key%2F20170322%2Fus-east-1%2Fsts%2F'
            'aws4_request&X-Amz-Date=20170322T000000Z&X-Amz-Expires=3600&'
            'X-Amz-SignedHeaders=host&X-Amz-Signature=767845d2ee858069a598d5f'
            '8b497b75c7d57356885b1b3dba46dbbc0fc62bf5a'
        )
        assert_url_equal(url, expected_url)
Example #6
0
 def test_generate_presign_url_with_custom_policy(self):
     policy = self.signer.build_policy(
         'foo', datetime.datetime(2016, 1, 1),
         date_greater_than=datetime.datetime(2015, 12, 1),
         ip_address='12.34.56.78/9')
     signed_url = self.signer.generate_presigned_url(
         'http://test.com/index.html?foo=bar', policy=policy)
     expected = (
         'http://test.com/index.html?foo=bar'
         '&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiZm9vIiwiQ29uZ'
         'Gl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIj'
         'oxNDUxNjA2NDAwfSwiSXBBZGRyZXNzIjp7IkFXUzpTb3VyY2VJcCI'
         '6IjEyLjM0LjU2Ljc4LzkifSwiRGF0ZUdyZWF0ZXJUaGFuIjp7IkFX'
         'UzpFcG9jaFRpbWUiOjE0NDg5MjgwMDB9fX1dfQ__'
         '&Signature=c2lnbmVk&Key-Pair-Id=MY_KEY_ID')
     assert_url_equal(signed_url, expected)
Example #7
0
    def test_generate_db_auth_token(self):
        hostname = 'prod-instance.us-east-1.rds.amazonaws.com'
        port = 3306
        username = '******'
        clock = datetime.datetime(2016, 11, 7, 17, 39, 33, tzinfo=tzutc())

        with mock.patch('datetime.datetime') as dt:
            dt.utcnow.return_value = clock
            result = generate_db_auth_token(self.client, hostname, port,
                                            username)

        expected_result = (
            'prod-instance.us-east-1.rds.amazonaws.com:3306/?Action=connect'
            '&DBUser=someusername&X-Amz-Algorithm=AWS4-HMAC-SHA256'
            '&X-Amz-Date=20161107T173933Z&X-Amz-SignedHeaders=host'
            '&X-Amz-Expires=900&X-Amz-Credential=akid%2F20161107%2F'
            'us-east-1%2Frds-db%2Faws4_request&X-Amz-Signature'
            '=d1138cdbc0ca63eec012ec0fc6c2267e03642168f5884a7795320d4c18374c61'
        )

        # A scheme needs to be appended to the beginning or urlsplit may fail
        # on certain systems.
        assert_url_equal('https://' + result, 'https://' + expected_result)
Example #8
0
    def test_generate_db_auth_token(self):
        hostname = 'prod-instance.us-east-1.rds.amazonaws.com'
        port = 3306
        username = '******'
        clock = datetime.datetime(2016, 11, 7, 17, 39, 33, tzinfo=tzutc())

        with mock.patch('datetime.datetime') as dt:
            dt.utcnow.return_value = clock
            result = generate_db_auth_token(
                self.client, hostname, port, username)

        expected_result = (
            'prod-instance.us-east-1.rds.amazonaws.com:3306/?Action=connect'
            '&DBUser=someusername&X-Amz-Algorithm=AWS4-HMAC-SHA256'
            '&X-Amz-Date=20161107T173933Z&X-Amz-SignedHeaders=host'
            '&X-Amz-Expires=900&X-Amz-Credential=akid%2F20161107%2F'
            'us-east-1%2Frds-db%2Faws4_request&X-Amz-Signature'
            '=d1138cdbc0ca63eec012ec0fc6c2267e03642168f5884a7795320d4c18374c61'
        )

        # A scheme needs to be appended to the beginning or urlsplit may fail
        # on certain systems.
        assert_url_equal(
            'https://' + result, 'https://' + expected_result)