Example #1
0
    def test_get_resources_using_table(self) -> None:
        self._mock_get_table_entity()

        expected_resource_type = 'dashboards'
        expected_resources_count = 1
        expected_resource_detail = [
            DashboardSummary(uri='superset_dashboard://datalab.prod/1',
                             cluster='datalab',
                             group_name='prod superset',
                             group_url='https://prod.superset/dashboards/1',
                             product='superset',
                             name='Prod Usage',
                             url='https://prod.superset/dashboards/1',
                             description='Robs famous dashboard',
                             last_successful_run_timestamp=1619517099,
                             chart_names=[])
        ]

        self.proxy.client.entity.get_entities_by_guids = MagicMock(
            return_value=DottedDict({
                'entities': [DottedDict(self.dashboard_data['entity'])],
                'referredEntities':
                self.dashboard_data['referredEntities']
            }))

        result = self.proxy.get_resources_using_table(
            id='DOESNT_MATTER', resource_type=ResourceType.Dashboard)

        self.assertIn(expected_resource_type, result)
        self.assertEqual(expected_resources_count,
                         len(result[expected_resource_type]))
        self.assertEqual(expected_resource_detail,
                         result[expected_resource_type])
Example #2
0
    def test_get_resources_owned_by_user_default_owner(self) -> None:
        unique_attr_response = MagicMock()
        unique_attr_response.entity = Data.user_entity_2
        self.proxy._driver.entity_unique_attribute = MagicMock(
            return_value=unique_attr_response)

        basic_search_result = MagicMock()
        basic_search_result.entities = self.reader_entities

        entity2 = MagicMock()
        entity2.guid = self.entity2['guid']

        basic_search_response = MagicMock()
        basic_search_response.entities = [entity2]

        self.proxy._driver.search_basic.create = MagicMock(
            return_value=basic_search_response)

        entity_bulk_result = MagicMock()
        entity_bulk_result.entities = [DottedDict(self.entity1)]
        self.proxy._driver.entity_bulk = MagicMock(
            return_value=[entity_bulk_result])

        res = self.proxy._get_resources_owned_by_user(
            user_id='test_user_2', resource_type=ResourceType.Table.name)

        self.assertEqual(len(res), 1)
Example #3
0
    def test_get_resources_owned_by_user_success(self) -> None:
        unique_attr_response = MagicMock()
        unique_attr_response.entity = Data.user_entity_2
        self.proxy._driver.entity_unique_attribute = MagicMock(
            return_value=unique_attr_response)

        entity_bulk_result = MagicMock()
        entity_bulk_result.entities = [DottedDict(self.entity1)]
        self.proxy._driver.entity_bulk = MagicMock(
            return_value=[entity_bulk_result])

        res = self.proxy._get_resources_owned_by_user(
            user_id='test_user_2', resource_type=ResourceType.Table.name)

        self.assertEqual(len(res), 1)

        ent1_attrs = cast(dict, self.entity1['attributes'])

        expected = [
            PopularTable(database=self.entity_type,
                         cluster=self.cluster,
                         schema=self.db,
                         name=ent1_attrs['name'],
                         description=ent1_attrs['description'])
        ]

        self.assertEqual(expected, res)
Example #4
0
    def test_get_table_by_user_relation_own(self) -> None:
        unique_attr_response = MagicMock()
        unique_attr_response.entity = Data.user_entity_2
        self.proxy._driver.entity_unique_attribute = MagicMock(
            return_value=unique_attr_response)

        entity_bulk_result = MagicMock()
        entity_bulk_result.entities = [DottedDict(self.entity1)]
        self.proxy._driver.entity_bulk = MagicMock(
            return_value=[entity_bulk_result])

        res = self.proxy.get_table_by_user_relation(
            user_email='test_user_id', relation_type=UserResourceRel.own)

        self.assertEqual(len(res.get("table")), 1)  # type: ignore

        ent1_attrs = cast(dict, self.entity1['attributes'])

        expected = [
            PopularTable(database=self.entity_type,
                         cluster=self.cluster,
                         schema=self.db,
                         name=ent1_attrs['name'],
                         description=ent1_attrs['description'])
        ]

        self.assertEqual({'table': expected}, res)
Example #5
0
    def test_get_resources_owned_by_user_dashboard(self) -> None:
        unique_attr_response = MagicMock()
        unique_attr_response.entity = self.user_entity_1
        self.proxy.client.entity.get_entity_by_attribute = MagicMock(
            return_value=unique_attr_response)

        entity_bulk_result = MagicMock()
        entity_bulk_result.entities = [
            DottedDict(self.dashboard_data['entity'])
        ]
        self.proxy.client.entity.get_entities_by_guids = MagicMock(
            return_value=entity_bulk_result)

        res_dashboard = self.proxy._get_resources_owned_by_user(
            user_id='test_user_1', resource_type=ResourceType.Dashboard.name)
        self.assertEqual(len(res_dashboard), 1)
        expected_dashboard = [
            DashboardSummary(uri='superset_dashboard://datalab.prod/1',
                             cluster='datalab',
                             group_name='prod superset',
                             group_url='https://prod.superset/dashboards/1',
                             product='superset',
                             name='Prod Usage',
                             url='https://prod.superset/dashboards/1',
                             description='Robs famous dashboard',
                             last_successful_run_timestamp=0,
                             chart_names=[])
        ]
        self.assertEqual(expected_dashboard, res_dashboard)
    def test_get_frequently_used_tables(self) -> None:
        entity_unique_attribute_result = MagicMock()
        entity_unique_attribute_result.entity = DottedDict(self.user_entity_2)
        self.proxy._driver.entity_unique_attribute = MagicMock(return_value=entity_unique_attribute_result)

        entity_bulk_result = MagicMock()
        entity_bulk_result.entities = [DottedDict(self.reader_entity_1)]
        self.proxy._driver.entity_bulk = MagicMock(return_value=[entity_bulk_result])

        expected = {'table': [PopularTable(cluster=self.cluster,
                                           name='Table1',
                                           schema=self.db,
                                           database=self.entity_type)]}

        res = self.proxy.get_frequently_used_tables(user_email='dummy')

        self.assertEqual(expected, res)
Example #7
0
    def test_get_dashboard(self) -> None:
        self.proxy.client.entity.get_entity_by_attribute = MagicMock(
            return_value=self.dashboard_data)  # type: ignore
        self.proxy._get_dashboard_group = MagicMock(
            return_value=self.dashboard_group_data)  # type: ignore
        self.proxy.client.entity.get_entities_by_guids = MagicMock(
            return_value=DottedDict({'entities': [DottedDict(self.entity1)]}))

        expected = DashboardDetail(
            uri='superset_dashboard://datalab.prod/1',
            cluster='datalab',
            group_name='prod superset',
            group_url='https://superset.prod',
            product='superset',
            name='Prod Usage',
            url='https://prod.superset/dashboards/1',
            description='Robs famous dashboard',
            created_timestamp=1619517099,
            updated_timestamp=1619626531,
            last_successful_run_timestamp=1619517099,
            last_run_timestamp=1619517150,
            last_run_state='failed',
            owners=[
                User(user_id='lisa_salinas',
                     email='lisa_salinas',
                     first_name=None,
                     last_name=None,
                     full_name=None,
                     display_name=None,
                     is_active=True,
                     github_username=None,
                     team_name=None,
                     slack_id=None,
                     employee_type=None,
                     manager_fullname=None,
                     manager_email=None,
                     manager_id=None,
                     role_name=None,
                     profile_url=None,
                     other_key_values={})
            ],
            frequent_users=[],
            chart_names=['Count Users by Time', 'Total Count'],
            query_names=['User Count By Time', 'Total Count'],
            queries=[
                DashboardQuery(
                    name='User Count By Time',
                    url='https://prod.superset/dashboards/1/query/1',
                    query_text='SELECT date, COUNT(1) FROM db.table GROUP BY 1'
                ),
                DashboardQuery(
                    name='Total Count',
                    url='https://prod.superset/dashboards/1/query/2',
                    query_text='SELECT COUNT(1) FROM db.table')
            ],
            tables=[
                PopularTable(database='hive_table',
                             cluster='TEST_CLUSTER',
                             schema='TEST_DB',
                             name='Table1',
                             description='Dummy Description')
            ],
            tags=[],
            badges=[],
            recent_view_count=0)

        result = self.proxy.get_dashboard(
            id='superset_dashboard://datalab.prod/1')

        self.assertEqual(expected, result)