8000 Per feedback dropping the search methods and just updating tests, the… · PBrad/document-api-python@07e4e18 · GitHub
[go: up one dir, main page]

Skip to content

Commit 07e4e18

Browse files
committed
Per feedback dropping the search methods and just updating tests, the repr for debugging, and updating the connections model to expose a read only auth and dbclass. Fixed a small bug in that the v10 TDS was invalid XML.
1 parent cf58a4a commit 07e4e18

File tree

2 files changed

+54
-2
lines changed

2 files changed

+54
-2
lines changed

tableaudocumentapi/connection.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ def __init__(self, connxml):
2626
self._dbname = connxml.get('dbname')
2727
self._server = connxml.get('server')
2828
self._username = connxml.get('username')
29+
self._authentication = connxml.get('authentication')
30+
self._class = connxml.get('class')
31+
32+
def __repr__(self):
33+
return "'<Connection server='{}' dbname='{}' @ {}>'".format(self._server, self._dbname, hex(id(self)))
2934

3035
###########
3136
# dbname
@@ -92,3 +97,17 @@ def username(self, value):
9297
"""
9398
self._username = value
9499
self._connectionXML.set('username', value)
100+
101+
###########
102+
# authentication
103+
###########
104+
@property
105+
def authentication(self):
106+
return self._authentication
107+
108+
###########
109+
# dbclass
110+
###########
111+
@property
112+
def dbclass(self):
113+
return self._class

test.py

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
TABLEAU_93_TDS = '''<?xml version='1.0' encoding='utf-8' ?><datasource formatted-name='sqlserver.17u3bqc16tjtxn14e2hxh19tyvpo' inline='true' source-platform='mac' version='9.3' xmlns:user='http://www.tableausoftware.com/xml/user'><connection authentication='sspi' class='sqlserver' dbname='TestV1' odbc-native-protocol='yes' one-time-sql='' server='mssql2012.test.tsi.lan' username=''></connection></datasource>'''
1212

13-
TABLEAU_10_TDS = '''<?xml version='1.0' encoding='utf-8' ?><datasources><datasource caption='xy+ (Multiple Connections)' inline='true' name='federated.1s4nxn20cywkdv13ql0yk0g1mpdx' version='10.0'><connection class='federated'><named-connections><named-connection caption='mysql55.test.tsi.lan' name='mysql.1ewmkrw0mtgsev1dnurma1blii4x'><connection class='mysql' dbname='testv1' odbc-native-protocol='yes' port='3306' server='mysql55.test.tsi.lan' source-charset='' username='test' /></named-connection><named-connection caption='mssql2012.test.tsi.lan' name='sqlserver.1erdwp01uqynlb14ul78p0haai2r'><connection authentication='sqlserver' class='sqlserver' dbname='TestV1' odbc-native-protocol='yes' one-time-sql='' server='mssql2012.test.tsi.lan' username='test' /></named-connection></named-connections></connection></datasource></datasources>'''
13+
TABLEAU_10_TDS = '''<?xml version='1.0' encoding='utf-8' ?><datasource caption='xy+ (Multiple Connections)' inline='true' name='federated.1s4nxn20cywkdv13ql0yk0g1mpdx' version='10.0'><connection class='federated'><named-connections><named-connection caption='mysql55.test.tsi.lan' name='mysql.1ewmkrw0mtgsev1dnurma1blii4x'><connection class='mysql' dbname='testv1' odbc-native-protocol='yes' port='3306' server='mysql55.test.tsi.lan' source-charset='' username='test' /></named-connection><named-connection caption='mssql2012.test.tsi.lan' name='sqlserver.1erdwp01uqynlb14ul78p0haai2r'><connection authentication='sqlserver' class='sqlserver' dbname='TestV1' odbc-native-protocol='yes' one-time-sql='' server='mssql2012.test.tsi.lan' username='test' /></named-connection></named-connections></connection></datasource>'''
1414

1515
TABLEAU_10_WORKBOOK = '''<?xml version='1.0' encoding='utf-8' ?><workbook source-build='0.0.0 (0000.16.0510.1300)' source-platform='mac' version='10.0' xmlns:user='http://www.tableausoftware.com/xml/user'><datasources><datasource caption='xy+ (Multiple Connections)' inline='true' name='federated.1s4nxn20cywkdv13ql0yk0g1mpdx' version='10.0'><connection class='federated'><named-connections><named-connection caption='mysql55.test.tsi.lan' name='mysql.1ewmkrw0mtgsev1dnurma1blii4x'><connection class='mysql' dbname='testv1' odbc-native-protocol='yes' port='3306' server='mysql55.test.tsi.lan' source-charset='' username='test' /></named-connection><named-connection caption='mssql2012.test.tsi.lan' name='sqlserver.1erdwp01uqynlb14ul78p0haai2r'><connection authentication='sqlserver' class='sqlserver' dbname='TestV1' odbc-native-protocol='yes' one-time-sql='' server='mssql2012.test.tsi.lan' username='test' /></named-connection></named-connections></connection></datasource></datasources></workbook>'''
1616

@@ -58,13 +58,16 @@ def test_can_read_attributes_from_connection(self):
5858
self.assertEqual(conn.dbname, 'TestV1')
5959
self.assertEqual(conn.username, '')
6060
self.assertEqual(conn.server, 'mssql2012.test.tsi.lan')
61+
self.assertEqual(conn.dbclass, 'sqlserver')
62+
self.assertEqual(conn.authentication, 'sspi')
6163

6264
def test_can_write_attributes_to_connection(self):
6365
conn = Connection(self.connection)
6466
conn.dbname = 'BubblesInMyDrink'
6567
conn.server = 'mssql2014.test.tsi.lan'
68+
conn.username = 'bob'
6669
self.assertEqual(conn.dbname, 'BubblesInMyDrink')
67-
self.assertEqual(conn.username, '')
70+
self.assertEqual(conn.username, 'bob')
6871
self.assertEqual(conn.server, 'mssql2014.test.tsi.lan')
6972

7073

@@ -109,6 +112,36 @@ def test_save_has_xml_declaration(self):
109112
first_line, "<?xml version='1.0' encoding='utf-8'?>")
110113

111114

115+
class DatasourceModelV10Tests(unittest.TestCase):
116+
117+
def setUp(self):
118+
self.tds_file = io.FileIO('test10.tds', 'w')
119+
self.tds_file.write(TABLEAU_10_TDS.encode('utf8'))
120+
self.tds_file.seek(0)
121+
122+
def tearDown(self):
123+
self.tds_file.close()
124+
os.unlink(self.tds_file.name)
125+
126+
def test_can_extract_datasource_from_file(self):
127+
ds = Datasource.from_file(self.tds_file.name)
128+
self.assertEqual(ds.name, 'federated.1s4nxn20cywkdv13ql0yk0g1mpdx')
129+
self.assertEqual(ds.version, '10.0')
130+
131+
def test_can_extract_connection(self):
132+
ds = Datasource.from_file(self.tds_file.name)
133+
self.assertIsInstance(ds.connections[0], Connection)
134+
self.assertIsInstance(ds.connections, list)
135+
136+
def test_can_save_tds(self):
137+
original_tds = Datasource.from_file(self.tds_file.name)
138+
original_tds.connections[0].dbname = 'newdb.test.tsi.lan'
139+
original_tds.save()
140+
141+
new_tds = Datasource.from_file(self.tds_file.name)
142+
self.assertEqual(new_tds.connections[0].dbname, 'newdb.test.tsi.lan')
143+
144+
112145
class WorkbookModelTests(unittest.TestCase):
113146

114147
def setUp(self):

0 commit comments

Comments
 (0)
0