예제 #1
0
    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": []}'}})
예제 #2
0
    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)