Beispiel #1
0
class AWSMockTestCase(TestCase):
    """Test AWSMock class."""
    def setUp(self):
        """Setup test case."""
        self.mocker = AWSMock()
        self.kwarg = {username: '******', group_name: 'Admins'}

    def test_unmocked_operation(self):
        """Test operation not mocked error is returned."""
        msg = 'An error occurred (500) when calling the CreateGecko ' \
              'operation: Operation not mocked'

        try:
            self.mocker.mock_make_api_call('CreateGecko', {'Name': 'gecko'})
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_get_user_exception(self):
        """Test get non existent user raises exception."""
        msg = 'An error occurred (Not Found) when calling the GetUser' \
              ' operation: User John not found'

        try:
            # Assert get non existing user exception
            self.mocker.get_user(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_list_user_groups_exception(self):
        """Test list non existent user groups raises exception."""
        msg = 'An error occurred (404) when calling the ' \
              'ListGroupsForUser operation: User John not found'

        try:
            # Assert list non existent user groups exception
            self.mocker.list_groups_for_user(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_add_user_group_exception(self):
        """Test add user to non existent group raises exception."""
        msg = 'An error occurred (Not Found) when calling the AddUserToGroup' \
              ' operation: Group Admins not found'

        try:
            # Assert add user to non existing group exception
            self.mocker.add_user_to_group(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_user_group(self):
        """Test user and group endpoints."""
        # Create user and group and add user to group
        self.mocker.create_user(self.kwarg)
        self.mocker.create_group(self.kwarg)
        self.mocker.add_user_to_group(self.kwarg)

        # Assert user and group exist and assert user in group
        self.assertIn(self.kwarg[username], self.mocker.users)
        self.assertIn(self.kwarg[group_name], self.mocker.groups)
        self.assertIn(self.kwarg[group_name],
                      self.mocker.users[self.kwarg[username]].groups)

        msg = 'An error occurred (409) when calling the CreateGroup' \
              ' operation: Group Admins exists'

        try:
            # Assert create group exists raises exception
            self.mocker.create_group(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

        msg = 'An error occurred (409) when calling the CreateUser' \
              ' operation: User John exists'

        try:
            # Assert create user exists raises exception
            self.mocker.create_user(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

        # Get user response
        response = self.mocker.get_user(self.kwarg)
        self.assertEqual(response['User'][username], self.kwarg[username])

        # List groups for user response
        response = self.mocker.list_groups_for_user(self.kwarg)
        self.assertEqual(response['Groups'][0][group_name],
                         self.kwarg[group_name])
        self.assertEqual(1, len(response['Groups']))

        # Remove user from group
        self.mocker.remove_user_from_group(self.kwarg)
        self.assertNotIn(self.kwarg[group_name],
                         self.mocker.users[self.kwarg[username]].groups)

        # Delete group
        self.mocker.delete_group(self.kwarg)
        self.assertNotIn(self.kwarg[group_name], self.mocker.groups)

        # Delete user
        self.mocker.delete_user(self.kwarg)
        self.assertNotIn(self.kwarg[username], self.mocker.users)

    def test_delete_user_exception(self):
        """Test delete non existent user raises exception."""
        msg = 'An error occurred (404) when calling the DeleteUser' \
              ' operation: User not found'

        try:
            # Assert delete non existent user exception
            self.mocker.delete_user(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_delete_group_exception(self):
        """Test delete non existent group raises exception."""
        msg = 'An error occurred (404) when calling the DeleteGroup' \
              ' operation: Group Admins not found'

        try:
            # Assert delete non existent user exception
            self.mocker.delete_group(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_remove_user_group_exception(self):
        """Test remove non existent user from group raises exception."""
        msg = 'An error occurred (404) when calling the RemoveUserFromGroup' \
              ' operation: User John not found'

        try:
            # Assert remove non existent user from group exception
            self.mocker.remove_user_from_group(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_create_access_key_exception(self):
        """Test create access key for non existent user raises exception."""
        msg = 'An error occurred (404) when calling the CreateAccessKey' \
              ' operation: User John not found'

        try:
            # Assert create access key for non existent user exception
            self.mocker.create_access_key(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_delete_access_key_exception(self):
        """Test delete non existent access key raises exception."""
        msg = 'An error occurred (404) when calling the DeleteAccessKey' \
              ' operation: Access key not found'

        self.mocker.create_user(self.kwarg)
        self.kwarg['AccessKeyId'] = 'key213'

        try:
            # Assert delete non existent access key exception
            self.mocker.delete_access_key(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_list_access_key_exception(self):
        """Test list access keys for non existent user raises exception."""
        msg = 'An error occurred (404) when calling the ListAccessKeys' \
              ' operation: User John not found'

        try:
            # Assert list access keys for non existent user exception
            self.mocker.list_access_keys(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_access_key(self):
        """Test access key endpoints."""
        self.mocker.create_user(self.kwarg)
        response = self.mocker.create_access_key(self.kwarg)

        # Get created key id
        key_id = response['AccessKey']['AccessKeyId']

        # Get user access keys
        response = self.mocker.list_access_keys(self.kwarg)

        # Assert id's are equal and keys length is 1
        self.assertEqual(key_id,
                         response['AccessKeyMetadata'][0]['AccessKeyId'])
        self.assertEqual(1, len(response['AccessKeyMetadata']))

        # Delete access key
        self.kwarg['AccessKeyId'] = key_id
        self.mocker.delete_access_key(self.kwarg)

        # Confirm deletion
        self.assertEqual(
            0, len(self.mocker.users[self.kwarg[username]].access_keys))

    def test_create_login_profile_exception(self):
        """Test create login profile already exists raises exception."""
        msg = 'An error occurred (409) when calling the CreateLoginProfile' \
              ' operation: LoginProfile for John exists'

        # Create login profile
        self.mocker.create_user(self.kwarg)
        self.kwarg['Password'] = '******'
        self.mocker.create_login_profile(self.kwarg)

        try:
            # Assert create login profile already exists exception
            self.mocker.create_login_profile(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_delete_login_profile_exception(self):
        """Test delete non existent login profile raises exception."""
        msg = 'An error occurred (404) when calling the DeleteLoginProfile' \
              ' operation: LoginProfile for John not found'

        self.mocker.create_user(self.kwarg)

        try:
            # Assert delete non existent login profile exception
            self.mocker.delete_login_profile(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_login_profile(self):
        """Test login profile endpoints."""
        self.mocker.create_user(self.kwarg)

        # Create login profile
        self.kwarg['Password'] = '******'
        response = self.mocker.create_login_profile(self.kwarg)
        self.assertEqual(self.kwarg[username],
                         response['LoginProfile'][username])
        self.assertEqual('password',
                         self.mocker.users[self.kwarg[username]].password)

        # Delete profile
        self.mocker.delete_login_profile(self.kwarg)
        self.assertEqual(None,
                         self.mocker.users[self.kwarg[username]].password)

    def test_deactivate_mfa_device_exception(self):
        """Test deactivate non existent mfa device raises exception."""
        msg = 'An error occurred (404) when calling the DeactivateMFADevice' \
              ' operation: Device not found'

        self.mocker.create_user(self.kwarg)
        self.kwarg['SerialNumber'] = '44324234213'

        try:
            # Assert deactivate non existent mfa device exception
            self.mocker.deactivate_mfa_device(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_list_mfa_device_exception(self):
        """Test list mfa devices for non existent user raises exception."""
        msg = 'An error occurred (404) when calling the ListMFADevices' \
              ' operation: User John not found'

        try:
            # Assert list mfa devices for non existent user exception
            self.mocker.list_mfa_devices(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_mfa_device(self):
        """Test mfa device endpoints."""
        self.mocker.create_user(self.kwarg)

        # Add mfa device
        self.mocker.users['John'].mfa_devices.append('44324234213')

        # Lists mfa devices
        response = self.mocker.list_mfa_devices(self.kwarg)

        self.assertEqual('44324234213',
                         response['MFADevices'][0]['SerialNumber'])
        self.assertEqual(1, len(response['MFADevices']))

        # Deactivate mfa device
        self.kwarg['SerialNumber'] = '44324234213'
        self.mocker.deactivate_mfa_device(self.kwarg)

        # Confirm deactivation
        self.assertEqual(0, len(self.mocker.users['John'].mfa_devices))

    def test_delete_signing_cert_exception(self):
        """Test delete non existent signing cert raises exception."""
        msg = 'An error occurred (404) when calling the ' \
              'DeleteSigningCertificate operation: Signing certificate' \
              ' not found'

        self.mocker.create_user(self.kwarg)
        self.kwarg['CertificateId'] = '44324234213'

        try:
            # Assert delete non existent signing certificate exception
            self.mocker.delete_signing_certificate(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_list_signing_certificates_exception(self):
        """Test list signing certs for non existent user raises exception."""
        msg = 'An error occurred (404) when calling the ' \
              'ListSigningCertificates operation: User John not found'

        try:
            # Assert list signing certs for non existent user exception
            self.mocker.list_signing_certificates(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_signing_certificate(self):
        """Test signing certificate endpoints."""
        self.mocker.create_user(self.kwarg)

        # Add signing cert
        self.mocker.users['John'].signing_certs.append('44324234213')

        # Lists mfa devices
        response = self.mocker.list_signing_certificates(self.kwarg)

        self.assertEqual('44324234213',
                         response['Certificates'][0]['CertificateId'])
        self.assertEqual(1, len(response['Certificates']))

        # Delete signing cert
        self.kwarg['CertificateId'] = '44324234213'
        self.mocker.delete_signing_certificate(self.kwarg)

        # Confirm deletion
        self.assertEqual(0, len(self.mocker.users['John'].signing_certs))

    def test_detach_user_policy_exception(self):
        """Test detach non existent user policy raises exception."""
        msg = 'An error occurred (404) when calling the ' \
              'DetachUserPolicy operation: Attached policy not found'

        self.mocker.create_user(self.kwarg)
        self.kwarg['PolicyArn'] = 'arn:aws:iam::aws:policy/Admins'

        try:
            # Assert detach non existent user policy exception
            self.mocker.detach_user_policy(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_list_attached_user_policies_exception(self):
        """Test list user policies for non existent user raises exception."""
        msg = 'An error occurred (404) when calling the ' \
              'ListAttachedUserPolicies operation: User John not found'

        try:
            # Assert list user policies for non existent user exception
            self.mocker.list_attached_user_policies(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_user_policy(self):
        """Test user policy endpoints."""
        self.mocker.create_user(self.kwarg)

        # Attach user policy
        self.mocker.users['John'].attached_policies.append('Admins')

        # Lists attached user policies
        response = self.mocker.list_attached_user_policies(self.kwarg)

        self.assertEqual('Admins',
                         response['AttachedPolicies'][0]['PolicyName'])
        self.assertEqual(1, len(response['AttachedPolicies']))

        # Detach attached policy
        self.kwarg['PolicyArn'] = 'arn:aws:iam::aws:policy/Admins'
        self.mocker.detach_user_policy(self.kwarg)

        # Confirm policy detached
        self.assertEqual(0, len(self.mocker.users['John'].attached_policies))
Beispiel #2
0
class AWSMockTestCase(TestCase):
    """Test AWSMock class."""

    def setUp(self):
        """Setup test case."""
        self.mocker = AWSMock()
        self.kwarg = {username: '******',
                      group_name: 'Admins'}

    def test_unmocked_operation(self):
        """Test operation not mocked error is returned."""
        msg = 'An error occurred (500) when calling the CreateGecko ' \
              'operation: Operation not mocked'

        try:
            self.mocker.mock_make_api_call('CreateGecko',
                                           {'Name': 'gecko'})
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_get_user_exception(self):
        """Test get non existent user raises exception."""
        msg = 'An error occurred (Not Found) when calling the GetUser' \
              ' operation: User John not found'

        try:
            # Assert get non existing user exception
            self.mocker.get_user(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_list_user_groups_exception(self):
        """Test list non existent user groups raises exception."""
        msg = 'An error occurred (404) when calling the ' \
              'ListGroupsForUser operation: User John not found'

        try:
            # Assert list non existent user groups exception
            self.mocker.list_groups_for_user(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_add_user_group_exception(self):
        """Test add user to non existent group raises exception."""
        msg = 'An error occurred (Not Found) when calling the AddUserToGroup' \
              ' operation: Group Admins not found'

        try:
            # Assert add user to non existing group exception
            self.mocker.add_user_to_group(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_user_group(self):
        """Test user and group endpoints."""
        # Create user and group and add user to group
        self.mocker.create_user(self.kwarg)
        self.mocker.create_group(self.kwarg)
        self.mocker.add_user_to_group(self.kwarg)

        # Assert user and group exist and assert user in group
        self.assertIn(self.kwarg[username], self.mocker.users)
        self.assertIn(self.kwarg[group_name], self.mocker.groups)
        self.assertIn(self.kwarg[group_name],
                      self.mocker.users[self.kwarg[username]].groups)

        msg = 'An error occurred (409) when calling the CreateGroup' \
              ' operation: Group Admins exists'

        try:
            # Assert create group exists raises exception
            self.mocker.create_group(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

        msg = 'An error occurred (409) when calling the CreateUser' \
              ' operation: User John exists'

        try:
            # Assert create user exists raises exception
            self.mocker.create_user(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

        # Get user response
        response = self.mocker.get_user(self.kwarg)
        self.assertEqual(response['User'][username], self.kwarg[username])

        # List groups for user response
        response = self.mocker.list_groups_for_user(self.kwarg)
        self.assertEqual(response['Groups'][0][group_name],
                         self.kwarg[group_name])
        self.assertEqual(1, len(response['Groups']))

        # Remove user from group
        self.mocker.remove_user_from_group(self.kwarg)
        self.assertNotIn(self.kwarg[group_name],
                         self.mocker.users[self.kwarg[username]].groups)

        # Delete group
        self.mocker.delete_group(self.kwarg)
        self.assertNotIn(self.kwarg[group_name], self.mocker.groups)

        # Delete user
        self.mocker.delete_user(self.kwarg)
        self.assertNotIn(self.kwarg[username], self.mocker.users)

    def test_delete_user_exception(self):
        """Test delete non existent user raises exception."""
        msg = 'An error occurred (404) when calling the DeleteUser' \
              ' operation: User not found'

        try:
            # Assert delete non existent user exception
            self.mocker.delete_user(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_delete_group_exception(self):
        """Test delete non existent group raises exception."""
        msg = 'An error occurred (404) when calling the DeleteGroup' \
              ' operation: Group Admins not found'

        try:
            # Assert delete non existent user exception
            self.mocker.delete_group(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_remove_user_group_exception(self):
        """Test remove non existent user from group raises exception."""
        msg = 'An error occurred (404) when calling the RemoveUserFromGroup' \
              ' operation: User John not found'

        try:
            # Assert remove non existent user from group exception
            self.mocker.remove_user_from_group(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_create_access_key_exception(self):
        """Test create access key for non existent user raises exception."""
        msg = 'An error occurred (404) when calling the CreateAccessKey' \
              ' operation: User John not found'

        try:
            # Assert create access key for non existent user exception
            self.mocker.create_access_key(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_delete_access_key_exception(self):
        """Test delete non existent access key raises exception."""
        msg = 'An error occurred (404) when calling the DeleteAccessKey' \
              ' operation: Access key not found'

        self.mocker.create_user(self.kwarg)
        self.kwarg['AccessKeyId'] = 'key213'

        try:
            # Assert delete non existent access key exception
            self.mocker.delete_access_key(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_list_access_key_exception(self):
        """Test list access keys for non existent user raises exception."""
        msg = 'An error occurred (404) when calling the ListAccessKeys' \
              ' operation: User John not found'

        try:
            # Assert list access keys for non existent user exception
            self.mocker.list_access_keys(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_access_key(self):
        """Test access key endpoints."""
        self.mocker.create_user(self.kwarg)
        response = self.mocker.create_access_key(self.kwarg)

        # Get created key id
        key_id = response['AccessKey']['AccessKeyId']

        # Get user access keys
        response = self.mocker.list_access_keys(self.kwarg)

        # Assert id's are equal and keys length is 1
        self.assertEqual(key_id,
                         response['AccessKeyMetadata'][0]['AccessKeyId'])
        self.assertEqual(1, len(response['AccessKeyMetadata']))

        # Delete access key
        self.kwarg['AccessKeyId'] = key_id
        self.mocker.delete_access_key(self.kwarg)

        # Confirm deletion
        self.assertEqual(0, len(
            self.mocker.users[self.kwarg[username]].access_keys))

    def test_create_login_profile_exception(self):
        """Test create login profile already exists raises exception."""
        msg = 'An error occurred (409) when calling the CreateLoginProfile' \
              ' operation: LoginProfile for John exists'

        # Create login profile
        self.mocker.create_user(self.kwarg)
        self.kwarg['Password'] = '******'
        self.mocker.create_login_profile(self.kwarg)

        try:
            # Assert create login profile already exists exception
            self.mocker.create_login_profile(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_delete_login_profile_exception(self):
        """Test delete non existent login profile raises exception."""
        msg = 'An error occurred (404) when calling the DeleteLoginProfile' \
              ' operation: LoginProfile for John not found'

        self.mocker.create_user(self.kwarg)

        try:
            # Assert delete non existent login profile exception
            self.mocker.delete_login_profile(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_login_profile(self):
        """Test login profile endpoints."""
        self.mocker.create_user(self.kwarg)

        # Create login profile
        self.kwarg['Password'] = '******'
        response = self.mocker.create_login_profile(self.kwarg)
        self.assertEqual(self.kwarg[username],
                         response['LoginProfile'][username])
        self.assertEqual('password',
                         self.mocker.users[self.kwarg[username]].password)

        # Delete profile
        self.mocker.delete_login_profile(self.kwarg)
        self.assertEqual(None,
                         self.mocker.users[self.kwarg[username]].password)

    def test_deactivate_mfa_device_exception(self):
        """Test deactivate non existent mfa device raises exception."""
        msg = 'An error occurred (404) when calling the DeactivateMFADevice' \
              ' operation: Device not found'

        self.mocker.create_user(self.kwarg)
        self.kwarg['SerialNumber'] = '44324234213'

        try:
            # Assert deactivate non existent mfa device exception
            self.mocker.deactivate_mfa_device(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_list_mfa_device_exception(self):
        """Test list mfa devices for non existent user raises exception."""
        msg = 'An error occurred (404) when calling the ListMFADevices' \
              ' operation: User John not found'

        try:
            # Assert list mfa devices for non existent user exception
            self.mocker.list_mfa_devices(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_mfa_device(self):
        """Test mfa device endpoints."""
        self.mocker.create_user(self.kwarg)

        # Add mfa device
        self.mocker.users['John'].mfa_devices.append('44324234213')

        # Lists mfa devices
        response = self.mocker.list_mfa_devices(self.kwarg)

        self.assertEqual('44324234213',
                         response['MFADevices'][0]['SerialNumber'])
        self.assertEqual(1, len(response['MFADevices']))

        # Deactivate mfa device
        self.kwarg['SerialNumber'] = '44324234213'
        self.mocker.deactivate_mfa_device(self.kwarg)

        # Confirm deactivation
        self.assertEqual(0, len(self.mocker.users['John'].mfa_devices))

    def test_delete_signing_cert_exception(self):
        """Test delete non existent signing cert raises exception."""
        msg = 'An error occurred (404) when calling the ' \
              'DeleteSigningCertificate operation: Signing certificate' \
              ' not found'

        self.mocker.create_user(self.kwarg)
        self.kwarg['CertificateId'] = '44324234213'

        try:
            # Assert delete non existent signing certificate exception
            self.mocker.delete_signing_certificate(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_list_signing_certificates_exception(self):
        """Test list signing certs for non existent user raises exception."""
        msg = 'An error occurred (404) when calling the ' \
              'ListSigningCertificates operation: User John not found'

        try:
            # Assert list signing certs for non existent user exception
            self.mocker.list_signing_certificates(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_signing_certificate(self):
        """Test signing certificate endpoints."""
        self.mocker.create_user(self.kwarg)

        # Add signing cert
        self.mocker.users['John'].signing_certs.append('44324234213')

        # Lists mfa devices
        response = self.mocker.list_signing_certificates(self.kwarg)

        self.assertEqual('44324234213',
                         response['Certificates'][0]['CertificateId'])
        self.assertEqual(1, len(response['Certificates']))

        # Delete signing cert
        self.kwarg['CertificateId'] = '44324234213'
        self.mocker.delete_signing_certificate(self.kwarg)

        # Confirm deletion
        self.assertEqual(0, len(self.mocker.users['John'].signing_certs))

    def test_detach_user_policy_exception(self):
        """Test detach non existent user policy raises exception."""
        msg = 'An error occurred (404) when calling the ' \
              'DetachUserPolicy operation: Attached policy not found'

        self.mocker.create_user(self.kwarg)
        self.kwarg['PolicyArn'] = 'arn:aws:iam::aws:policy/Admins'

        try:
            # Assert detach non existent user policy exception
            self.mocker.detach_user_policy(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_list_attached_user_policies_exception(self):
        """Test list user policies for non existent user raises exception."""
        msg = 'An error occurred (404) when calling the ' \
              'ListAttachedUserPolicies operation: User John not found'

        try:
            # Assert list user policies for non existent user exception
            self.mocker.list_attached_user_policies(self.kwarg)
        except ClientError as e:
            self.assertEqual(msg, str(e))

    def test_user_policy(self):
        """Test user policy endpoints."""
        self.mocker.create_user(self.kwarg)

        # Attach user policy
        self.mocker.users['John'].attached_policies.append('Admins')

        # Lists attached user policies
        response = self.mocker.list_attached_user_policies(self.kwarg)

        self.assertEqual('Admins',
                         response['AttachedPolicies'][0]['PolicyName'])
        self.assertEqual(1, len(response['AttachedPolicies']))

        # Detach attached policy
        self.kwarg['PolicyArn'] = 'arn:aws:iam::aws:policy/Admins'
        self.mocker.detach_user_policy(self.kwarg)

        # Confirm policy detached
        self.assertEqual(0, len(self.mocker.users['John'].attached_policies))