diff --git a/CHANGELOG.md b/CHANGELOG.md index 9629dcbd..5971a905 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Do not retry `firebase.messaging.UnregisteredError` exceptions for FCM relay tasks by @joeyorlando ([#3637](https://github.com/grafana/oncall/pull/3637)) - Decrease outgoing webhook timeouts from 10secs to 4secs by @joeyorlando ([#3639](https://github.com/grafana/oncall/pull/3639)) +- Add stack slug to `/organization` endpoint response by @Ferril ([#3644](https://github.com/grafana/oncall/pull/3644)) - Moved Mobile Connection Tab to separate user profile in Grafana ([#3296](https://github.com/grafana/oncall/pull/3296) ### Fixed diff --git a/engine/apps/api/serializers/organization.py b/engine/apps/api/serializers/organization.py index 5cb596a3..8b01bb06 100644 --- a/engine/apps/api/serializers/organization.py +++ b/engine/apps/api/serializers/organization.py @@ -31,11 +31,13 @@ class OrganizationSerializer(EagerLoadingMixin, serializers.ModelSerializer): fields = [ "pk", "name", + "stack_slug", "slack_team_identity", "slack_channel", "rbac_enabled", ] read_only_fields = [ + "stack_slug", "slack_team_identity", "rbac_enabled", ] diff --git a/engine/apps/api/tests/test_organization.py b/engine/apps/api/tests/test_organization.py index 058c20a6..071e02dd 100644 --- a/engine/apps/api/tests/test_organization.py +++ b/engine/apps/api/tests/test_organization.py @@ -8,6 +8,48 @@ from rest_framework.response import Response from rest_framework.test import APIClient from apps.api.permissions import LegacyAccessControlRole +from apps.api.serializers.organization import CurrentOrganizationSerializer + +mock_banner = {"title": None, "body": None} +mock_env_status = { + "telegram_configured": False, + "phone_provider": { + "configured": False, + "test_sms": False, + "test_call": False, + "verification_call": False, + "verification_sms": False, + }, +} + + +@patch.object(CurrentOrganizationSerializer, "get_banner", return_value=mock_banner) +@patch.object(CurrentOrganizationSerializer, "get_env_status", return_value=mock_env_status) +@pytest.mark.django_db +def test_get_organization( + mocked_banner, + mocked_env_status, + make_organization_and_user_with_plugin_token, + make_user_auth_headers, +): + organization, user, token = make_organization_and_user_with_plugin_token() + + client = APIClient() + url = reverse("api-internal:api-organization") + expected_result = { + "pk": organization.public_primary_key, + "name": organization.org_title, + "stack_slug": organization.stack_slug, + "slack_team_identity": None, + "slack_channel": None, + "rbac_enabled": organization.is_rbac_permissions_enabled, + "is_resolution_note_required": False, + "env_status": mock_env_status, + "banner": mock_banner, + } + response = client.get(url, format="json", **make_user_auth_headers(user, token)) + assert response.status_code == status.HTTP_200_OK + assert response.json() == expected_result @pytest.mark.django_db