From 2132e09eec13d2eedc1dffbf1ec888d80f25a71b Mon Sep 17 00:00:00 2001 From: F-cq <2036478450@qq.com> Date: Fri, 25 Oct 2024 16:17:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(apis/web/release/serializers):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=8F=A3=E6=9C=AA=E8=BF=94=E5=9B=9E?= =?UTF-8?q?is=5Fpublic=E5=AD=97=E6=AE=B5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apis/web/release/serializers.py | 1 + .../tests/apis/web/release/test_views.py | 45 ++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/dashboard/apigateway/apigateway/apis/web/release/serializers.py b/src/dashboard/apigateway/apigateway/apis/web/release/serializers.py index 80a0a27d1..b6e29fa6e 100644 --- a/src/dashboard/apigateway/apigateway/apis/web/release/serializers.py +++ b/src/dashboard/apigateway/apigateway/apis/web/release/serializers.py @@ -62,6 +62,7 @@ class ResourceOutputSLZ(serializers.Serializer): verified_user_required = serializers.BooleanField(read_only=True, help_text="是否需要认证用户") verified_app_required = serializers.BooleanField(read_only=True, help_text="是否需要认证应用") resource_perm_required = serializers.BooleanField(read_only=True, help_text="是否验证应用访问资源的权限") + is_public = serializers.BooleanField(read_only=True, help_text="是否公开") labels = serializers.SerializerMethodField(help_text="资源标签列表") class Meta: diff --git a/src/dashboard/apigateway/apigateway/tests/apis/web/release/test_views.py b/src/dashboard/apigateway/apigateway/tests/apis/web/release/test_views.py index d27ca4d4f..4a42c5801 100644 --- a/src/dashboard/apigateway/apigateway/tests/apis/web/release/test_views.py +++ b/src/dashboard/apigateway/apigateway/tests/apis/web/release/test_views.py @@ -29,7 +29,7 @@ from apigateway.apps.openapi.models import OpenAPIResourceSchemaVersion from apigateway.common.contexts import StageProxyHTTPContext from apigateway.core.constants import PublishEventNameTypeEnum, PublishEventStatusTypeEnum -from apigateway.core.models import PublishEvent, Release, ReleaseHistory, ResourceVersion, Stage +from apigateway.core.models import PublishEvent, Release, ReleaseHistory, ResourceVersion, Stage, ReleasedResource from apigateway.tests.utils.testing import create_gateway, dummy_time pytestmark = pytest.mark.django_db @@ -92,6 +92,49 @@ def test_release_with_hosts( assert resp.status_code == 200, result +class TestReleaseAvailableResourceListApi: + def test_list(self, request_view, fake_gateway, fake_stage): + stage_1 = G(Stage, gateway=fake_gateway, name="prod", status=0) + resource_version = G(ResourceVersion, gateway=fake_gateway, _data=json.dumps([{ + "id": 1, + "name": "test", + "method": "get", + "path": "/test/", + "description": "test...", + "description_en": "", + "match_subpath": "", + "is_public": True, + "allow_apply_permission": True, + "disabled_stages": [], + "contexts": { + "resource_auth": { + "config": json.dumps({ + "app_verified_required": True, + "skip_auth_verification": True, + "auth_verified_required": True, + "resource_perm_required": True + }) + } + }, + "api_labels": "", + }])) + + G(Release, gateway=fake_gateway, stage=stage_1, resource_version=resource_version) + + response = request_view( + method="GET", + view_name="gateway.releases.available_resources", + path_params={"gateway_id": fake_gateway.id, "stage_id": stage_1.id}, + ) + + result = response.json() + + assert response.status_code == 200 + assert result == {'data': [{'id': 1, 'name': 'test', 'description': 'test...', 'method': 'get', + 'path': '/test/', 'verified_user_required': False, 'verified_app_required': True, + 'resource_perm_required': True, 'is_public': True, 'labels': []}]} + + class TestReleaseResourceSchemaRetrieve: def test_retry( self, From 31c854d1f4fa490e6b3f92b1a9fba3962b2a85e2 Mon Sep 17 00:00:00 2001 From: F-cq <2036478450@qq.com> Date: Fri, 25 Oct 2024 16:37:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(apis/web/release/serializers):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=8F=A3=E6=9C=AA=E8=BF=94=E5=9B=9E?= =?UTF-8?q?is=5Fpublic=E5=AD=97=E6=AE=B5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apigateway/apigateway/tests/apis/web/release/test_views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dashboard/apigateway/apigateway/tests/apis/web/release/test_views.py b/src/dashboard/apigateway/apigateway/tests/apis/web/release/test_views.py index 4a42c5801..244946ae6 100644 --- a/src/dashboard/apigateway/apigateway/tests/apis/web/release/test_views.py +++ b/src/dashboard/apigateway/apigateway/tests/apis/web/release/test_views.py @@ -29,7 +29,7 @@ from apigateway.apps.openapi.models import OpenAPIResourceSchemaVersion from apigateway.common.contexts import StageProxyHTTPContext from apigateway.core.constants import PublishEventNameTypeEnum, PublishEventStatusTypeEnum -from apigateway.core.models import PublishEvent, Release, ReleaseHistory, ResourceVersion, Stage, ReleasedResource +from apigateway.core.models import PublishEvent, Release, ReleaseHistory, ResourceVersion, Stage from apigateway.tests.utils.testing import create_gateway, dummy_time pytestmark = pytest.mark.django_db