93 lines
3.1 KiB
Python
93 lines
3.1 KiB
Python
import copy
|
|
import unittest
|
|
|
|
import win32cred
|
|
|
|
|
|
class TestCredFunctions(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.flags = 0
|
|
self.dummy_cred = {
|
|
"TargetName": "DumyyUser",
|
|
"Type": win32cred.CRED_TYPE_GENERIC,
|
|
"Flags": self.flags,
|
|
}
|
|
|
|
def create_dummy_cred(self):
|
|
cred = copy.deepcopy(self.dummy_cred)
|
|
cred.update(
|
|
{
|
|
"Persist": win32cred.CRED_PERSIST_SESSION,
|
|
}
|
|
)
|
|
try:
|
|
win32cred.CredWrite(cred, self.flags)
|
|
except Exception as e:
|
|
print(e)
|
|
|
|
def is_dummy_cred(self):
|
|
return (
|
|
len(
|
|
[
|
|
e
|
|
for e in win32cred.CredEnumerate()
|
|
if e["TargetName"] == self.dummy_cred["TargetName"]
|
|
]
|
|
)
|
|
== 1
|
|
)
|
|
|
|
def test_creddelete(self):
|
|
self.create_dummy_cred()
|
|
self.assertTrue(self.is_dummy_cred())
|
|
self.assertIsNone(win32cred.CredDelete(**self.dummy_cred))
|
|
self.assertFalse(self.is_dummy_cred())
|
|
self.create_dummy_cred()
|
|
self.assertTrue(self.is_dummy_cred())
|
|
self.assertIsNone(win32cred.CredDelete(*self.dummy_cred.values()))
|
|
self.assertFalse(self.is_dummy_cred())
|
|
self.create_dummy_cred()
|
|
self.assertTrue(self.is_dummy_cred())
|
|
self.assertIsNone(
|
|
win32cred.CredDelete(self.dummy_cred["TargetName"], self.dummy_cred["Type"])
|
|
)
|
|
self.assertFalse(self.is_dummy_cred())
|
|
self.create_dummy_cred()
|
|
self.assertTrue(self.is_dummy_cred())
|
|
self.assertIsNone(win32cred.CredDelete(self.dummy_cred))
|
|
self.assertFalse(self.is_dummy_cred())
|
|
self.create_dummy_cred()
|
|
self.assertTrue(self.is_dummy_cred())
|
|
self.assertIsNone(win32cred.CredDelete(Target=self.dummy_cred))
|
|
self.assertFalse(self.is_dummy_cred())
|
|
self.create_dummy_cred()
|
|
self.assertTrue(self.is_dummy_cred())
|
|
self.assertRaises(TypeError, win32cred.CredDelete, "")
|
|
self.assertRaises(KeyError, win32cred.CredDelete, {})
|
|
self.assertRaises(KeyError, win32cred.CredDelete, {"TargetName": ""})
|
|
self.assertRaises(
|
|
TypeError, win32cred.CredDelete, {"TargetName": "", "Type": 3.141593}
|
|
)
|
|
self.assertIsNone(win32cred.CredDelete(self.dummy_cred))
|
|
self.assertFalse(self.is_dummy_cred())
|
|
|
|
def test_credgetsessiontypes(self):
|
|
res = win32cred.CredGetSessionTypes()
|
|
self.assertEqual(len(res), win32cred.CRED_TYPE_MAXIMUM)
|
|
for i in range(1, len(res)):
|
|
self.assertEqual(res[:i], win32cred.CredGetSessionTypes(i))
|
|
self.assertEqual(
|
|
res[:i], win32cred.CredGetSessionTypes(MaximumPersistCount=i)
|
|
)
|
|
self.assertRaises(
|
|
ValueError,
|
|
win32cred.CredGetSessionTypes,
|
|
0,
|
|
)
|
|
self.assertRaises(
|
|
ValueError,
|
|
win32cred.CredGetSessionTypes,
|
|
MaximumPersistCount=win32cred.CRED_TYPE_MAXIMUM + 1,
|
|
)
|