From b372852ac3d46191c25c71252eaa513951e456c0 Mon Sep 17 00:00:00 2001 From: Daniel Gaspar Date: Tue, 21 Feb 2023 11:34:50 +0000 Subject: [PATCH 1/4] fix: gamma sql_json test --- tests/integration_tests/sqllab_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration_tests/sqllab_tests.py b/tests/integration_tests/sqllab_tests.py index aa15308e92be1..c86ad117d9a70 100644 --- a/tests/integration_tests/sqllab_tests.py +++ b/tests/integration_tests/sqllab_tests.py @@ -759,7 +759,7 @@ def test_sql_json_parameter_authorized(self): clear=True, ) def test_sql_json_parameter_forbidden(self): - self.login("gamma") + self.login("gamma_sqllab") data = self.run_sql( "SELECT name FROM {{ table }} LIMIT 10", From b5c7bfeb3556c77778ad961f758fe063d3c2935c Mon Sep 17 00:00:00 2001 From: Daniel Gaspar Date: Tue, 21 Feb 2023 14:06:22 +0000 Subject: [PATCH 2/4] fix test --- 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..1ddfdb9622482 --- /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(scope="session") +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 c86ad117d9a70..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_sqllab") + 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") From 355e4e2205eefa414ec6e635de1f453a2010f216 Mon Sep 17 00:00:00 2001 From: Daniel Gaspar Date: Tue, 21 Feb 2023 14:54:51 +0000 Subject: [PATCH 3/4] debug --- tests/integration_tests/base_api_tests.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/integration_tests/base_api_tests.py b/tests/integration_tests/base_api_tests.py index 478fee0a0dca4..b0328e9123a81 100644 --- a/tests/integration_tests/base_api_tests.py +++ b/tests/integration_tests/base_api_tests.py @@ -284,8 +284,9 @@ def test_get_filter_related_owners(self): rv = self.client.get(uri) assert rv.status_code == 200 response = json.loads(rv.data.decode("utf-8")) - assert 4 == response["count"] + # assert 4 == response["count"] sorted_results = sorted(response["result"], key=lambda value: value["text"]) + raise Exception(sorted_results) expected_results = [ { "extra": {"active": True, "email": "gamma@fab.org"}, From 736029bbdc201e0a8f4ca96b284da6702ebf4968 Mon Sep 17 00:00:00 2001 From: Daniel Gaspar Date: Tue, 21 Feb 2023 15:05:50 +0000 Subject: [PATCH 4/4] debug --- tests/integration_tests/base_api_tests.py | 3 +-- tests/integration_tests/fixtures/users.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/integration_tests/base_api_tests.py b/tests/integration_tests/base_api_tests.py index b0328e9123a81..478fee0a0dca4 100644 --- a/tests/integration_tests/base_api_tests.py +++ b/tests/integration_tests/base_api_tests.py @@ -284,9 +284,8 @@ def test_get_filter_related_owners(self): rv = self.client.get(uri) assert rv.status_code == 200 response = json.loads(rv.data.decode("utf-8")) - # assert 4 == response["count"] + assert 4 == response["count"] sorted_results = sorted(response["result"], key=lambda value: value["text"]) - raise Exception(sorted_results) expected_results = [ { "extra": {"active": True, "email": "gamma@fab.org"}, diff --git a/tests/integration_tests/fixtures/users.py b/tests/integration_tests/fixtures/users.py index 1ddfdb9622482..b812de4448979 100644 --- a/tests/integration_tests/fixtures/users.py +++ b/tests/integration_tests/fixtures/users.py @@ -21,7 +21,7 @@ from tests.integration_tests.test_app import app -@pytest.fixture(scope="session") +@pytest.fixture() def create_gamma_sqllab_no_data(): with app.app_context():