1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
import unittest
import libvirt
import tempfile
import contextlib
import os
class TestLibvirtConn(unittest.TestCase):
def setUp(self):
self.conn = libvirt.open("test:///default")
def tearDown(self):
self.conn = None
def testConnDomainList(self):
doms = self.conn.listAllDomains()
self.assertEqual(len(doms), 1)
self.assertEqual(type(doms[0]), libvirt.virDomain)
self.assertEqual(doms[0].name(), "test")
class TestLibvirtConnAuth(unittest.TestCase):
connXML = """
<node>
<auth>
<user password="2147483647">marin</user>
<user password="87539319">srinivasa</user>
</auth>
</node>"""
def setUp(self):
def noop(msg, opaque):
pass
libvirt.registerErrorHandler(noop, None)
@contextlib.contextmanager
def tempxmlfile(content):
try:
fp = tempfile.NamedTemporaryFile(delete=False,
prefix="libvirt-python-test",
suffix=".xml")
fname = fp.name
fp.write(content.encode("utf8"))
fp.close()
yield fname
finally:
os.unlink(fname)
def authHelper(self, username, password):
with TestLibvirtConnAuth.tempxmlfile(self.connXML) as fname:
magic = 142857
def authCB(creds, opaque):
if opaque != magic:
return -1
for cred in creds:
if (cred[0] == libvirt.VIR_CRED_AUTHNAME and
username is not None):
cred[4] = username
return 0
elif (cred[0] == libvirt.VIR_CRED_PASSPHRASE and
password is not None):
cred[4] = password
return 0
return -1
return 0
auth = [[libvirt.VIR_CRED_AUTHNAME,
libvirt.VIR_CRED_ECHOPROMPT,
libvirt.VIR_CRED_REALM,
libvirt.VIR_CRED_PASSPHRASE,
libvirt.VIR_CRED_NOECHOPROMPT,
libvirt.VIR_CRED_EXTERNAL],
authCB, magic]
return libvirt.openAuth("test://" + fname,
auth, 0)
def testOpenAuthGood(self):
conn = self.authHelper("srinivasa", "87539319")
def testOpenAuthBad(self):
try:
conn = self.authHelper("srinivasa", "2147483647")
raise Exception("Unexpected open success")
except libvirt.libvirtError as ex:
pass
def testOpenAuthNone(self):
try:
conn = self.authHelper(None, None)
raise Exception("Unexpected open success")
except libvirt.libvirtError as ex:
pass
|