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"),
        ]
Ejemplo n.º 2
0
 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))
Ejemplo n.º 3
0
    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"),
        ]