/tests/unit/customizations/codedeploy/test_deregister.py
https://gitlab.com/github-cloud-corp/aws-cli · Python · 193 lines · 164 code · 17 blank · 12 comment · 3 complexity · e00f62d4c7e42cb293166b516756dc0a MD5 · raw file
- # Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License"). You
- # may not use this file except in compliance with the License. A copy of
- # the License is located at
- #
- # http://aws.amazon.com/apache2.0/
- #
- # or in the "license" file accompanying this file. This file is
- # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
- # ANY KIND, either express or implied. See the License for the specific
- # language governing permissions and limitations under the License.
- from argparse import Namespace
- from mock import MagicMock, call
- from awscli.customizations.codedeploy.deregister import Deregister
- from awscli.testutils import unittest
- class TestDeregister(unittest.TestCase):
- def setUp(self):
- self.instance_name = 'instance-name'
- self.tags = [{'Key': 'k1', 'Value': 'v1'}]
- self.iam_user_arn = 'arn:aws:iam::012345678912:user/{0}'.format(
- self.instance_name
- )
- self.access_key_id = 'ACCESSKEYID'
- self.region = 'us-east-1'
- self.policy_name = 'codedeploy-agent'
- self.endpoint_url = 'https://codedeploy.aws.amazon.com'
- self.args = Namespace()
- self.args.instance_name = self.instance_name
- self.args.no_delete_iam_user = False
- self.globals = Namespace()
- self.globals.region = self.region
- self.globals.endpoint_url = self.endpoint_url
- self.globals.verify_ssl = False
- self.codedeploy = MagicMock()
- self.codedeploy.get_on_premises_instance.return_value = {
- 'instanceInfo': {
- 'iamUserArn': self.iam_user_arn,
- 'tags': None
- }
- }
- self.iam = MagicMock()
- self.list_user_policies = MagicMock()
- self.list_user_policies.paginate.return_value = [
- {'PolicyNames': [self.policy_name]}
- ]
- self.list_access_keys = MagicMock()
- self.list_access_keys.paginate.return_value = [
- {'AccessKeyMetadata': [{'AccessKeyId': self.access_key_id}]}
- ]
- self.iam.get_paginator.side_effect = [
- self.list_user_policies, self.list_access_keys
- ]
- self.session = MagicMock()
- self.session.create_client.side_effect = [self.codedeploy, self.iam]
- self.deregister = Deregister(self.session)
- def test_deregister_throws_on_invalid_region(self):
- self.globals.region = None
- self.session.get_config_variable.return_value = None
- with self.assertRaisesRegexp(RuntimeError, 'Region not specified.'):
- self.deregister._run_main(self.args, self.globals)
- def test_deregister_throws_on_invalid_instance_name(self):
- self.args.instance_name = 'invalid%@^&%#&'
- with self.assertRaisesRegexp(
- ValueError, 'Instance name contains invalid characters.'):
- self.deregister._run_main(self.args, self.globals)
- def test_deregister_creates_clients(self):
- self.deregister._run_main(self.args, self.globals)
- self.session.create_client.assert_has_calls([
- call(
- 'codedeploy',
- region_name=self.region,
- endpoint_url=self.endpoint_url,
- verify=self.globals.verify_ssl
- ),
- call('iam', region_name=self.region)
- ])
- def test_deregister_with_tags(self):
- self.codedeploy.get_on_premises_instance.return_value = {
- 'instanceInfo': {
- 'iamUserArn': self.iam_user_arn,
- 'tags': self.tags
- }
- }
- self.deregister._run_main(self.args, self.globals)
- self.codedeploy.get_on_premises_instance.assert_called_with(
- instanceName=self.instance_name
- )
- self.assertIn('iam_user_arn', self.args)
- self.assertEquals(self.iam_user_arn, self.args.iam_user_arn)
- self.assertIn('user_name', self.args)
- self.assertEquals(self.instance_name, self.args.user_name)
- self.assertIn('tags', self.args)
- self.assertEquals(self.tags, self.args.tags)
- self.codedeploy.remove_tags_from_on_premises_instances.\
- assert_called_with(
- tags=self.tags,
- instanceNames=[self.instance_name]
- )
- self.codedeploy.deregister_on_premises_instance.\
- assert_called_with(
- instanceName=self.instance_name
- )
- def test_deregister_with_no_tags(self):
- self.codedeploy.get_on_premises_instance.return_value = {
- 'instanceInfo': {
- 'iamUserArn': self.iam_user_arn,
- 'tags': None
- }
- }
- self.deregister._run_main(self.args, self.globals)
- self.codedeploy.get_on_premises_instance.assert_called_with(
- instanceName=self.instance_name
- )
- self.assertIn('iam_user_arn', self.args)
- self.assertEquals(self.iam_user_arn, self.args.iam_user_arn)
- self.assertIn('user_name', self.args)
- self.assertEquals(self.instance_name, self.args.user_name)
- self.assertIn('tags', self.args)
- self.assertEquals(None, self.args.tags)
- self.assertFalse(
- self.codedeploy.remove_tags_from_on_premises_instances.called
- )
- self.codedeploy.deregister_on_premises_instance.\
- assert_called_with(
- instanceName=self.instance_name
- )
- def test_deregister_with_delete_iam_user(self):
- self.args.no_delete_iam_user = False
- self.deregister._run_main(self.args, self.globals)
- self.codedeploy.get_on_premises_instance.assert_called_with(
- instanceName=self.instance_name
- )
- self.codedeploy.deregister_on_premises_instance.\
- assert_called_with(
- instanceName=self.instance_name
- )
- self.iam.get_paginator.assert_has_calls([
- call('list_user_policies'),
- call('list_access_keys')
- ])
- self.list_user_policies.paginate.assert_called_with(
- UserName=self.instance_name
- )
- self.iam.delete_user_policy.assert_called_with(
- UserName=self.instance_name,
- PolicyName=self.policy_name
- )
- self.list_access_keys.paginate.assert_called_with(
- UserName=self.instance_name
- )
- self.iam.delete_access_key.assert_called_with(
- UserName=self.instance_name,
- AccessKeyId=self.access_key_id
- )
- self.iam.delete_user.assert_called_with(
- UserName=self.instance_name
- )
- def test_deregister_with_no_delete_iam_user(self):
- self.args.no_delete_iam_user = True
- self.deregister._run_main(self.args, self.globals)
- self.codedeploy.get_on_premises_instance.assert_called_with(
- instanceName=self.instance_name
- )
- self.codedeploy.deregister_on_premises_instance.\
- assert_called_with(
- instanceName=self.instance_name
- )
- self.assertFalse(self.iam.get_paginator.called)
- self.assertFalse(self.list_user_policies.paginate.called)
- self.assertFalse(self.iam.delete_user_policy.called)
- self.assertFalse(self.list_access_keys.paginate.called)
- self.assertFalse(self.iam.delete_access_key.called)
- self.assertFalse(self.iam.delete_user.called)
- if __name__ == "__main__":
- unittest.main()