credentials: Add test for credentials behaviour
[jlayton/samba.git] / python / samba / tests / credentials.py
index a08ef3e5dc5dd424e89d20cf77ee1088495e2f14..a228327866177413710b3f7704d8c2fe829eba2e 100644 (file)
@@ -23,6 +23,7 @@ the functionality, that's already done in other tests.
 
 from samba import credentials
 import samba.tests
+import os
 
 class CredentialsTests(samba.tests.TestCase):
 
@@ -98,10 +99,6 @@ class CredentialsTests(samba.tests.TestCase):
         self.assertEqual('\xc2\xae\x1f\xe6\xe6H\x84cRE>\x81o*\xeb\x93',
                          self.creds.get_nt_hash())
 
-    def test_guess(self):
-        # Just check the method is there and doesn't raise an exception
-        self.creds.guess()
-
     def test_set_cmdline_callbacks(self):
         self.creds.set_cmdline_callbacks()
 
@@ -113,3 +110,102 @@ class CredentialsTests(samba.tests.TestCase):
 
     def test_wrong_password(self):
         self.assertFalse(self.creds.wrong_password())
+
+    def test_guess(self):
+        creds = credentials.Credentials()
+        lp = samba.tests.env_loadparm()
+        os.environ["USER"] = "env_user"
+        creds.guess(lp)
+        self.assertEqual(creds.get_username(), "env_user")
+        self.assertEqual(creds.get_domain(), lp.get("workgroup").upper())
+        self.assertEqual(creds.get_realm(), lp.get("realm").upper())
+        self.assertEqual(creds.is_anonymous(), False)
+        self.assertEqual(creds.authentication_requested(), False)
+
+    def test_set_anonymous(self):
+        creds = credentials.Credentials()
+        lp = samba.tests.env_loadparm()
+        os.environ["USER"] = "env_user"
+        creds.guess(lp)
+        creds.set_anonymous()
+        self.assertEqual(creds.get_username(), "")
+        self.assertEqual(creds.get_domain(), "")
+        self.assertEqual(creds.get_realm(), None)
+        self.assertEqual(creds.is_anonymous(), True)
+        self.assertEqual(creds.authentication_requested(), False)
+
+    def test_parse_username(self):
+        creds = credentials.Credentials()
+        lp = samba.tests.env_loadparm()
+        os.environ["USER"] = "env_user"
+        creds.guess(lp)
+        creds.parse_string("user")
+        self.assertEqual(creds.get_username(), "user")
+        self.assertEqual(creds.get_domain(), lp.get("workgroup").upper())
+        self.assertEqual(creds.get_realm(), lp.get("realm").upper())
+        self.assertEqual(creds.is_anonymous(), False)
+        self.assertEqual(creds.authentication_requested(), True)
+
+    def test_parse_username_with_domain(self):
+        creds = credentials.Credentials()
+        lp = samba.tests.env_loadparm()
+        os.environ["USER"] = "env_user"
+        creds.guess(lp)
+        creds.parse_string("domain\user")
+        self.assertEqual(creds.get_username(), "user")
+        self.assertEqual(creds.get_domain(), "DOMAIN")
+        self.assertEqual(creds.get_realm(), lp.get("realm").upper())
+        self.assertEqual(creds.is_anonymous(), False)
+        self.assertEqual(creds.authentication_requested(), True)
+
+    def test_parse_username_with_realm(self):
+        creds = credentials.Credentials()
+        lp = samba.tests.env_loadparm()
+        os.environ["USER"] = "env_user"
+        creds.guess(lp)
+        creds.parse_string("user@samba.org")
+        self.assertEqual(creds.get_username(), "env_user")
+        self.assertEqual(creds.get_domain(), lp.get("workgroup").upper())
+        self.assertEqual(creds.get_realm(), "SAMBA.ORG")
+        self.assertEqual(creds.is_anonymous(), False)
+        self.assertEqual(creds.authentication_requested(), True)
+
+    def test_parse_username_pw(self):
+        creds = credentials.Credentials()
+        lp = samba.tests.env_loadparm()
+        os.environ["USER"] = "env_user"
+        creds.guess(lp)
+        creds.parse_string("user%pass")
+        self.assertEqual(creds.get_username(), "user")
+        self.assertEqual(creds.get_password(), "pass")
+        self.assertEqual(creds.get_domain(), lp.get("workgroup"))
+        self.assertEqual(creds.get_realm(), lp.get("realm"))
+        self.assertEqual(creds.is_anonymous(), False)
+        self.assertEqual(creds.authentication_requested(), True)
+
+    def test_parse_username_with_domain_pw(self):
+        creds = credentials.Credentials()
+        lp = samba.tests.env_loadparm()
+        os.environ["USER"] = "env_user"
+        creds.guess(lp)
+        creds.parse_string("domain\user%pass")
+        self.assertEqual(creds.get_username(), "user")
+        self.assertEqual(creds.get_domain(), "DOMAIN")
+        self.assertEqual(creds.get_password(), "pass")
+        self.assertEqual(creds.get_realm(), lp.get("realm"))
+        self.assertEqual(creds.is_anonymous(), False)
+        self.assertEqual(creds.authentication_requested(), True)
+
+    def test_parse_username_with_realm_pw(self):
+        creds = credentials.Credentials()
+        lp = samba.tests.env_loadparm()
+        os.environ["USER"] = "env_user"
+        creds.guess(lp)
+        creds.parse_string("user@samba.org%pass")
+        self.assertEqual(creds.get_username(), "env_user")
+        self.assertEqual(creds.get_domain(), lp.get("workgroup").upper())
+        self.assertEqual(creds.get_password(), "pass")
+        self.assertEqual(creds.get_realm(), "SAMBA.ORG")
+        self.assertEqual(creds.get_principal(), "user@samba.org")
+        self.assertEqual(creds.is_anonymous(), False)
+        self.assertEqual(creds.authentication_requested(), True)