def test_create_from_sources_kafka_message_success( self, mock_task, mock_get_app, mock_get_app_type_id, mock_get_auth, ): """Assert create_from_sources_kafka_message happy path success.""" mock_get_app.return_value = { "application_type_id": self.cloudigrade_sources_app_id, "source_id": self.source_id, } mock_get_app_type_id.return_value = self.cloudigrade_sources_app_id arn = util_helper.generate_dummy_arn() self.auth_return_value["username"] = arn mock_get_auth.return_value = self.auth_return_value tasks.create_from_sources_kafka_message(self.message, self.headers) user = User.objects.get(username=self.account_number) mock_task.delay.assert_called_with( user.username, arn, self.authentication_id, self.application_id, self.source_id, )
def test_aws_task_not_called_for_missing_authentication_id( self, mock_task, mock_get_application): """Assert early exit if authentication_id not in message.""" self.message["authentication_id"] = None tasks.create_from_sources_kafka_message(self.message, self.headers) self.assertEqual(User.objects.all().count(), 0) mock_task.delay.assert_not_called() mock_get_application.assert_not_called()
def test_early_exit_if_app_type_is_not_cloudigrade(self, mock_task, mock_get_app, mock_get_app_type_id, mock_get_auth): """Assert create_from_sources_kafka_message happy path success.""" mock_get_app.return_value = {"application_type_id": "INVALID"} mock_get_app_type_id.return_value = self.cloudigrade_sources_app_id tasks.create_from_sources_kafka_message(self.message, self.headers) mock_get_auth.assert_not_called() mock_task.delay.assert_not_called()
def test_create_from_sources_kafka_message_returns_early_when_application_404( self, mock_task, mock_get_app): """ Assert create_from_sources_kafka_message returns if sources application 404s. This could happen if the application has been deleted from the sources API by the time this task runs. """ mock_get_app.return_value = None tasks.create_from_sources_kafka_message(self.message, self.headers) # User should not have been created. self.assertEqual(User.objects.all().count(), 0) mock_task.delay.assert_not_called()
def test_create_from_sources_kafka_message_fail_source_unexpected_response( self, mock_task, mock_get_app): """ Assert create_from_sources_kafka_message fails from not-200/404 source reply. This could happen if the sources API is misbehaving unexpectedly. """ mock_get_app.side_effect = SourcesAPINotOkStatus with self.assertRaises(SourcesAPINotOkStatus): tasks.create_from_sources_kafka_message(self.message, self.headers) # User should not have been created. self.assertEqual(User.objects.all().count(), 0) mock_task.delay.assert_not_called()
def test_aws_task_not_called_for_unsupported_authtype( self, mock_task, mock_get_app, mock_get_app_type_id, mock_get_auth, mock_notify_sources, ): """Assert no account gets created for unsupported authtype.""" mock_get_app.return_value = { "application_type_id": self.cloudigrade_sources_app_id } mock_get_app_type_id.return_value = self.cloudigrade_sources_app_id self.auth_return_value["authtype"] = "INVALID" mock_get_auth.return_value = self.auth_return_value tasks.create_from_sources_kafka_message(self.message, self.headers) mock_task.delay.assert_not_called()
def test_create_fails_if_no_password_or_username( self, mock_task, mock_get_app, mock_get_app_type_id, mock_get_auth, mock_notify_sources, ): """Assert create_from_sources_kafka_message fails if auth has no password.""" mock_get_app.return_value = { "application_type_id": self.cloudigrade_sources_app_id } mock_get_app_type_id.return_value = self.cloudigrade_sources_app_id self.auth_return_value.pop("username", None) self.auth_return_value.pop("password", None) mock_get_auth.return_value = self.auth_return_value tasks.create_from_sources_kafka_message(self.message, self.headers) mock_task.delay.assert_not_called()
def test_create_returns_early_when_resource_type_invalid( self, mock_task, mock_get_app, mock_get_app_type_id, mock_get_auth, mock_notify_sources, ): """Assert task returns if resource_type is invalid.""" mock_get_app.return_value = { "application_type_id": self.cloudigrade_sources_app_id } mock_get_app_type_id.return_value = self.cloudigrade_sources_app_id self.auth_return_value["resource_type"] = "INVALID" mock_get_auth.return_value = self.auth_return_value tasks.create_from_sources_kafka_message(self.message, self.headers) # User should not have been created. self.assertEqual(User.objects.all().count(), 0) mock_task.delay.assert_not_called()