def test_get_user_datasources_gamma_with_schema(self, mock_get_session, mock_can_access_database, mock_g): Datasource = namedtuple("Datasource", ["database", "schema", "name"]) mock_g.user = security_manager.find_user("gamma") mock_can_access_database.return_value = False mock_get_session.query.return_value.filter.return_value.all.return_value = [ Datasource("database1", "schema1", "table1"), Datasource("database1", "schema1", "table2"), ] 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 = security_manager.get_user_datasources() assert sorted(datasources) == [ Datasource("database1", "schema1", "table1"), Datasource("database1", "schema1", "table2"), ]
def add(self) -> FlaskResponse: datasources = [{ "value": str(d.id) + "__" + d.type, "label": repr(d) } for d in security_manager.get_user_datasources()] payload = { "datasources": sorted( datasources, key=lambda d: d["label"].lower() if isinstance(d["label"], str) else "", ), "common": common_bootstrap_payload(), "user": bootstrap_user_data(g.user), } return self.render_template("superset/add_slice.html", bootstrap_data=json.dumps(payload))
def test_get_user_datasources_admin(self, mock_get_session, mock_can_access_database, mock_g): Datasource = namedtuple("Datasource", ["database", "schema", "name"]) mock_g.user = security_manager.find_user("admin") mock_can_access_database.return_value = True mock_get_session.query.return_value.filter.return_value.all.return_value = [] with mock.patch.object( SqlaTable, "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 = security_manager.get_user_datasources() assert sorted(datasources) == [ Datasource("database1", "schema1", "table1"), Datasource("database1", "schema1", "table2"), Datasource("database2", None, "table1"), ]