The branch, master has been updated
via dfc10604dd6 python:tests: Take INTERDOMAIN_TRUST into account
via b694ca1f15b python:tests: Add debug output to
test_query_filter_enum()
via 7043c1a06c4 python:tests: Use random users for domain_auth_silo.py
via d9a64ed79c3 python:tests: Use random users for user_auth_silo.py
via a3411768747 python:tests: Use random users for user_auth_policy.py
via 7d0dd5063c7 selftest: Create libdir in setup_clusteredmember()
via 3bbbebb1731 selftest: Add blackbox claims test to knownfail_mit_kdc
from a485a910473 bootstrap: Remove libtracker-sparql-2
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit dfc10604dd64b5b7c390571e12ce28762abc2422
Author: Andreas Schneider <[email protected]>
Date: Tue Nov 11 07:26:16 2025 +0100
python:tests: Take INTERDOMAIN_TRUST into account
If we run e.g. fl2008rc2 env before we run this test, we have a trust
account
for this domain.
Signed-off-by: Andreas Schneider <[email protected]>
Reviewed-by: Douglas Bagnall <[email protected]>
Autobuild-User(master): Andreas Schneider <[email protected]>
Autobuild-Date(master): Fri Nov 14 19:23:38 UTC 2025 on atb-devel-224
commit b694ca1f15b38749ab8c2f0b1b711bade9bd9712
Author: Andreas Schneider <[email protected]>
Date: Fri Nov 7 13:23:34 2025 +0100
python:tests: Add debug output to test_query_filter_enum()
This test runs relatively late in 'make test'. It finds some accounts which
are
neither a computer nor a user account and complains that the overall account
count doesn't match.
Add some debug so we can find out more about the accounts.
Signed-off-by: Andreas Schneider <[email protected]>
Reviewed-by: Douglas Bagnall <[email protected]>
commit 7043c1a06c4c10a43d1fe6555646645aaa1f8f60
Author: Andreas Schneider <[email protected]>
Date: Mon Nov 10 11:11:28 2025 +0100
python:tests: Use random users for domain_auth_silo.py
Signed-off-by: Andreas Schneider <[email protected]>
Reviewed-by: Jennifer Sutton <[email protected]>
Reviewed-by: Douglas Bagnall <[email protected]>
commit d9a64ed79c3d3f4306528c89be02f6dc82744269
Author: Andreas Schneider <[email protected]>
Date: Mon Nov 10 11:06:11 2025 +0100
python:tests: Use random users for user_auth_silo.py
Signed-off-by: Andreas Schneider <[email protected]>
Reviewed-by: Jennifer Sutton <[email protected]>
Reviewed-by: Douglas Bagnall <[email protected]>
commit a34117687478858fb4f883db44463bc63524a8ee
Author: Andreas Schneider <[email protected]>
Date: Mon Nov 10 11:01:05 2025 +0100
python:tests: Use random users for user_auth_policy.py
We should not work on alice, bob and joe. We should use random user so we
can
clean up afterwards. If we don't do this the dbcheck tests will fails with:
UNEXPECTED(failure): samba4.blackbox.dbcheck(ad_dc).dbcheck(ad_dc:local)
REASON: Exception: Exception: Checking 21449 objects
WARNING: target DN is deleted for msDS-AssignedAuthNPolicy in object
CN=alice,CN=Users,DC=addom,DC=samba,DC=example,DC=com -
<GUID=66bd1f51-084f-4259-a769-efa59adb6e31>;<RMD_ADDTIM
E=134051822550000000>;<RMD_CHANGETIME=134051822550000000>;<RMD_FLAGS=1>;<RMD_INVOCID=b5064b02-c91e-40c0-bc1f-a92a0105a810>;<RMD_LOCAL_USN=14061>;<RMD_ORIGINATING_USN=14061>;<RMD_VE
RSION=2>;CN=User Policy,CN=AuthN Policies,CN=AuthN Policy
Configuration,CN=Services,CN=Configuration,DC=addom,DC=samba,DC=example,DC=com
Target GUID points at deleted DN 'CN=User
Policy\\0ADEL:66bd1f51-084f-4259-a769-efa59adb6e31,CN=Deleted
Objects,CN=Configuration,DC=addom,DC=samba,DC=example,DC=com'
Not removing
WARNING: target DN is deleted for msDS-AssignedAuthNPolicySilo in object
CN=alice,CN=Users,DC=addom,DC=samba,DC=example,DC=com -
<GUID=287d6c3d-bea8-4c06-bdf8-7d4b579bc0e9>;<RMD_AD
DTIME=134051822560000000>;<RMD_CHANGETIME=134051822560000000>;<RMD_FLAGS=1>;<RMD_INVOCID=b5064b02-c91e-40c0-bc1f-a92a0105a810>;<RMD_LOCAL_USN=14081>;<RMD_ORIGINATING_USN=14081>;<RM
D_VERSION=2>;CN=Developers,CN=AuthN Silos,CN=AuthN Policy
Configuration,CN=Services,CN=Configuration,DC=addom,DC=samba,DC=example,DC=com
Target GUID points at deleted DN
'CN=Developers\\0ADEL:287d6c3d-bea8-4c06-bdf8-7d4b579bc0e9,CN=Deleted
Objects,CN=Configuration,DC=addom,DC=samba,DC=example,DC=com'
Not removing
WARNING: target DN is deleted for msDS-AssignedAuthNPolicy in object
CN=bob,CN=Users,DC=addom,DC=samba,DC=example,DC=com -
<GUID=66bd1f51-084f-4259-a769-efa59adb6e31>;<RMD_ADDTIME=
134051822550000000>;<RMD_CHANGETIME=134051822550000000>;<RMD_FLAGS=1>;<RMD_INVOCID=b5064b02-c91e-40c0-bc1f-a92a0105a810>;<RMD_LOCAL_USN=14065>;<RMD_ORIGINATING_USN=14065>;<RMD_VERS
ION=4>;CN=User Policy,CN=AuthN Policies,CN=AuthN Policy
Configuration,CN=Services,CN=Configuration,DC=addom,DC=samba,DC=example,DC=com
Target GUID points at deleted DN 'CN=User
Policy\\0ADEL:66bd1f51-084f-4259-a769-efa59adb6e31,CN=Deleted
Objects,CN=Configuration,DC=addom,DC=samba,DC=example,DC=com'
Not removing
WARNING: target DN is deleted for msDS-AssignedAuthNPolicySilo in object
CN=bob,CN=Users,DC=addom,DC=samba,DC=example,DC=com -
<GUID=1a1e5cdf-b92e-4a80-bc35-cccad8e9f865>;<RMD_ADDT
IME=134051822560000000>;<RMD_CHANGETIME=134051822560000000>;<RMD_FLAGS=1>;<RMD_INVOCID=b5064b02-c91e-40c0-bc1f-a92a0105a810>;<RMD_LOCAL_USN=14085>;<RMD_ORIGINATING_USN=14085>;<RMD_
VERSION=4>;CN=QA,CN=AuthN Silos,CN=AuthN Policy
Configuration,CN=Services,CN=Configuration,DC=addom,DC=samba,DC=example,DC=com
Target GUID points at deleted DN
'CN=QA\\0ADEL:1a1e5cdf-b92e-4a80-bc35-cccad8e9f865,CN=Deleted
Objects,CN=Configuration,DC=addom,DC=samba,DC=example,DC=com'
Not removing
Checked 21449 objects (4 errors)
Signed-off-by: Andreas Schneider <[email protected]>
Reviewed-by: Jennifer Sutton <[email protected]>
Reviewed-by: Douglas Bagnall <[email protected]>
commit 7d0dd5063c74e61e33083a1b8916534255d519e4
Author: Andreas Schneider <[email protected]>
Date: Mon Nov 10 15:49:59 2025 +0100
selftest: Create libdir in setup_clusteredmember()
This fixes:
can't open st/clusteredmember/lib/krb5.conf at selftest/target/Samba.pm
line 328.
Signed-off-by: Andreas Schneider <[email protected]>
Reviewed-by: Jennifer Sutton <[email protected]>
Reviewed-by: Douglas Bagnall <[email protected]>
commit 3bbbebb1731e9564a430845ccd27dc215b66eed8
Author: Andreas Schneider <[email protected]>
Date: Mon Nov 10 10:40:52 2025 +0100
selftest: Add blackbox claims test to knownfail_mit_kdc
Signed-off-by: Andreas Schneider <[email protected]>
Reviewed-by: Jennifer Sutton <[email protected]>
Reviewed-by: Douglas Bagnall <[email protected]>
-----------------------------------------------------------------------
Summary of changes:
python/samba/tests/samba_tool/domain_auth_silo.py | 64 ++++++++----
python/samba/tests/samba_tool/domain_models.py | 53 ++++++++--
python/samba/tests/samba_tool/user_auth_policy.py | 115 +++++++++++++++++-----
python/samba/tests/samba_tool/user_auth_silo.py | 111 ++++++++++++++++-----
selftest/knownfail_mit_kdc.d/claims | 5 +
selftest/target/Samba3.pm | 4 +
6 files changed, 281 insertions(+), 71 deletions(-)
Changeset truncated at 500 lines:
diff --git a/python/samba/tests/samba_tool/domain_auth_silo.py
b/python/samba/tests/samba_tool/domain_auth_silo.py
index 2659c15c9af..b7111f6d0f4 100644
--- a/python/samba/tests/samba_tool/domain_auth_silo.py
+++ b/python/samba/tests/samba_tool/domain_auth_silo.py
@@ -503,6 +503,19 @@ class AuthSiloMemberCmdTestCase(SiloTest):
def setUp(self):
super().setUp()
+ # Create random test users
+ self.user1 = self.randomName() # alice
+ self.user2 = self.randomName() # bob
+ self.user3 = self.randomName() # jane
+ self.user4 = self.randomName() # joe
+
+ # Create the users with random passwords
+ password = self.random_password()
+ self.runcmd("user", "add", self.user1, password)
+ self.runcmd("user", "add", self.user2, password)
+ self.runcmd("user", "add", self.user3, password)
+ self.runcmd("user", "add", self.user4, password)
+
# Create an organisational unit to test in.
self.ou = self.samdb.get_default_basedn()
self.ou.add_child("OU=Domain Auth Tests")
@@ -510,9 +523,22 @@ class AuthSiloMemberCmdTestCase(SiloTest):
self.addCleanup(self.samdb.delete, self.ou, ["tree_delete:1"])
# Grant member access to silos
- self.grant_silo_access("Developers", "bob")
- self.grant_silo_access("Developers", "jane")
- self.grant_silo_access("Managers", "alice")
+ self.grant_silo_access("Developers", self.user2)
+ self.grant_silo_access("Developers", self.user3)
+ self.grant_silo_access("Managers", self.user1)
+
+ def tearDown(self):
+ # Revoke silo access granted in setUp() before deleting users
+ self.revoke_silo_access("Developers", self.user2)
+ self.revoke_silo_access("Developers", self.user3)
+ self.revoke_silo_access("Managers", self.user1)
+
+ # Delete the random test users
+ self.runcmd("user", "delete", self.user1)
+ self.runcmd("user", "delete", self.user2)
+ self.runcmd("user", "delete", self.user3)
+ self.runcmd("user", "delete", self.user4)
+ super().tearDown()
def create_computer(self, name):
"""Create a Computer and return the dn."""
@@ -530,7 +556,6 @@ class AuthSiloMemberCmdTestCase(SiloTest):
self.assertIn(
f"User {member} granted access to the authentication silo {silo}",
out)
- self.addCleanup(self.revoke_silo_access, silo, member)
def revoke_silo_access(self, silo, member):
"""Revoke a member from an authentication silo."""
@@ -542,24 +567,24 @@ class AuthSiloMemberCmdTestCase(SiloTest):
def test_member_list(self):
"""Test listing authentication policy members in list format."""
- alice = self.get_user("alice")
- jane = self.get_user("jane")
- bob = self.get_user("bob")
+ user1 = self.get_user(self.user1)
+ user3 = self.get_user(self.user3)
+ user2 = self.get_user(self.user2)
result, out, err = self.runcmd("domain", "auth", "silo",
"member", "list",
"--name", "Developers")
self.assertIsNone(result, msg=err)
- self.assertIn(str(bob.dn), out)
- self.assertIn(str(jane.dn), out)
- self.assertNotIn(str(alice.dn), out)
+ self.assertIn(str(user2.dn), out)
+ self.assertIn(str(user3.dn), out)
+ self.assertNotIn(str(user1.dn), out)
def test_member_list___json(self):
"""Test listing authentication policy members list in json format."""
- alice = self.get_user("alice")
- jane = self.get_user("jane")
- bob = self.get_user("bob")
+ user1 = self.get_user(self.user1)
+ user3 = self.get_user(self.user3)
+ user2 = self.get_user(self.user2)
result, out, err = self.runcmd("domain", "auth", "silo",
"member", "list",
@@ -568,9 +593,9 @@ class AuthSiloMemberCmdTestCase(SiloTest):
self.assertIsNone(result, msg=err)
members = json.loads(out)
members_dn = [member["dn"] for member in members]
- self.assertIn(str(bob.dn), members_dn)
- self.assertIn(str(jane.dn), members_dn)
- self.assertNotIn(str(alice.dn), members_dn)
+ self.assertIn(str(user2.dn), members_dn)
+ self.assertIn(str(user3.dn), members_dn)
+ self.assertNotIn(str(user1.dn), members_dn)
def test_member_list__name_missing(self):
"""Test list authentication policy members without the name
argument."""
@@ -582,14 +607,17 @@ class AuthSiloMemberCmdTestCase(SiloTest):
def test_member_grant__user(self):
"""Test adding a user to an authentication silo."""
- self.grant_silo_access("Developers", "joe")
+ self.grant_silo_access("Developers", self.user4)
# Check if member is in silo
- user = self.get_user("joe")
+ user = self.get_user(self.user4)
silo = self.get_authentication_silo("Developers")
members = [str(member) for member in
silo["msDS-AuthNPolicySiloMembers"]]
self.assertIn(str(user.dn), members)
+ # Clean up: revoke access before tearDown deletes the user
+ self.revoke_silo_access("Developers", self.user4)
+
def test_member_grant__computer(self):
"""Test adding a computer to an authentication silo"""
name = self.unique_name()
diff --git a/python/samba/tests/samba_tool/domain_models.py
b/python/samba/tests/samba_tool/domain_models.py
index 79b38377ddc..527fab01d5e 100644
--- a/python/samba/tests/samba_tool/domain_models.py
+++ b/python/samba/tests/samba_tool/domain_models.py
@@ -64,14 +64,55 @@ class ModelTests(SambaToolCmdTest):
def test_query_filter_enum(self):
"""Tests filtering by an EnumField."""
- robots_vs_humans = User.query(self.samdb).count
- robots = User.query(self.samdb,
- account_type=AccountType.WORKSTATION_TRUST).count
- humans = User.query(self.samdb,
- account_type=AccountType.NORMAL_ACCOUNT).count
+ all_users = list(User.query(self.samdb))
+ robots_vs_humans = len(all_users)
+
+ robots_list = list(
+ User.query(self.samdb, account_type=AccountType.WORKSTATION_TRUST)
+ )
+ robots = len(robots_list)
+
+ humans_list = list(
+ User.query(self.samdb, account_type=AccountType.NORMAL_ACCOUNT)
+ )
+ humans = len(humans_list)
+ trusts_list = list(
+ User.query(self.samdb, account_type=AccountType.INTERDOMAIN_TRUST)
+ )
+ trusts = len(trusts_list)
+
+ # Debug output
+ print("\n=== Debug Output for test_query_filter_enum ===")
+ print(f"Total users: {robots_vs_humans}")
+ print(f"Robots (WORKSTATION_TRUST): {robots}")
+ print(f"Humans (NORMAL_ACCOUNT): {humans}")
+ print(f"Trusts (INTERDOMAIN_TRUST): {trusts}")
+ print(f"Sum (robots + humans + trusts): {robots + humans + trusts}")
+ print(f"Difference: {robots_vs_humans - (robots + humans + trusts)}")
+
+ # Find users that are neither robots nor humans
+ robots_dns = {str(user.dn) for user in robots_list}
+ humans_dns = {str(user.dn) for user in humans_list}
+ trust_dns = {str(user.dn) for user in trusts_list}
+ all_dns = {str(user.dn) for user in all_users}
+ other_dns = all_dns - robots_dns - humans_dns - trust_dns
+
+ if other_dns:
+ print(f"\nUsers that are neither WORKSTATION_TRUST nor "
+ f"NORMAL_ACCOUNT nor INTERDOMAIN_TRUST ({len(other_dns)}):")
+ for user in all_users:
+ if str(user.dn) in other_dns:
+ account_type_value = user.account_type
+ print(f" - {user.account_name}: "
+ f"account_type={account_type_value}")
+
+ print("=== End Debug Output ===\n")
+
self.assertNotEqual(robots, 0)
self.assertNotEqual(humans, 0)
- self.assertEqual(robots + humans, robots_vs_humans)
+ # If we have domain trusts or not, depends if we have setup
+ # environments with domain trusts before.
+ self.assertEqual(robots + humans + trusts, robots_vs_humans)
def test_as_dict(self):
"""Test the as_dict method for serializing to dict then JSON."""
diff --git a/python/samba/tests/samba_tool/user_auth_policy.py
b/python/samba/tests/samba_tool/user_auth_policy.py
index 035a1f2941f..65ce8d8455f 100644
--- a/python/samba/tests/samba_tool/user_auth_policy.py
+++ b/python/samba/tests/samba_tool/user_auth_policy.py
@@ -26,61 +26,126 @@ from .silo_base import SiloTest
class AuthPolicyCmdTestCase(SiloTest):
+
+ def setUp(self):
+ super().setUp()
+ # Create random test users
+ self.user1 = self.randomName()
+ self.user2 = self.randomName()
+ self.user3 = self.randomName()
+
+ # Create the users with random passwords
+ password = self.random_password()
+ self.runcmd("user", "add", self.user1, password)
+ self.runcmd("user", "add", self.user2, password)
+ self.runcmd("user", "add", self.user3, password)
+
+ def tearDown(self):
+ # Remove policy assignments before deleting users
+ # (ignore errors if no assignment exists)
+ self.runcmd("user", "auth", "policy", "remove", self.user1)
+ self.runcmd("user", "auth", "policy", "remove", self.user2)
+
+ # Delete the random test users
+ self.runcmd("user", "delete", self.user1)
+ self.runcmd("user", "delete", self.user2)
+ self.runcmd("user", "delete", self.user3)
+ super().tearDown()
+
def test_assign(self):
"""Test assigning an authentication policy to a user."""
- self.addCleanup(self.runcmd, "user", "auth", "policy", "remove",
"alice")
- result, out, err = self.runcmd("user", "auth", "policy", "assign",
- "alice", "--policy", "User Policy")
+ self.addCleanup(
+ self.runcmd, "user", "auth", "policy", "remove", self.user1
+ )
+ result, out, err = self.runcmd(
+ "user",
+ "auth",
+ "policy",
+ "assign",
+ self.user1,
+ "--policy",
+ "User Policy",
+ )
self.assertIsNone(result, msg=err)
- # Assigned policy should be 'Developers'
- user = User.get(self.samdb, account_name="alice")
+ # Assigned policy should be 'User Policy'
+ user = User.get(self.samdb, account_name=self.user1)
policy = AuthenticationPolicy.get(self.samdb, dn=user.assigned_policy)
self.assertEqual(policy.name, "User Policy")
def test_assign__invalid_policy(self):
- """Test assigning a non-existing authentication policy to a user."""
- result, out, err = self.runcmd("user", "auth", "policy", "assign",
- "alice", "--policy", "doesNotExist")
+ """Test assigning a non-existing authentication policy."""
+ result, out, err = self.runcmd(
+ "user",
+ "auth",
+ "policy",
+ "assign",
+ self.user1,
+ "--policy",
+ "doesNotExist",
+ )
self.assertEqual(result, -1)
self.assertIn("Authentication policy doesNotExist not found.", err)
def test_remove(self):
- """Test removing the assigned authentication policy from a user."""
+ """Test removing the assigned authentication policy."""
# First assign a policy, so we can test removing it.
- self.runcmd("user", "auth", "policy", "assign", "bob", "--policy",
- "User Policy")
+ self.runcmd(
+ "user",
+ "auth",
+ "policy",
+ "assign",
+ self.user2,
+ "--policy",
+ "User Policy",
+ )
# Assigned policy should be set
- user = User.get(self.samdb, account_name="bob")
+ user = User.get(self.samdb, account_name=self.user2)
self.assertIsNotNone(user.assigned_policy)
# Now try removing it
- result, out, err = self.runcmd("user", "auth", "policy", "remove",
- "bob")
+ result, out, err = self.runcmd(
+ "user", "auth", "policy", "remove", self.user2
+ )
self.assertIsNone(result, msg=err)
# Assigned policy should be None
- user = User.get(self.samdb, account_name="bob")
+ user = User.get(self.samdb, account_name=self.user2)
self.assertIsNone(user.assigned_policy)
def test_view(self):
- """Test viewing the current assigned authentication policy on a
user."""
+ """Test viewing the assigned authentication policy."""
# Assign a policy on one of the users.
- self.addCleanup(self.runcmd, "user", "auth", "policy", "remove", "bob")
- self.runcmd("user", "auth", "policy", "assign", "bob", "--policy",
- "User Policy")
+ self.addCleanup(
+ self.runcmd, "user", "auth", "policy", "remove", self.user2
+ )
+ self.runcmd(
+ "user",
+ "auth",
+ "policy",
+ "assign",
+ self.user2,
+ "--policy",
+ "User Policy",
+ )
# Test user with a policy assigned.
- result, out, err = self.runcmd("user", "auth", "policy", "view",
- "bob")
+ result, out, err = self.runcmd(
+ "user", "auth", "policy", "view", self.user2
+ )
self.assertIsNone(result, msg=err)
self.assertEqual(
- out, "User bob assigned to authentication policy User Policy\n")
+ out,
+ f"User {self.user2} assigned to authentication policy "
+ f"User Policy\n",
+ )
# Test user without a policy assigned.
- result, out, err = self.runcmd("user", "auth", "policy", "view",
- "joe")
+ result, out, err = self.runcmd(
+ "user", "auth", "policy", "view", self.user3
+ )
self.assertIsNone(result, msg=err)
self.assertEqual(
- out, "User joe has no assigned authentication policy.\n")
+ out, f"User {self.user3} has no assigned authentication policy.\n"
+ )
diff --git a/python/samba/tests/samba_tool/user_auth_silo.py
b/python/samba/tests/samba_tool/user_auth_silo.py
index 8ffc80cfcf4..2f682115924 100644
--- a/python/samba/tests/samba_tool/user_auth_silo.py
+++ b/python/samba/tests/samba_tool/user_auth_silo.py
@@ -26,59 +26,126 @@ from .silo_base import SiloTest
class AuthPolicyCmdTestCase(SiloTest):
+
+ def setUp(self):
+ super().setUp()
+ # Create random test users
+ self.user1 = self.randomName()
+ self.user2 = self.randomName()
+ self.user3 = self.randomName()
+
+ # Create the users with random passwords
+ password = self.random_password()
+ self.runcmd("user", "add", self.user1, password)
+ self.runcmd("user", "add", self.user2, password)
+ self.runcmd("user", "add", self.user3, password)
+
+ def tearDown(self):
+ # Remove silo assignments before deleting users
+ # (ignore errors if no assignment exists)
+ self.runcmd("user", "auth", "silo", "remove", self.user1)
+ self.runcmd("user", "auth", "silo", "remove", self.user2)
+
+ # Delete the random test users
+ self.runcmd("user", "delete", self.user1)
+ self.runcmd("user", "delete", self.user2)
+ self.runcmd("user", "delete", self.user3)
+ super().tearDown()
+
def test_assign(self):
"""Test assigning an authentication silo to a user."""
- self.addCleanup(self.runcmd, "user", "auth", "silo", "remove", "alice")
- result, out, err = self.runcmd("user", "auth", "silo", "assign",
- "alice", "--silo", "Developers")
+ self.addCleanup(
+ self.runcmd, "user", "auth", "silo", "remove", self.user1
+ )
+ result, out, err = self.runcmd(
+ "user",
+ "auth",
+ "silo",
+ "assign",
+ self.user1,
+ "--silo",
+ "Developers",
+ )
self.assertIsNone(result, msg=err)
# Assigned silo should be 'Developers'
- user = User.get(self.samdb, account_name="alice")
+ user = User.get(self.samdb, account_name=self.user1)
silo = AuthenticationSilo.get(self.samdb, dn=user.assigned_silo)
self.assertEqual(silo.name, "Developers")
def test_assign__invalid_silo(self):
- """Test assigning a non-existing authentication silo to a user."""
- result, out, err = self.runcmd("user", "auth", "silo", "assign",
- "alice", "--silo", "doesNotExist")
+ """Test assigning a non-existing authentication silo."""
+ result, out, err = self.runcmd(
+ "user",
+ "auth",
+ "silo",
+ "assign",
+ self.user1,
+ "--silo",
+ "doesNotExist",
+ )
self.assertEqual(result, -1)
self.assertIn("Authentication silo doesNotExist not found.", err)
def test_remove(self):
- """Test removing the assigned authentication silo from a user."""
+ """Test removing the assigned authentication silo."""
# First assign a silo, so we can test removing it.
- self.runcmd("user", "auth", "silo", "assign", "bob", "--silo", "QA")
+ self.runcmd(
+ "user",
+ "auth",
+ "silo",
+ "assign",
+ self.user2,
+ "--silo",
+ "QA",
+ )
# Assigned silo should be set
- user = User.get(self.samdb, account_name="bob")
+ user = User.get(self.samdb, account_name=self.user2)
self.assertIsNotNone(user.assigned_silo)
# Now try removing it
- result, out, err = self.runcmd("user", "auth", "silo", "remove",
- "bob")
+ result, out, err = self.runcmd(
+ "user", "auth", "silo", "remove", self.user2
+ )
self.assertIsNone(result, msg=err)
# Assigned silo should be None
- user = User.get(self.samdb, account_name="bob")
+ user = User.get(self.samdb, account_name=self.user2)
self.assertIsNone(user.assigned_silo)
def test_view(self):
- """Test viewing the current assigned authentication silo on a user."""
+ """Test viewing the assigned authentication silo."""
# Assign a silo on one of the users.
- self.addCleanup(self.runcmd, "user", "auth", "silo", "remove", "bob")
- self.runcmd("user", "auth", "silo", "assign", "bob", "--silo", "QA")
+ self.addCleanup(
+ self.runcmd, "user", "auth", "silo", "remove", self.user2
+ )
+ self.runcmd(
+ "user",
+ "auth",
+ "silo",
+ "assign",
+ self.user2,
+ "--silo",
+ "QA",
+ )
# Test user with a silo assigned.
- result, out, err = self.runcmd("user", "auth", "silo", "view",
- "bob")
+ result, out, err = self.runcmd(
+ "user", "auth", "silo", "view", self.user2
+ )
self.assertIsNone(result, msg=err)
self.assertEqual(
- out, "User bob assigned to authentication silo QA (revoked)\n")
+ out,
+ f"User {self.user2} assigned to authentication silo "
+ f"QA (revoked)\n",
+ )
# Test user without a silo assigned.
- result, out, err = self.runcmd("user", "auth", "silo", "view",
- "joe")
+ result, out, err = self.runcmd(
+ "user", "auth", "silo", "view", self.user3
+ )
self.assertIsNone(result, msg=err)
self.assertEqual(
- out, "User joe has no assigned authentication silo.\n")
+ out, f"User {self.user3} has no assigned authentication silo.\n"
+ )
--
Samba Shared Repository