|
2 | 2 | import io
|
3 | 3 | import os
|
4 | 4 | from pathlib import Path
|
| 5 | +import re |
5 | 6 | import unittest
|
6 | 7 | from unittest.mock import patch
|
7 | 8 |
|
@@ -520,3 +521,34 @@ def test_add_idp_and_auth_error(self) -> None:
|
520 | 521 |
|
521 | 522 | with pytest.raises(ValueError, match="User cannot have both authSetting and idpConfigurationId."):
|
522 | 523 | self.server.users.bulk_add(users)
|
| 524 | + |
| 525 | + def test_remove_users_csv(self) -> None: |
| 526 | + self.server.version = "3.15" |
| 527 | + users = [ |
| 528 | + make_user("Alice", "Viewer"), |
| 529 | + make_user("Bob", "Explorer"), |
| 530 | + make_user("Charlie", "Creator", "SAML"), |
| 531 | + make_user("Dave"), |
| 532 | + make_user( "Eve", "ServerAdministrator", "OpenID", "example.com", "Eve Example", "[email protected]"), |
| 533 | + make_user( "Frank", "SiteAdministratorExplorer", "TableauIDWithMFA", email="[email protected]"), |
| 534 | + make_user( "Grace", "SiteAdministratorCreator", "SAML", "example.com", "Grace Example", "[email protected]"), |
| 535 | + make_user("Hank", "Unlicensed"), |
| 536 | + make_user("Ivy", "Unlicensed", idp_id="0123456789"), |
| 537 | + ] |
| 538 | + |
| 539 | + data = remove_users_csv(users) |
| 540 | + assert isinstance(data, bytes), "remove_users_csv should return bytes" |
| 541 | + csv_data = data.decode("utf-8") |
| 542 | + records = re.split(r"\r?\n", csv_data.strip()) |
| 543 | + assert len(records) == len(users), "Number of records in csv does not match number of users" |
| 544 | + |
| 545 | + for user, record in zip(users, records): |
| 546 | + name, *rest = record.strip().split(",") |
| 547 | + assert len(rest) == 6, "Number of fields in csv does not match expected number" |
| 548 | + assert all([f == "" for f in rest]), "All fields except name should be empty" |
| 549 | + if user.domain_name is None: |
| 550 | + assert name == user.name, f"Name in csv does not match expected name: {user.name}" |
| 551 | + else: |
| 552 | + assert ( |
| 553 | + name == f"{user.domain_name}\\{user.name}" |
| 554 | + ), f"Name in csv does not match expected name: {user.domain_name}\\{user.name}" |
0 commit comments