Skip to content

Commit 2844431

Browse files
committed
chore: split csv add creation to own test
1 parent fcf64bd commit 2844431

File tree

1 file changed

+80
-58
lines changed

1 file changed

+80
-58
lines changed

test/test_user.py

Lines changed: 80 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import tableauserverclient as TSC
1414
from tableauserverclient.datetime_helpers import format_datetime
15+
from tableauserverclient.server.endpoint.users_endpoint import create_users_csv, remove_users_csv
1516

1617
TEST_ASSET_DIR = Path(__file__).resolve().parent / "assets"
1718

@@ -29,6 +30,26 @@
2930
USERS = os.path.join(TEST_ASSET_DIR, "Data", "user_details.csv")
3031

3132

33+
def make_user(
34+
name: str,
35+
site_role: str = "",
36+
auth_setting: str = "",
37+
domain: str = "",
38+
fullname: str = "",
39+
email: str = "",
40+
) -> TSC.UserItem:
41+
user = TSC.UserItem(name, site_role or None)
42+
if auth_setting:
43+
user.auth_setting = auth_setting
44+
if domain:
45+
user._domain_name = domain
46+
if fullname:
47+
user.fullname = fullname
48+
if email:
49+
user.email = email
50+
return user
51+
52+
3253
class UserTests(unittest.TestCase):
3354
def setUp(self) -> None:
3455
self.server = TSC.Server("http://test", False)
@@ -244,26 +265,64 @@ def test_get_users_from_file(self):
244265
assert users[0].name == "Cassie", users
245266
assert failures == []
246267

247-
def test_bulk_add(self):
248-
def make_user(
249-
name: str,
250-
site_role: str = "",
251-
auth_setting: str = "",
252-
domain: str = "",
253-
fullname: str = "",
254-
email: str = "",
255-
) -> TSC.UserItem:
256-
user = TSC.UserItem(name, site_role or None)
257-
if auth_setting:
258-
user.auth_setting = auth_setting
259-
if domain:
260-
user._domain_name = domain
261-
if fullname:
262-
user.fullname = fullname
263-
if email:
264-
user.email = email
265-
return user
268+
def test_create_users_csv(self):
269+
users = [
270+
make_user("Alice", "Viewer"),
271+
make_user("Bob", "Explorer"),
272+
make_user("Charlie", "Creator", "SAML"),
273+
make_user("Dave"),
274+
make_user("Eve", "ServerAdministrator", "OpenID", "example.com", "Eve Example", "Eve@example.com"),
275+
make_user("Frank", "SiteAdministratorExplorer", "TableauIDWithMFA", email="Frank@example.com"),
276+
make_user("Grace", "SiteAdministratorCreator", "SAML", "example.com", "Grace Example", "gex@example.com"),
277+
make_user("Hank", "Unlicensed"),
278+
]
279+
280+
license_map = {
281+
"Viewer": "Viewer",
282+
"Explorer": "Explorer",
283+
"ExplorerCanPublish": "Explorer",
284+
"Creator": "Creator",
285+
"SiteAdministratorExplorer": "Explorer",
286+
"SiteAdministratorCreator": "Creator",
287+
"ServerAdministrator": "Creator",
288+
"Unlicensed": "Unlicensed",
289+
}
290+
publish_map = {
291+
"Unlicensed": 0,
292+
"Viewer": 0,
293+
"Explorer": 0,
294+
"Creator": 1,
295+
"ExplorerCanPublish": 1,
296+
"SiteAdministratorExplorer": 1,
297+
"SiteAdministratorCreator": 1,
298+
"ServerAdministrator": 1,
299+
}
300+
admin_map = {
301+
"SiteAdministratorExplorer": "Site",
302+
"SiteAdministratorCreator": "Site",
303+
"ServerAdministrator": "System",
304+
}
305+
306+
csv_columns = ["name", "password", "fullname", "license", "admin", "publish", "email"]
307+
csv_data = create_users_csv(users)
308+
csv_file = io.StringIO(csv_data.decode("utf-8"))
309+
csv_reader = csv.reader(csv_file)
310+
for user, row in zip(users, csv_reader):
311+
with self.subTest(user=user):
312+
site_role = user.site_role or "Unlicensed"
313+
name = f"{user.domain_name}\\{user.name}" if user.domain_name else user.name
314+
csv_user = dict(zip(csv_columns, row))
315+
assert name == csv_user["name"]
316+
assert (user.fullname or "") == csv_user["fullname"]
317+
assert (user.email or "") == csv_user["email"]
318+
assert license_map[site_role] == csv_user["license"]
319+
assert admin_map.get(site_role, "") == csv_user["admin"]
320+
assert publish_map[site_role] == int(csv_user["publish"])
266321

322+
323+
324+
325+
def test_bulk_add(self):
267326
self.server.version = "3.15"
268327
users = [
269328
make_user("Alice", "Viewer"),
@@ -307,45 +366,8 @@ def make_user(
307366
assert user.name == xml_user.get("name")
308367
assert xml_user.get("authSetting") == (user.auth_setting or "ServerDefault")
309368

310-
license_map = {
311-
"Viewer": "Viewer",
312-
"Explorer": "Explorer",
313-
"ExplorerCanPublish": "Explorer",
314-
"Creator": "Creator",
315-
"SiteAdministratorExplorer": "Explorer",
316-
"SiteAdministratorCreator": "Creator",
317-
"ServerAdministrator": "Creator",
318-
"Unlicensed": "Unlicensed",
319-
}
320-
publish_map = {
321-
"Unlicensed": 0,
322-
"Viewer": 0,
323-
"Explorer": 0,
324-
"Creator": 1,
325-
"ExplorerCanPublish": 1,
326-
"SiteAdministratorExplorer": 1,
327-
"SiteAdministratorCreator": 1,
328-
"ServerAdministrator": 1,
329-
}
330-
admin_map = {
331-
"SiteAdministratorExplorer": "Site",
332-
"SiteAdministratorCreator": "Site",
333-
"ServerAdministrator": "System",
334-
}
335-
336-
csv_columns = ["name", "password", "fullname", "license", "admin", "publish", "email"]
337-
csv_file = io.StringIO(segments[0].split(b"\n\n")[1].decode("utf-8"))
338-
csv_reader = csv.reader(csv_file)
339-
for user, row in zip(users, csv_reader):
340-
site_role = user.site_role or "Unlicensed"
341-
name = f"{user.domain_name}\\{user.name}" if user.domain_name else user.name
342-
csv_user = dict(zip(csv_columns, row))
343-
assert name == csv_user["name"]
344-
assert (user.fullname or "") == csv_user["fullname"]
345-
assert (user.email or "") == csv_user["email"]
346-
assert license_map[site_role] == csv_user["license"]
347-
assert admin_map.get(site_role, "") == csv_user["admin"]
348-
assert publish_map[site_role] == int(csv_user["publish"])
369+
csv_data = create_users_csv(users).replace(b"\r\n", b"\n")
370+
assert csv_data.strip() == segments[0].split(b"\n\n")[1].strip()
349371

350372
def test_bulk_add_no_name(self):
351373
self.server.version = "3.15"

0 commit comments

Comments
 (0)