def test_publish_multi_connection(self) -> None:
        new_datasource = TSC.DatasourceItem(
            name="Sample", project_id="ee8c6e70-43b6-11e6-af4f-f7b0d8e20760")
        connection1 = TSC.ConnectionItem()
        connection1.server_address = "mysql.test.com"
        connection1.connection_credentials = TSC.ConnectionCredentials(
            "test", "secret", True)
        connection2 = TSC.ConnectionItem()
        connection2.server_address = "pgsql.test.com"
        connection2.connection_credentials = TSC.ConnectionCredentials(
            "test", "secret", True)

        response = RequestFactory.Datasource._generate_xml(
            new_datasource, connections=[connection1, connection2])
        # Can't use ConnectionItem parser due to xml namespace problems
        connection_results = fromstring(response).findall(".//connection")

        self.assertEqual(connection_results[0].get("serverAddress", None),
                         "mysql.test.com")
        self.assertEqual(
            connection_results[0].find("connectionCredentials").get(
                "name", None), "test")  # type: ignore[union-attr]
        self.assertEqual(connection_results[1].get("serverAddress", None),
                         "pgsql.test.com")
        self.assertEqual(
            connection_results[1].find("connectionCredentials").get(
                "password", None), "secret")  # type: ignore[union-attr]
Beispiel #2
0
    def test_publish_multi_connection(self):
        new_datasource = TSC.DatasourceItem(
            name='Sample', project_id='ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
        connection1 = TSC.ConnectionItem()
        connection1.server_address = 'mysql.test.com'
        connection1.connection_credentials = TSC.ConnectionCredentials(
            'test', 'secret', True)
        connection2 = TSC.ConnectionItem()
        connection2.server_address = 'pgsql.test.com'
        connection2.connection_credentials = TSC.ConnectionCredentials(
            'test', 'secret', True)

        response = RequestFactory.Datasource._generate_xml(
            new_datasource, connections=[connection1, connection2])
        # Can't use ConnectionItem parser due to xml namespace problems
        connection_results = ET.fromstring(response).findall('.//connection')

        self.assertEqual(connection_results[0].get('serverAddress', None),
                         'mysql.test.com')
        self.assertEqual(
            connection_results[0].find('connectionCredentials').get(
                'name', None), 'test')
        self.assertEqual(connection_results[1].get('serverAddress', None),
                         'pgsql.test.com')
        self.assertEqual(
            connection_results[1].find('connectionCredentials').get(
                'password', None), 'secret')
Beispiel #3
0
 def test_generate_xml_invalid_connection(self):
     workbook_item: TSC.WorkbookItem = TSC.WorkbookItem(
         "name", "project_id")
     conn = TSC.ConnectionItem()
     with self.assertRaises(ValueError):
         request = TSC_RF.RequestFactory.Workbook._generate_xml(
             workbook_item, connections=[conn])
Beispiel #4
0
 def test_generate_xml_valid_connection_credentials(self):
     workbook_item: TSC.WorkbookItem = TSC.WorkbookItem(
         "name", "project_id")
     conn = TSC.ConnectionItem()
     conn.server_address = "address"
     creds = TSC.ConnectionCredentials("username", "DELETEME")
     conn.connection_credentials = creds
     request = TSC_RF.RequestFactory.Workbook._generate_xml(
         workbook_item, connections=[conn])
     assert request.find(b"DELETEME") > 0
Beispiel #5
0
 def test_generate_xml_invalid_connection_credentials(self):
     workbook_item: TSC.WorkbookItem = TSC.WorkbookItem(
         "name", "project_id")
     conn = TSC.ConnectionItem()
     conn.server_address = "address"
     creds = TSC.ConnectionCredentials("username", "password")
     creds.name = None
     conn.connection_credentials = creds
     with self.assertRaises(ValueError):
         request = TSC_RF.RequestFactory.Workbook._generate_xml(
             workbook_item, connections=[conn])
Beispiel #6
0
    def test_credentials_and_multi_connect_raises_exception(self):
        new_datasource = TSC.DatasourceItem(name='Sample', project_id='ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')

        connection_creds = TSC.ConnectionCredentials('test', 'secret', True)

        connection1 = TSC.ConnectionItem()
        connection1.server_address = 'mysql.test.com'
        connection1.connection_credentials = TSC.ConnectionCredentials('test', 'secret', True)

        with self.assertRaises(RuntimeError):
            response = RequestFactory.Datasource._generate_xml(new_datasource,
                                                               connection_credentials=connection_creds,
                                                               connections=[connection1])
Beispiel #7
0
 def test_redact_passwords_in_xml(self):
     if sys.version_info < (3, 7):
         pytest.skip("Redaction is only implemented for 3.7+.")
     workbook_item: TSC.WorkbookItem = TSC.WorkbookItem(
         "name", "project_id")
     conn = TSC.ConnectionItem()
     conn.server_address = "address"
     creds = TSC.ConnectionCredentials("username", "DELETEME")
     conn.connection_credentials = creds
     request = TSC_RF.RequestFactory.Workbook._generate_xml(
         workbook_item, connections=[conn])
     redacted = redact_xml(request)
     assert request.find(b"DELETEME") > 0, request
     assert redacted.find(b"DELETEME") == -1, redacted
Beispiel #8
0
    def test_credentials_and_multi_connect_raises_exception(self) -> None:
        new_workbook = TSC.WorkbookItem(
            name="Sample", show_tabs=False, project_id="ee8c6e70-43b6-11e6-af4f-f7b0d8e20760"
        )

        connection_creds = TSC.ConnectionCredentials("test", "secret", True)

        connection1 = TSC.ConnectionItem()
        connection1.server_address = "mysql.test.com"
        connection1.connection_credentials = TSC.ConnectionCredentials("test", "secret", True)

        with self.assertRaises(RuntimeError):
            response = RequestFactory.Workbook._generate_xml(
                new_workbook, connection_credentials=connection_creds, connections=[connection1]
            )
    def test_update_hyper_data_connection_object(self):
        """Calling `update_hyper_data` with a `ConnectionItem` should update that connection"""
        self.server.version = "3.13"
        self.baseurl = self.server.datasources.baseurl

        connection = TSC.ConnectionItem()
        connection._datasource_id = '9dbd2263-16b5-46e1-9c43-a76bb8ab65fb'
        connection._id = '7ecaccd8-39b0-4875-a77d-094f6e930019'
        response_xml = read_xml_asset(UPDATE_HYPER_DATA_XML)
        with requests_mock.mock() as m:
            m.patch(
                self.baseurl +
                '/9dbd2263-16b5-46e1-9c43-a76bb8ab65fb/connections/7ecaccd8-39b0-4875-a77d-094f6e930019/data',
                status_code=202,
                headers={"requestid": "test_id"},
                text=response_xml)
            new_job = self.server.datasources.update_hyper_data(
                connection, request_id="test_id", actions=[])

        # We only check the `id`; remaining fields are already tested in `test_update_hyper_data_datasource_object`
        self.assertEqual('5c0ba560-c959-424e-b08a-f32ef0bfb737', new_job.id)