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])
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)
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)
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)
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)
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)