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))
Beispiel #9
0
    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)