|
12 | 12 |
|
13 | 13 | 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>'''
|
14 | 14 |
|
15 |
| -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>''' |
| 15 | +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>''' |
16 | 16 |
|
17 | 17 | 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></datasourc
8000
es></workbook>'''
|
18 | 18 |
|
@@ -62,13 +62,16 @@ def test_can_read_attributes_from_connection(self):
|
62 | 62 | self.assertEqual(conn.dbname, 'TestV1')
|
63 | 63 | self.assertEqual(conn.username, '')
|
64 | 64 | self.assertEqual(conn.server, 'mssql2012.test.tsi.lan')
|
| 65 | + self.assertEqual(conn.dbclass, 'sqlserver') |
| 66 | + self.assertEqual(conn.authentication, 'sspi') |
65 | 67 |
|
66 | 68 | def test_can_write_attributes_to_connection(self):
|
67 | 69 | conn = Connection(self.connection)
|
68 | 70 | conn.dbname = 'BubblesInMyDrink'
|
69 | 71 | conn.server = 'mssql2014.test.tsi.lan'
|
| 72 | + conn.username = 'bob' |
70 | 73 | self.assertEqual(conn.dbname, 'BubblesInMyDrink')
|
71 |
| - self.assertEqual(conn.username, '') |
| 74 | + self.assertEqual(conn.username, 'bob') |
72 | 75 | self.assertEqual(conn.server, 'mssql2014.test.tsi.lan')
|
73 | 76 |
|
74 | 77 |
|
@@ -101,6 +104,47 @@ def test_can_save_tds(self):
|
101 | 104 | new_tds = Datasource.from_file(self.tds_file.name)
|
102 | 105 | self.assertEqual(new_tds.connections[0].dbname, 'newdb.test.tsi.lan')
|
103 | 106 |
|
| 107 | + def test_save_has_xml_declaration(self): |
| 108 | + original_tds = Datasource.from_file(self.tds_file.name) |
| 109 | + original_tds.connections[0].dbname = 'newdb.test.tsi.lan' |
| 110 | + |
| 111 | + original_tds.save() |
| 112 | + |
| 113 | + with open(self.tds_file.name) as f: |
| 114 | + first_line = f.readline().strip() # first line should be xml tag |
| 115 | + self.assertEqual( |
| 116 | + first_line, "<?xml version='1.0' encoding='utf-8'?>") |
| 117 | + |
| 118 | + |
| 119 | +class DatasourceModelV10Tests(unittest.TestCase): |
| 120 | + |
| 121 | + def setUp(self): |
| 122 | + self.tds_file = io.FileIO('test10.tds', 'w') |
| 123 | + self.tds_file.write(TABLEAU_10_TDS.encode('utf8')) |
| 124 | + self.tds_file.seek(0) |
| 125 | + |
| 126 | + def tearDown(self): |
| 127 | + self.tds_file.close() |
| 128 | + os.unlink(self.tds_file.name) |
| 129 | + |
| 130 | + def test_can_extract_datasource_from_file(self): |
| 131 | + ds = Datasource.from_file(self.tds_file.name) |
| 132 | + self.assertEqual(ds.name, 'federated.1s4nxn20cywkdv13ql0yk0g1mpdx') |
| 133 | + self.assertEqual(ds.version, '10.0') |
| 134 | + |
| 135 | + def test_can_extract_connection(self): |
| 136 | + ds = Datasource.from_file(self.tds_file.name) |
| 137 | + self.assertIsInstance(ds.connections[0], Connection) |
| 138 | + self.assertIsInstance(ds.connections, list) |
| 139 | + |
| 140 | + def test_can_save_tds(self): |
| 141 | + original_tds = Datasource.from_file(self.tds_file.name) |
| 142 | + original_tds.connections[0].dbname = 'newdb.test.tsi.lan' |
| 143 | + original_tds.save() |
| 144 | + |
| 145 | + new_tds = Datasource.from_file(self.tds_file.name) |
| 146 | + self.assertEqual(new_tds.connections[0].dbname, 'newdb.test.tsi.lan') |
| 147 | + |
104 | 148 |
|
8000
105 | 149 | class WorkbookModelTests(unittest.TestCase):
|
106 | 150 |
|
@@ -160,6 +204,17 @@ def test_can_update_datasource_connection_and_saveV10(self):
|
160 | 204 | self.assertEqual(new_wb.datasources[0].connections[
|
161 | 205 | 0].dbname, 'newdb.test.tsi.lan')
|
162 | 206 |
|
| 207 | + def test_save_has_xml_declaration(self): |
| 208 | + original_wb = Workbook(self.workbook_file.name) |
| 209 | + original_wb.datasources[0].connections[0].dbname = 'newdb.test.tsi.lan' |
| 210 | + |
| 211 | + original_wb.save() |
| 212 | + |
| 213 | + with open(self.workbook_file.name) as f: |
| 214 | + first_line = f.readline().strip() # first line should be xml tag |
| 215 | + self.assertEqual( |
| 216 | + first_line, "<?xml version='1.0' encoding='utf-8'?>") |
| 217 | + |
163 | 218 |
|
164 | 219 | class WorkbookModelV10TWBXTests(unittest.TestCase):
|
165 | 220 |
|
|
0 commit comments