fix: datasource payload is incorrect (#15184)

* fix: datasource payload is incorrect

* Add tests, clean code
This commit is contained in:
Beto Dealmeida
2021-06-23 06:59:34 -07:00
committed by GitHub
parent b89ee0cb38
commit 216e2b8e8e
4 changed files with 117 additions and 2 deletions

View File

@@ -18,6 +18,7 @@
"""Unit tests for Superset"""
import json
import unittest
from collections import namedtuple
from unittest import mock
from tests.fixtures.birth_names_dashboard import load_birth_names_dashboard_with_slices
@@ -626,5 +627,83 @@ class TestRequestAccess(SupersetTestCase):
session.commit()
class TestDatasources(SupersetTestCase):
def test_get_user_datasources_admin(self):
Datasource = namedtuple("Datasource", ["database", "schema", "name"])
mock_session = mock.MagicMock()
mock_session.query.return_value.filter.return_value.all.return_value = []
with mock.patch("superset.security_manager") as mock_security_manager:
mock_security_manager.can_access_database.return_value = True
with mock.patch.object(
ConnectorRegistry, "get_all_datasources"
) as mock_get_all_datasources:
mock_get_all_datasources.return_value = [
Datasource("database1", "schema1", "table1"),
Datasource("database1", "schema1", "table2"),
Datasource("database2", None, "table1"),
]
datasources = ConnectorRegistry.get_user_datasources(mock_session)
assert sorted(datasources) == [
Datasource("database1", "schema1", "table1"),
Datasource("database1", "schema1", "table2"),
Datasource("database2", None, "table1"),
]
def test_get_user_datasources_gamma(self):
Datasource = namedtuple("Datasource", ["database", "schema", "name"])
mock_session = mock.MagicMock()
mock_session.query.return_value.filter.return_value.all.return_value = []
with mock.patch("superset.security_manager") as mock_security_manager:
mock_security_manager.can_access_database.return_value = False
with mock.patch.object(
ConnectorRegistry, "get_all_datasources"
) as mock_get_all_datasources:
mock_get_all_datasources.return_value = [
Datasource("database1", "schema1", "table1"),
Datasource("database1", "schema1", "table2"),
Datasource("database2", None, "table1"),
]
datasources = ConnectorRegistry.get_user_datasources(mock_session)
assert datasources == []
def test_get_user_datasources_gamma_with_schema(self):
Datasource = namedtuple("Datasource", ["database", "schema", "name"])
mock_session = mock.MagicMock()
mock_session.query.return_value.filter.return_value.all.return_value = [
Datasource("database1", "schema1", "table1"),
Datasource("database1", "schema1", "table2"),
]
with mock.patch("superset.security_manager") as mock_security_manager:
mock_security_manager.can_access_database.return_value = False
with mock.patch.object(
ConnectorRegistry, "get_all_datasources"
) as mock_get_all_datasources:
mock_get_all_datasources.return_value = [
Datasource("database1", "schema1", "table1"),
Datasource("database1", "schema1", "table2"),
Datasource("database2", None, "table1"),
]
datasources = ConnectorRegistry.get_user_datasources(mock_session)
assert sorted(datasources) == [
Datasource("database1", "schema1", "table1"),
Datasource("database1", "schema1", "table2"),
]
if __name__ == "__main__":
unittest.main()