diff --git a/tableaudocumentapi/connection.py b/tableaudocumentapi/connection.py index 10096dd..3e64c1b 100644 --- a/tableaudocumentapi/connection.py +++ b/tableaudocumentapi/connection.py @@ -26,6 +26,11 @@ def __init__(self, connxml): self._dbname = connxml.get('dbname') self._server = connxml.get('server') self._username = connxml.get('username') + self._authentication = connxml.get('authentication') + self._class = connxml.get('class') + + def __repr__(self): + return "''".format(self._server, self._dbname, hex(id(self))) ########### # dbname @@ -92,3 +97,17 @@ def username(self, value): """ self._username = value self._connectionXML.set('username', value) + + ########### + # authentication + ########### + @property + def authentication(self): + return self._authentication + + ########### + # dbclass + ########### + @property + def dbclass(self): + return self._class diff --git a/test.py b/test.py index 5606005..3172673 100644 --- a/test.py +++ b/test.py @@ -10,7 +10,7 @@ TABLEAU_93_TDS = '''''' -TABLEAU_10_TDS = '''''' +TABLEAU_10_TDS = '''''' TABLEAU_10_WORKBOOK = '''''' @@ -58,13 +58,16 @@ def test_can_read_attributes_from_connection(self): self.assertEqual(conn.dbname, 'TestV1') self.assertEqual(conn.username, '') self.assertEqual(conn.server, 'mssql2012.test.tsi.lan') + self.assertEqual(conn.dbclass, 'sqlserver') + self.assertEqual(conn.authentication, 'sspi') def test_can_write_attributes_to_connection(self): conn = Connection(self.connection) conn.dbname = 'BubblesInMyDrink' conn.server = 'mssql2014.test.tsi.lan' + conn.username = 'bob' self.assertEqual(conn.dbname, 'BubblesInMyDrink') - self.assertEqual(conn.username, '') + self.assertEqual(conn.username, 'bob') self.assertEqual(conn.server, 'mssql2014.test.tsi.lan') @@ -109,6 +112,36 @@ def test_save_has_xml_declaration(self): first_line, "") +class DatasourceModelV10Tests(unittest.TestCase): + + def setUp(self): + self.tds_file = io.FileIO('test10.tds', 'w') + self.tds_file.write(TABLEAU_10_TDS.encode('utf8')) + self.tds_file.seek(0) + + def tearDown(self): + self.tds_file.close() + os.unlink(self.tds_file.name) + + def test_can_extract_datasource_from_file(self): + ds = Datasource.from_file(self.tds_file.name) + self.assertEqual(ds.name, 'federated.1s4nxn20cywkdv13ql0yk0g1mpdx') + self.assertEqual(ds.version, '10.0') + + def test_can_extract_connection(self): + ds = Datasource.from_file(self.tds_file.name) + self.assertIsInstance(ds.connections[0], Connection) + self.assertIsInstance(ds.connections, list) + + def test_can_save_tds(self): + original_tds = Datasource.from_file(self.tds_file.name) + original_tds.connections[0].dbname = 'newdb.test.tsi.lan' + original_tds.save() + + new_tds = Datasource.from_file(self.tds_file.name) + self.assertEqual(new_tds.connections[0].dbname, 'newdb.test.tsi.lan') + + class WorkbookModelTests(unittest.TestCase): def setUp(self):