| Server IP : 123.56.80.60 / Your IP : 216.73.216.78 Web Server : Apache/2.4.54 (Win32) OpenSSL/1.1.1s PHP/7.4.33 mod_fcgid/2.3.10-dev System : Windows NT iZhx3sob14hnz7Z 10.0 build 14393 (Windows Server 2016) i586 User : SYSTEM ( 0) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files/python/Lib/site-packages/win32ctypes/tests/ |
Upload File : |
#
# (C) Copyright 2014 Enthought, Inc., Austin, TX
# All right reserved.
#
# This file is open source software distributed according to the terms in
# LICENSE.txt
#
from __future__ import absolute_import
import os
import sys
import unittest
import win32cred
from win32ctypes.core._winerrors import ERROR_NOT_FOUND
from win32ctypes.pywin32.pywintypes import error
from win32ctypes.pywin32.win32cred import (
CredDelete, CredRead, CredWrite,
CRED_PERSIST_ENTERPRISE, CRED_TYPE_GENERIC)
from win32ctypes.tests import compat
# find the pywin32 version
version_file = os.path.join(
os.path.dirname(os.path.dirname(win32cred.__file__)), 'pywin32.version.txt')
if os.path.exists(version_file):
with open(version_file) as handle:
pywin32_build = handle.read().strip()
else:
pywin32_build = None
class TestCred(compat.TestCase):
@unittest.skipIf(
pywin32_build == "223" and sys.version_info[:2] == (3,7),
"pywin32 version 223 bug with CredRead (mhammond/pywin32#1232)")
def test_write_to_pywin32(self):
username = u"john"
password = u"doefsajfsakfj"
comment = u"Created by MiniPyWin32Cred test suite"
target = "{0}@{1}".format(username, password)
credentials = {"Type": CRED_TYPE_GENERIC,
"TargetName": target,
"UserName": username,
"CredentialBlob": password,
"Comment": comment,
"Persist": CRED_PERSIST_ENTERPRISE}
CredWrite(credentials)
res = win32cred.CredRead(
TargetName=target, Type=CRED_TYPE_GENERIC)
self.assertEqual(res["Type"], CRED_TYPE_GENERIC)
self.assertEqual(res["UserName"], username)
self.assertEqual(res["TargetName"], target)
self.assertEqual(res["Comment"], comment)
self.assertEqual(
res["CredentialBlob"].decode('utf-16'), password)
def test_read_from_pywin32(self):
username = "john"
password = "doe"
comment = u"Created by MiniPyWin32Cred test suite"
target = u"{0}@{1}".format(username, password)
r_credentials = {
u"Type": CRED_TYPE_GENERIC,
u"TargetName": target,
u"UserName": username,
u"CredentialBlob": password,
u"Comment": comment,
u"Persist": CRED_PERSIST_ENTERPRISE}
win32cred.CredWrite(r_credentials)
credentials = CredRead(target, CRED_TYPE_GENERIC)
# XXX: the fact that we have to decode the password when reading, but
# not encode when writing is a bit strange, but that's what pywin32
# seems to do as well, and we try to be backward compatible here.
self.assertEqual(credentials["UserName"], username)
self.assertEqual(credentials["TargetName"], target)
self.assertEqual(credentials["Comment"], comment)
self.assertEqual(
credentials["CredentialBlob"].decode("utf-16"), password)
def test_read_write(self):
username = "john"
password = "doe"
comment = u"Created by MiniPyWin32Cred test suite"
target = u"{0}@{1}".format(username, password)
r_credentials = {
u"Type": CRED_TYPE_GENERIC,
u"TargetName": target,
u"UserName": username,
u"CredentialBlob": password,
u"Comment": comment,
u"Persist": CRED_PERSIST_ENTERPRISE}
CredWrite(r_credentials)
credentials = CredRead(target, CRED_TYPE_GENERIC)
# XXX: the fact that we have to decode the password when reading, but
# not encode when writing is a bit strange, but that's what pywin32
# seems to do as well, and we try to be backward compatible here.
self.assertEqual(credentials["UserName"], username)
self.assertEqual(credentials["TargetName"], target)
self.assertEqual(credentials["Comment"], comment)
self.assertEqual(
credentials["CredentialBlob"].decode("utf-16"), password)
def test_read_doesnt_exists(self):
target = "Floupi_dont_exists@MiniPyWin"
with self.assertRaises(error) as ctx:
CredRead(target, CRED_TYPE_GENERIC)
self.assertTrue(ctx.exception.winerror, ERROR_NOT_FOUND)
def test_delete_simple(self):
username = "john"
password = "doe"
comment = "Created by MiniPyWin32Cred test suite"
target = "{0}@{1}".format(username, password)
r_credentials = {
"Type": CRED_TYPE_GENERIC,
"TargetName": target,
"UserName": username,
"CredentialBlob": password,
"Comment": comment,
"Persist": CRED_PERSIST_ENTERPRISE}
CredWrite(r_credentials, 0)
credentials = CredRead(target, CRED_TYPE_GENERIC)
self.assertTrue(credentials is not None)
CredDelete(target, CRED_TYPE_GENERIC)
with self.assertRaises(error) as ctx:
CredRead(target, CRED_TYPE_GENERIC)
self.assertEqual(ctx.exception.winerror, ERROR_NOT_FOUND)
self.assertEqual(ctx.exception.funcname, "CredRead")
def test_delete_doesnt_exists(self):
target = u"Floupi_doesnt_exists@MiniPyWin32"
with self.assertRaises(error) as ctx:
CredDelete(target, CRED_TYPE_GENERIC)
self.assertEqual(ctx.exception.winerror, ERROR_NOT_FOUND)
self.assertEqual(ctx.exception.funcname, "CredDelete")
if __name__ == '__main__':
unittest.main()