Exemple #1
0
    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,
        )
Exemple #2
0
 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()
Exemple #3
0
    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()
Exemple #4
0
    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()
Exemple #5
0
    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()
Exemple #6
0
 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()
Exemple #7
0
    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()
Exemple #8
0
    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()