diff --git a/requirements-dev.txt b/requirements-dev.txt index 399f9b7417335..c478ddd21f536 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -21,6 +21,7 @@ flask-testing==0.8.0 ipdb==0.12 isort==4.3.21 mypy==0.770 +openapi-spec-validator==0.2.8 pytest==5.4.3 pytest-cov==2.10.0 parameterized==0.7.4 diff --git a/superset/charts/api.py b/superset/charts/api.py index 6c8635bbeb5ac..4901041d279c2 100644 --- a/superset/charts/api.py +++ b/superset/charts/api.py @@ -645,7 +645,7 @@ def thumbnail( responses: 200: description: Chart thumbnail image - /content: + content: image/*: schema: type: string diff --git a/superset/charts/schemas.py b/superset/charts/schemas.py index 385640439137e..0449f65da2c0f 100644 --- a/superset/charts/schemas.py +++ b/superset/charts/schemas.py @@ -31,13 +31,12 @@ width_height_schema = { "type": "array", - "items": [{"type": "integer"}, {"type": "integer"}], + "items": {"type": "integer"}, } thumbnail_query_schema = { "type": "object", "properties": {"force": {"type": "boolean"}}, } - screenshot_query_schema = { "type": "object", "properties": { diff --git a/tests/base_api_tests.py b/tests/base_api_tests.py index ba7dde5cbea91..2be642ce4f02d 100644 --- a/tests/base_api_tests.py +++ b/tests/base_api_tests.py @@ -48,6 +48,22 @@ class Model1Api(BaseSupersetModelRestApi): appbuilder.add_api(Model1Api) +class TestOpenApiSpec(SupersetTestCase): + def test_open_api_spec(self): + """ + API: Test validate OpenAPI spec + :return: + """ + from openapi_spec_validator import validate_spec + + self.login(username="admin") + uri = "api/v1/_openapi" + rv = self.client.get(uri) + self.assertEqual(rv.status_code, 200) + response = json.loads(rv.data.decode("utf-8")) + validate_spec(response) + + class TestBaseModelRestApi(SupersetTestCase): def test_default_missing_declaration_get(self): """