def setUp(self): self.session = botocore.session.get_session() # Set up the client mocks. self.s3_client = mock.Mock(self.session.create_client('s3')) self.sns_client = mock.Mock(self.session.create_client( 'sns', 'us-east-1')) self.config_client = mock.Mock(self.session.create_client( 'config', 'us-east-1')) self.config_client.describe_configuration_recorders.return_value = \ {'ConfigurationRecorders': []} self.config_client.describe_delivery_channels.return_value = \ {'DeliveryChannels': []} self.session = mock.Mock(self.session) self.session.create_client.side_effect = [ self.s3_client, self.sns_client, self.config_client ] self.parsed_args = mock.Mock() self.parsed_args.s3_bucket = 'MyBucket/MyPrefix' self.parsed_args.sns_topic = \ 'arn:aws:sns:us-east-1:934212987125:config' self.parsed_args.iam_role = 'arn:aws:iam::1234556789:role/config' self.parsed_globals = mock.Mock() self.cmd = SubscribeCommand(self.session)
class TestSubscribeCommand(unittest.TestCase): def setUp(self): self.session = botocore.session.get_session() # Set up the client mocks. self.s3_client = mock.Mock(self.session.create_client('s3')) self.sns_client = mock.Mock(self.session.create_client( 'sns', 'us-east-1')) self.config_client = mock.Mock(self.session.create_client( 'config', 'us-east-1')) self.config_client.describe_configuration_recorders.return_value = \ {'ConfigurationRecorders': []} self.config_client.describe_delivery_channels.return_value = \ {'DeliveryChannels': []} self.session = mock.Mock(self.session) self.session.create_client.side_effect = [ self.s3_client, self.sns_client, self.config_client ] self.parsed_args = mock.Mock() self.parsed_args.s3_bucket = 'MyBucket/MyPrefix' self.parsed_args.sns_topic = \ 'arn:aws:sns:us-east-1:934212987125:config' self.parsed_args.iam_role = 'arn:aws:iam::1234556789:role/config' self.parsed_globals = mock.Mock() self.cmd = SubscribeCommand(self.session) def test_setup_clients(self): self.parsed_globals.verify_ssl = True self.parsed_globals.region = 'us-east-1' self.parsed_globals.endpoint_url = 'http://myendpoint.com' self.cmd._run_main(self.parsed_args, self.parsed_globals) # Check to see that the clients were created correctly self.session.create_client.assert_any_call( 's3', verify=self.parsed_globals.verify_ssl, region_name=self.parsed_globals.region, ) self.session.create_client.assert_any_call( 'sns', verify=self.parsed_globals.verify_ssl, region_name=self.parsed_globals.region, ) self.session.create_client.assert_any_call( 'config', verify=self.parsed_globals.verify_ssl, region_name=self.parsed_globals.region, endpoint_url=self.parsed_globals.endpoint_url ) def test_subscribe(self): self.cmd._run_main(self.parsed_args, self.parsed_globals) # Check the call made to put configuration recorder. self.config_client.put_configuration_recorder.assert_called_with( ConfigurationRecorder={ 'name': 'default', 'roleARN': self.parsed_args.iam_role } ) # Check the call made to put delivery channel. self.config_client.put_delivery_channel.assert_called_with( DeliveryChannel={ 'name': 'default', 's3BucketName': 'MyBucket', 'snsTopicARN': self.parsed_args.sns_topic, 's3KeyPrefix': 'MyPrefix' } ) # Check the call made to start configuration recorder. self.config_client.start_configuration_recorder.assert_called_with( ConfigurationRecorderName='default' ) # Check that the describe delivery channel and configuration recorder # methods were called. self.assertTrue( self.config_client.describe_configuration_recorders.called ) self.assertTrue(self.config_client.describe_delivery_channels.called)