Exemplo n.º 1
0
    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"),
        ]
Exemplo n.º 2
0
 def add(self) -> FlaskResponse:
     datasources = [{
         "value": str(d.id) + "__" + d.type,
         "label": repr(d)
     } for d in ConnectorRegistry.get_user_datasources(db.session)]
     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))