selftest: add get_env_credentials()
authorRob van der Linde <rob@catalyst.net.nz>
Wed, 13 Dec 2023 01:00:45 +0000 (14:00 +1300)
committerDouglas Bagnall <dbagnall@samba.org>
Thu, 21 Dec 2023 02:05:38 +0000 (02:05 +0000)
This is like get_credentials but works for tests that are based
on environment variable for usernames and passwords.

Signed-off-by: Rob van der Linde <rob@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
python/samba/tests/__init__.py

index fd5005df7d8b19bc96d3a5f5663700c78ff4eaa7..a9f45b437c23bbd2d250702d60656b51017be511 100644 (file)
@@ -200,6 +200,25 @@ class TestCase(unittest.TestCase):
     def get_credentials(self):
         return cmdline_credentials
 
+    @classmethod
+    def get_env_credentials(cls, *, lp, env_username, env_password,
+                            env_realm=None, env_domain=None):
+        creds = credentials.Credentials()
+
+        # guess Credentials parameters here. Otherwise, workstation
+        # and domain fields are NULL and gencache code segfaults
+        creds.guess(lp)
+        creds.set_username(env_get_var_value(env_username))
+        creds.set_password(env_get_var_value(env_password))
+
+        if env_realm is not None:
+            creds.set_realm(env_get_var_value(env_realm))
+
+        if env_domain is not None:
+            creds.set_domain(env_get_var_value(env_domain))
+
+        return creds
+
     def get_creds_ccache_name(self):
         creds = self.get_credentials()
         ccache = creds.get_named_ccache(self.get_loadparm())