8000 Add parsing for embed_password field and allow updating value to fals… · SnarkyPapi/server-client-python@6907a15 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6907a15

Browse files
authored
Add parsing for embed_password field and allow updating value to false (tableau#416)
1 parent fe2ff8f commit 6907a15

File tree

4 files changed

+23
-12
lines changed

4 files changed

+23
-12
lines changed

tableauserverclient/models/connection_item.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ def from_response(cls, resp, ns):
4444
connection_item = cls()
4545
connection_item._id = connection_xml.get('id', None)
4646
connection_item._connection_type = connection_xml.get('type', None)
47+
connection_item.embed_password = string_to_bool(connection_xml.get('embedPassword', ''))
4748
connection_item.server_address = connection_xml.get('serverAddress', None)
4849
connection_item.server_port = connection_xml.get('serverPort', None)
4950
connection_item.username = connection_xml.get('userName', None)
@@ -82,3 +83,8 @@ def from_xml_element(cls, parsed_response, ns):
8283
connection_item.connection_credentials = ConnectionCredentials.from_xml_element(connection_credentials)
8384

8485
return all_connection_items
86+
87+
88+
# Used to convert string represented boolean to a boolean type
89+
def string_to_bool(s):
90+
return s.lower() == 'true'

tableauserverclient/server/request_factory.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,8 +422,8 @@ def update_req(self, xml_request, connection_item):
422422
connection_element.attrib['userName'] = connection_item.username
423423
if connection_item.password:
424424
connection_element.attrib['password'] = connection_item.password
425-
if connection_item.embed_password:
426-
connection_element.attrib['embedPassword'] = str(connection_item.embed_password)
425+
if connection_item.embed_password is not None:
426+
connection_element.attrib['embedPassword'] = str(connection_item.embed_password).lower()
427427

428428

429429
class TaskRequest(object):
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
<?xml version='1.0' encoding='UTF-8'?>
22
<tsResponse xmlns="http://tableau.com/api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tableau.com/api http://tableau.com/api/ts-api-2.8.xsd">
33
<connections>
4-
<connection id="be786ae0-d2bf-4a4b-9b34-e2de8d2d4488" type="textscan" serverAddress="" userName="" />
5-
<connection id="970e24bc-e200-4841-a3e9-66e7d122d77e" type="sqlserver" serverAddress="database.com" userName="heero" />
6-
<connection id="7d85b889-283b-42df-b23e-3c811e402f1f" type="textscan" serverAddress="forty-two.net" userName="duo" />
4+
<connection id="be786ae0-d2bf-4a4b-9b34-e2de8d2d4488" type="textscan" serverAddress="forty-two.net" userName="duo" embedPassword="true"/>
5+
<connection id="970e24bc-e200-4841-a3e9-66e7d122d77e" type="sqlserver" serverAddress="database.com" userName="heero" embedPassword="false" />
76
</connections>
87
</tsResponse>

test/test_datasource.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,15 +141,21 @@ def test_populate_connections(self):
141141
single_datasource.owner_id = 'dd2239f6-ddf1-4107-981a-4cf94e415794'
142142
single_datasource._id = '9dbd2263-16b5-46e1-9c43-a76bb8ab65fb'
143143
self.server.datasources.populate_connections(single_datasource)
144-
145144
self.assertEqual('9dbd2263-16b5-46e1-9c43-a76bb8ab65fb', single_datasource.id)
146-
147145
connections = single_datasource.connections
148-
self.assertTrue(conn 8000 ections)
149-
ds1, ds2, ds3 = connections
150-
self.assertEqual(ds1.id, 'be786ae0-d2bf-4a4b-9b34-e2de8d2d4488')
151-
self.assertEqual(ds2.id, '970e24bc-e200-4841-a3e9-66e7d122d77e')
152-
self.assertEqual(ds3.id, '7d85b889-283b-42df-b23e-3c811e402f1f')
146+
147+
self.assertTrue(connections)
148+
ds1, ds2 = connections
149+
self.assertEqual('be786ae0-d2bf-4a4b-9b34-e2de8d2d4488', ds1.id)
150+
self.assertEqual('textscan', ds1.connection_type)
151+
self.assertEqual('forty-two.net', ds1.server_address)
152+
self.assertEqual('duo', ds1.username)
153+
self.assertEqual(True, ds1.embed_password)
154+
self.assertEqual('970e24bc-e200-4841-a3e9-66e7d122d77e', ds2.id)
155+
self.assertEqual('sqlserver', ds2.connection_type)
156+
self.assertEqual('database.com', ds2.server_address)
157+
self.assertEqual('heero', ds2.username)
158+
self.assertEqual(False, ds2.embed_password)
153159

154160
def test_update_connection(self):
155161
populate_xml, response_xml = read_xml_assets(POPULATE_CONNECTIONS_XML, UPDATE_CONNECTION_XML)

0 commit comments

Comments
 (0)
0