def test_destination_region_always_changed(self): # If the user provides a destination region, we will still # override the DesinationRegion with the region_name from # the endpoint object. actual_region = 'us-west-1' operation_model = mock.Mock() operation_model.name = 'CopySnapshot' credentials = Credentials('key', 'secret') event_emitter = HierarchicalEmitter() request_signer = RequestSigner('ec2', actual_region, 'ec2', 'v4', credentials, event_emitter) request_dict = {} params = { 'SourceRegion': 'us-west-2', 'DestinationRegion': 'us-east-1' } request_dict['body'] = params request_dict['url'] = 'https://ec2.us-west-1.amazonaws.com' request_dict['method'] = 'POST' request_dict['headers'] = {} request_dict['context'] = {} # The user provides us-east-1, but we will override this to # endpoint.region_name, of 'us-west-1' in this case. handlers.inject_presigned_url_ec2(request_dict, request_signer, operation_model) self.assertIn('https://ec2.us-west-2.amazonaws.com?', params['PresignedUrl']) # Always use the DestinationRegion from the endpoint, regardless of # whatever value the user provides. self.assertEqual(params['DestinationRegion'], actual_region)
def test_inject_presigned_url_ec2(self): operation_model = mock.Mock() operation_model.name = 'CopySnapshot' credentials = Credentials('key', 'secret') event_emitter = HierarchicalEmitter() request_signer = RequestSigner('ec2', 'us-east-1', 'ec2', 'v4', credentials, event_emitter) request_dict = {} params = {'SourceRegion': 'us-west-2'} request_dict['body'] = params request_dict['url'] = 'https://ec2.us-east-1.amazonaws.com' request_dict['method'] = 'POST' request_dict['headers'] = {} request_dict['context'] = {} handlers.inject_presigned_url_ec2(request_dict, request_signer, operation_model) self.assertIn('https://ec2.us-west-2.amazonaws.com?', params['PresignedUrl']) self.assertIn('X-Amz-Signature', params['PresignedUrl']) self.assertIn('DestinationRegion', params['PresignedUrl']) # We should also populate the DestinationRegion with the # region_name of the endpoint object. self.assertEqual(params['DestinationRegion'], 'us-east-1')
def test_destination_region_always_changed(self): # If the user provides a destination region, we will still # override the DesinationRegion with the region_name from # the endpoint object. actual_region = 'us-west-1' operation_model = mock.Mock() operation_model.name = 'CopySnapshot' credentials = Credentials('key', 'secret') event_emitter = HierarchicalEmitter() request_signer = RequestSigner( 'ec2', actual_region, 'ec2', 'v4', credentials, event_emitter) request_dict = {} params = { 'SourceRegion': 'us-west-2', 'DestinationRegion': 'us-east-1'} request_dict['body'] = params request_dict['url'] = 'https://ec2.us-west-1.amazonaws.com' request_dict['method'] = 'POST' request_dict['headers'] = {} request_dict['context'] = {} # The user provides us-east-1, but we will override this to # endpoint.region_name, of 'us-west-1' in this case. handlers.inject_presigned_url_ec2( request_dict, request_signer, operation_model) self.assertIn('https://ec2.us-west-2.amazonaws.com?', params['PresignedUrl']) # Always use the DestinationRegion from the endpoint, regardless of # whatever value the user provides. self.assertEqual(params['DestinationRegion'], actual_region)
def test_inject_presigned_url_ec2(self): operation_model = mock.Mock() operation_model.name = 'CopySnapshot' credentials = Credentials('key', 'secret') event_emitter = HierarchicalEmitter() request_signer = RequestSigner( 'ec2', 'us-east-1', 'ec2', 'v4', credentials, event_emitter) request_dict = {} params = {'SourceRegion': 'us-west-2'} request_dict['body'] = params request_dict['url'] = 'https://ec2.us-east-1.amazonaws.com' request_dict['method'] = 'POST' request_dict['headers'] = {} request_dict['context'] = {} handlers.inject_presigned_url_ec2( request_dict, request_signer, operation_model) self.assertIn('https://ec2.us-west-2.amazonaws.com?', params['PresignedUrl']) self.assertIn('X-Amz-Signature', params['PresignedUrl']) self.assertIn('DestinationRegion', params['PresignedUrl']) # We should also populate the DestinationRegion with the # region_name of the endpoint object. self.assertEqual(params['DestinationRegion'], 'us-east-1')
def test_presigned_url_already_present_ec2(self): operation_model = mock.Mock() operation_model.name = 'CopySnapshot' params = {'body': {'PresignedUrl': 'https://foo'}} credentials = Credentials('key', 'secret') event_emitter = HierarchicalEmitter() request_signer = RequestSigner('ec2', 'us-east-1', 'ec2', 'v4', credentials, event_emitter) handlers.inject_presigned_url_ec2(params, request_signer, operation_model) self.assertEqual(params['body']['PresignedUrl'], 'https://foo')
def test_presigned_url_already_present_ec2(self): operation_model = mock.Mock() operation_model.name = 'CopySnapshot' params = {'body': {'PresignedUrl': 'https://foo'}} credentials = Credentials('key', 'secret') event_emitter = HierarchicalEmitter() request_signer = RequestSigner( 'ec2', 'us-east-1', 'ec2', 'v4', credentials, event_emitter) handlers.inject_presigned_url_ec2( params, request_signer, operation_model) self.assertEqual(params['body']['PresignedUrl'], 'https://foo')
def test_use_event_operation_name(self): operation_model = mock.Mock() operation_model.name = 'FakeOperation' request_signer = mock.Mock() request_signer._region_name = 'us-east-1' request_dict = {} params = {'SourceRegion': 'us-west-2'} request_dict['body'] = params request_dict['url'] = 'https://myservice.us-east-1.amazonaws.com' request_dict['method'] = 'POST' request_dict['headers'] = {} request_dict['context'] = {} handlers.inject_presigned_url_ec2(request_dict, request_signer, operation_model) call_args = request_signer.generate_presigned_url.call_args operation_name = call_args[1].get('operation_name') self.assertEqual(operation_name, 'FakeOperation')
def test_use_event_operation_name(self): operation_model = mock.Mock() operation_model.name = 'FakeOperation' request_signer = mock.Mock() request_signer._region_name = 'us-east-1' request_dict = {} params = {'SourceRegion': 'us-west-2'} request_dict['body'] = params request_dict['url'] = 'https://myservice.us-east-1.amazonaws.com' request_dict['method'] = 'POST' request_dict['headers'] = {} request_dict['context'] = {} handlers.inject_presigned_url_ec2( request_dict, request_signer, operation_model) call_args = request_signer.generate_presigned_url.call_args operation_name = call_args[1].get('operation_name') self.assertEqual(operation_name, 'FakeOperation')