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)
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
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)