From 8f8fba2056add562bdcda7ed30d667c79de9c178 Mon Sep 17 00:00:00 2001 From: Daniel Vaz Gaspar Date: Tue, 21 Feb 2023 15:34:25 +0000 Subject: [PATCH] fix: gamma sql_json test (#23135) --- tests/integration_tests/fixtures/users.py | 49 +++++++++++++++++++++++ tests/integration_tests/sqllab_tests.py | 8 +++- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 tests/integration_tests/fixtures/users.py diff --git a/tests/integration_tests/fixtures/users.py b/tests/integration_tests/fixtures/users.py new file mode 100644 index 0000000000000..b812de4448979 --- /dev/null +++ b/tests/integration_tests/fixtures/users.py @@ -0,0 +1,49 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +import pytest +from flask_appbuilder.security.sqla.models import Role, User + +from superset import db, security_manager +from tests.integration_tests.test_app import app + + +@pytest.fixture() +def create_gamma_sqllab_no_data(): + + with app.app_context(): + gamma_role = db.session.query(Role).filter(Role.name == "Gamma").one_or_none() + sqllab_role = ( + db.session.query(Role).filter(Role.name == "sql_lab").one_or_none() + ) + + security_manager.add_user( + "gamma_sqllab_no_data", + "gamma_sqllab_no_data", + "gamma_sqllab_no_data", + "gamma_sqllab_no_data@apache.org", + [gamma_role, sqllab_role], + password="general", + ) + + yield + user = ( + db.session.query(User) + .filter(User.username == "gamma_sqllab_no_data") + .one_or_none() + ) + db.session.delete(user) + db.session.commit() diff --git a/tests/integration_tests/sqllab_tests.py b/tests/integration_tests/sqllab_tests.py index aa15308e92be1..d9f26239d1394 100644 --- a/tests/integration_tests/sqllab_tests.py +++ b/tests/integration_tests/sqllab_tests.py @@ -56,6 +56,7 @@ load_birth_names_dashboard_with_slices, load_birth_names_data, ) +from tests.integration_tests.fixtures.users import create_gamma_sqllab_no_data QUERY_1 = "SELECT * FROM birth_names LIMIT 1" QUERY_2 = "SELECT * FROM NO_TABLE" @@ -752,6 +753,7 @@ def test_sql_json_parameter_authorized(self): ) assert data["status"] == "success" + @pytest.mark.usefixtures("create_gamma_sqllab_no_data") @pytest.mark.usefixtures("load_birth_names_dashboard_with_slices") @mock.patch.dict( "superset.extensions.feature_flag_manager._feature_flags", @@ -759,13 +761,17 @@ def test_sql_json_parameter_authorized(self): clear=True, ) def test_sql_json_parameter_forbidden(self): - self.login("gamma") + self.login("gamma_sqllab_no_data") data = self.run_sql( "SELECT name FROM {{ table }} LIMIT 10", "4", template_params=json.dumps({"table": "birth_names"}), ) + assert data["errors"][0]["message"] == ( + "The database referenced in this query was not found." + " Please contact an administrator for further assistance or try again." + ) assert data["errors"][0]["error_type"] == "GENERIC_BACKEND_ERROR" @mock.patch("superset.sql_lab.get_query")