Skip to content

Commit 4dab895

Browse files
committed
chore: split csv add creation to own test
1 parent 70c6b20 commit 4dab895

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
@@ -10,6 +10,7 @@
1010

1111
import tableauserverclient as TSC
1212
from tableauserverclient.datetime_helpers import format_datetime
13+
from tableauserverclient.server.endpoint.users_endpoint import create_users_csv, remove_users_csv
1314

1415
TEST_ASSET_DIR = Path(__file__).resolve().parent / "assets"
1516

@@ -27,6 +28,26 @@
2728
USERS = os.path.join(TEST_ASSET_DIR, "Data", "user_details.csv")
2829

2930

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

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

320+
321+
322+
323+
def test_bulk_add(self):
265324
self.server.version = "3.15"
266325
users = [
267326
make_user("Alice", "Viewer"),
@@ -305,45 +364,8 @@ def make_user(
305364
assert user.name == xml_user.get("name")
306365
assert xml_user.get("authSetting") == (user.auth_setting or "ServerDefault")
307366

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

348370
def test_bulk_add_no_name(self):
349371
self.server.version = "3.15"

0 commit comments

Comments
 (0)