def setUp(self): self.session = FakeSession({'config_file': 'myconfigfile'}) self.subscribe = CloudTrailSubscribe(self.session) self.subscribe.iam = Mock() self.subscribe.iam.GetUser = Mock( return_value={'User': {'Arn': '::::123:456'}}) self.subscribe.s3 = Mock() self.subscribe.s3.endpoint = Mock() self.subscribe.s3.endpoint.region_name = 'us-east-1' policy_template = io.StringIO(initial_value=u'{"Statement": []}') self.subscribe.s3.GetObject = Mock( return_value={'Body': policy_template}) self.subscribe.s3.ListBuckets = Mock( return_value={'Buckets': [{'Name': 'test2'}]}) self.subscribe.sns = Mock() self.subscribe.sns.endpoint = Mock() self.subscribe.sns.endpoint.region_name = 'us-east-1' self.subscribe.sns.ListTopics = Mock( return_value={'Topics': [{'TopicArn': ':test2'}]}) self.subscribe.sns.CreateTopic = Mock( return_value={'TopicArn': 'foo'}) self.subscribe.sns.GetTopicAttributes = Mock( return_value={'Attributes': {'Policy': '{"Statement": []}'}})
def test_setup_services(self): parsed_args = [] parsed_globals = argparse.Namespace() parsed_globals.region = 'us-east-1' parsed_globals.verify_ssl = 'foo' parsed_globals.endpoint_url = 'https://cloudtrail.aws.com' ref_args = { 'region_name': parsed_globals.region, 'verify': parsed_globals.verify_ssl, 'endpoint_url': None } # Reset some of the mocks because we need some introspection on the # session. fake_service = Mock() self.session = Mock() self.session.get_service.return_value = fake_service self.subscribe = CloudTrailSubscribe(self.session) self.subscribe.setup_services(parsed_args, parsed_globals) get_service_call_args = self.session.get_service.call_args_list endpoint_call_args = fake_service.get_endpoint.call_args_list # Ensure all of the services got called. self.assertEqual('iam', get_service_call_args[0][0][0]) self.assertEqual('s3', get_service_call_args[1][0][0]) self.assertEqual('sns', get_service_call_args[2][0][0]) self.assertEqual('cloudtrail', get_service_call_args[3][0][0]) # Make sure the endpoints were called correctly # The order is iam, s3, sns, cloudtrail based on ``get_service`` calls # from above. self.assertEqual(endpoint_call_args[0][1], ref_args) self.assertEqual(endpoint_call_args[1][1], ref_args) self.assertEqual(endpoint_call_args[2][1], ref_args) # CloudTrail should be using the endpoint. ref_args['endpoint_url'] = parsed_globals.endpoint_url self.assertEqual(endpoint_call_args[3][1], ref_args)