HACK pycredentials tests
authorStefan Metzmacher <metze@samba.org>
Tue, 9 Jan 2018 13:01:17 +0000 (14:01 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 29 Oct 2019 13:33:03 +0000 (14:33 +0100)
auth/credentials/pycredentials.c
python/samba/tests/py_credentials.py

index 446f30970a2f68c9d0bf1081e93afedb5396f6ef..cb7d6dcef3b836e9f426b80f801e2bf74b834271 100644 (file)
@@ -335,7 +335,7 @@ static PyObject *py_creds_set_domain(PyObject *self, PyObject *args)
                return NULL;
        }
 
-       if (!PyArg_ParseTuple(args, "s|i", &newval, &_obt)) {
+       if (!PyArg_ParseTuple(args, "z|i", &newval, &_obt)) {
                return NULL;
        }
        obt = _obt;
index b16c726a023a890fdcf51710fa40cc85fcbf573b..614a2d019b1ca8715652d4a40872646a89e515f1 100644 (file)
@@ -157,6 +157,60 @@ class PyCredentialsTests(TestCase):
             else:
                 self.fail("got unexpected error" + str(e))
 
+    def test_SamLogonEx_null_domain(self):
+        c = self.get_netlogon_connection()
+
+        self.user_creds.set_domain(None)
+
+        logon = samlogon_logon_info(self.domain,
+                                    self.machine_name,
+                                    self.user_creds)
+
+        logon_level = netlogon.NetlogonNetworkTransitiveInformation
+        validation_level = netlogon.NetlogonValidationSamInfo4
+        netr_flags = 0
+
+        try:
+            c.netr_LogonSamLogonEx(self.server,
+                                   self.user_creds.get_workstation(),
+                                   logon_level,
+                                   logon,
+                                   validation_level,
+                                   netr_flags)
+        except NTSTATUSError as e:
+            enum = ctypes.c_uint32(e[0]).value
+            if enum == ntstatus.NT_STATUS_WRONG_PASSWORD:
+                self.fail("got wrong password error")
+            else:
+                self.fail("got unexpected error" + str(e))
+
+    def test_SamLogonEx_hostname(self):
+        c = self.get_netlogon_connection()
+
+        self.user_creds.set_domain(self.server)
+
+        logon = samlogon_logon_info(self.domain,
+                                    self.machine_name,
+                                    self.user_creds)
+
+        logon_level = netlogon.NetlogonNetworkTransitiveInformation
+        validation_level = netlogon.NetlogonValidationSamInfo4
+        netr_flags = 0
+
+        try:
+            c.netr_LogonSamLogonEx(self.server,
+                                   self.user_creds.get_workstation(),
+                                   logon_level,
+                                   logon,
+                                   validation_level,
+                                   netr_flags)
+        except NTSTATUSError as e:
+            enum = ctypes.c_uint32(e[0]).value
+            if enum == ntstatus.NT_STATUS_WRONG_PASSWORD:
+                self.fail("got wrong password error")
+            else:
+                self.fail("got unexpected error" + str(e))
+
     def test_SamLogonExNTLM(self):
         c = self.get_netlogon_connection()
 
@@ -252,7 +306,7 @@ class PyCredentialsTests(TestCase):
     # Establish sealed schannel netlogon connection over TCP/IP
     #
     def get_netlogon_connection(self):
-        return netlogon.netlogon("ncacn_ip_tcp:%s[schannel,seal]" % self.server,
+        return netlogon.netlogon("ncacn_ip_tcp:%s[schannel,seal,print]" % self.server,
                                  self.lp,
                                  self.machine_creds)