Пример #1
0
    def test_rotate_access_key__successful_rotate(self, mock_credentials, mock_iam):
        mock_credentials.check_access_key.return_value = self.success_result
        mock_credentials.check_session.return_value = self.success_result
        mock_credentials.get_user_name.return_value = 'test-user'
        mock_credentials.get_access_key_id.return_value = '12345'

        access_key_result = Result()
        access_key_result.add_payload({
            'AccessKeyId': 12345,
            'SecretAccessKey': 67890
        })
        access_key_result.set_success()

        mock_iam.create_access_key.return_value = access_key_result

        result = self.core.rotate_access_key()

        expected = [call.check_access_key(),
                    call.check_session(),
                    call.get_user_name(),
                    call.get_access_key_id(),
                    call.set_access_key(key_id=12345, access_key=67890)]
        self.assertEqual(expected, mock_credentials.mock_calls)

        expected = [call.create_access_key('test-user'),
                    call.delete_iam_access_key('test-user', '12345')]
        self.assertEqual(expected, mock_iam.mock_calls)

        self.assertEqual(True, result.was_success)
        self.assertEqual(False, result.was_error)
Пример #2
0
def create_access_key(user_name) -> Result:
    result = Result()
    session = boto3.Session(profile_name='session-token')
    client = session.client('iam')

    try:
        response = client.create_access_key(UserName=user_name)
    except client.exceptions.LimitExceededException:
        error_text = 'key limit reached, creation failed'
        logger.warning(error_text)
        result.error(error_text)
        return result

    if 'AccessKey' not in response:
        error_text = 'unknown error with iam'
        logger.error(error_text)
        logger.error(response)
        result.error(error_text)
        return result

    result.add_payload(response['AccessKey'])
    result.set_success()
    return result
Пример #3
0
 def test_add_payload(self):
     result = Result()
     result.add_payload('test')
     self.assertEqual(False, result.was_success)
     self.assertEqual(False, result.was_error)
     self.assertEqual('test', result.payload)