def test_scrape_metadata_multiple_sites_should_fetch_assets_from_all( self, mock_get_all_sites_for_server, mock_fetch_sites): # The 'contentUrl' field is actually informed as an empty string for # the Default site and fulfilled for all other sites created by the # users. mock_get_all_sites_for_server.return_value = [ { 'id': 'TEST-ID-1', 'name': 'Default', 'contentUrl': '', }, { 'id': 'TEST-ID-2', 'name': 'My site', 'contentUrl': 'my-site', }, ] scrape.MetadataScraper(server_address='https://test-server.com', api_version='test-api', username='******', password='******').scrape_sites() mock_get_all_sites_for_server.assert_called_once() self.assertEqual(2, mock_fetch_sites.call_count)
def test_scrape_workbooks_no_data_available_should_return_empty_list(self): metadata = scrape.MetadataScraper(server_address=None, api_version=None, username=None, password=None).scrape_workbooks() self.assertEqual(0, len(metadata))
def test_scrape_metadata_no_sites_available_should_not_raise_exception( self, mock_get_sites): # noqa: E125 mock_get_sites.return_value = make_fake_response({}, 200) scrape.MetadataScraper(server_address=None, api_version=None, username=None, password=None).scrape_workbooks() self.assertEqual(mock_get_sites.call_count, 1)
def test_scrape_metadata_no_sites_available_should_not_fetch_assets( self, mock_get_all_sites_for_server, mock_fetch_sites): mock_get_all_sites_for_server.return_value = [] scrape.MetadataScraper(server_address='https://test-server.com', api_version='test-api', username='******', password='******').scrape_sites() mock_get_all_sites_for_server.assert_called_once() mock_fetch_sites.assert_not_called()
def test_scrape_metadata_specific_site_should_fetch_assets_given_site( self, mock_get_all_sites_for_server, mock_fetch_sites): scrape.MetadataScraper( server_address='https://test-server.com', api_version='test-api', username='******', password='******', site_content_url='test-site-url').scrape_sites() mock_get_all_sites_for_server.assert_not_called() mock_fetch_sites.assert_called_once()
def test_scrape_metadata_should_authenticate_user(self, mock_post_authenticate): mock_post_authenticate.return_value = make_fake_response( {'credentials': { 'token': 'TEST-TOKEN' }}, 200) scrape.MetadataScraper(server_address=None, api_version=None, username=None, password=None, site='test').scrape_workbooks() self.assertEqual(mock_post_authenticate.call_count, 1)
def test_scrape_workbooks_should_return_nonempty_list_on_success( self, mock_fetch_workbooks): mock_fetch_workbooks.return_value = [ { 'luid': 'TEST-ID-1', }, { 'luid': 'TEST-ID-2', }, ] metadata = scrape.MetadataScraper( server_address='https://test-server.com', api_version='test-api', username='******', password='******').scrape_workbooks() self.assertEqual(2, len(metadata))
def test_scrape_dashboards_should_return_nonempty_list( self, mock_post_query_dashboards): # noqa: E125 mock_post_query_dashboards.return_value = make_fake_response( { 'data': { 'dashboards': [{ 'luid': 'TEST-ID-1' }, { 'luid': 'TEST-ID-2' }] } }, 200) metadata = scrape.MetadataScraper(server_address=None, api_version=None, username=None, password=None).scrape_dashboards() self.assertEqual(2, len(metadata))
def __init__(self, tableau_server_address, tableau_api_version, tableau_username, tableau_password, datacatalog_project_id, datacatalog_location_id, asset_types, tableau_site=None): super().__init__() self.__project_id = datacatalog_project_id self.__location_id = datacatalog_location_id self.__asset_types = asset_types self.__site_content_url = tableau_site self._metadata_scraper = scrape.MetadataScraper( server_address=tableau_server_address, api_version=tableau_api_version, username=tableau_username, password=tableau_password, site_content_url=tableau_site) self._entry_factory = \ prepare.AssembledEntryFactory( project_id=datacatalog_project_id, location_id=datacatalog_location_id, entry_group_id=self.__ENTRY_GROUP_ID, user_specified_system=self.__SPECIFIED_SYSTEM, server_address=tableau_server_address) self._tag_template_factory = \ prepare.DataCatalogTagTemplateFactory( project_id=datacatalog_project_id, location_id=datacatalog_location_id)