| author | Sandro Knauß <knauss@netzguerilla.net> |
| Fri, 23 Oct 2009 01:15:23 +0200 | |
| changeset 5 | af2f45da3192 |
| parent 0 | a3b6e531f0d2 |
| child 6 | c5672760138b |
| permissions | -rw-r--r-- |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
1 |
# -*- coding: utf-8 -*- |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
2 |
|
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
3 |
import unittest, ConfigParser |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
4 |
import iro |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
5 |
import threading, xmlrpclib |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
6 |
from multiprocessing import Queue |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
7 |
from multiprocessing.managers import BaseManager |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
8 |
|
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
9 |
class StoppableXMLRPCServer(iro.SecureUserDBXMLRPCServer, threading.Thread): |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
10 |
running=True |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
11 |
def __init__(self, *args, **kwargs): |
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
12 |
iro.SecureUserDBXMLRPCServer.__init__(self, *args, **kwargs) |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
13 |
threading.Thread.__init__(self) |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
14 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
15 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
16 |
def run(self): |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
17 |
# *serve_forever* muss in einem eigenen Thread laufen, damit man es |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
18 |
# unterbrechen kann! |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
19 |
while (self.running): |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
20 |
self.handle_request() |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
21 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
22 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
23 |
def stop(self): |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
24 |
self.running=False |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
25 |
self.server_close() |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
26 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
27 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
28 |
def init_server(): |
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
29 |
userlist=[{"name":"test","password":"test", "class":iro.User}, |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
30 |
{"name":"test2","password":"test2", "class": iro.User}, |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
31 |
{"name":"admin","password":"admin", "class": iro.Admin}] |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
32 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
33 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
34 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
35 |
class MyManager(BaseManager): |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
36 |
pass |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
37 |
|
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
38 |
MyManager.register('MessageJob', iro.MessageJob) |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
39 |
manager = MyManager() |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
40 |
manager.start() |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
41 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
42 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
43 |
#anbieter erzeugen und konfigurieren |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
44 |
import anbieter |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
45 |
sip=anbieter.sipgate() |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
46 |
sip.read_basic_config("iro.conf") |
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
47 |
|
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
48 |
localhost=iro.MySMTP() |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
49 |
localhost.read_basic_config("iro.conf") |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
50 |
|
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
51 |
smstrade=iro.MySmstrade() |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
52 |
smstrade.read_basic_config("iro.conf") |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
53 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
54 |
#Benutzerdatenbank erstellen |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
55 |
queue = Queue() |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
56 |
provider={"sms":sip, "fax":sip, "mail":localhost} |
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
57 |
jobqueue=iro.Jobs(manager, queue, provider) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
58 |
userdb=iro.MyUserDB(userlist,jobqueue) |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
59 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
60 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
61 |
#Server starten |
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
62 |
cp = ConfigParser.ConfigParser() |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
63 |
cp.read(["iro.conf"]) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
64 |
cert=cp.get('server', 'cert') |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
65 |
key=cp.get('server', 'key') |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
66 |
serv = StoppableXMLRPCServer(addr=("localhost", 8000), |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
67 |
userdb=userdb, |
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
68 |
certificate=cert,privatekey=key) |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
69 |
serv.relam="xmlrpc" |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
70 |
return serv |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
71 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
72 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
73 |
class TestServer(unittest.TestCase): |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
74 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
75 |
def setUp(self): |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
76 |
self.serv = init_server() |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
77 |
self.serv.start() |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
78 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
79 |
def tearDown(self): |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
80 |
self.serv.stop() |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
81 |
xmlrpclib.Server("https://test:test@localhost:8000").status() #letzte nachricht abrufen, damit richt geschlossen wird |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
82 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
83 |
def testLogin(self): |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
84 |
self.assertEqual(xmlrpclib.Server("https://test:test@localhost:8000").status(), {}) |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
85 |
self.assertEqual(xmlrpclib.Server("https://test2:test2@localhost:8000").status(), {}) |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
86 |
self.assertRaises(xmlrpclib.ProtocolError, xmlrpclib.Server("https://test2:test@localhost:8000").status) |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
87 |
self.assertRaises(xmlrpclib.ProtocolError,xmlrpclib.Server ("https://test:test2@localhost:8000").status) |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
88 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
89 |
def testsendSMS(self): |
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
90 |
servstr="https://test:test@localhost:8000" |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
91 |
client=xmlrpclib.Server(servstr) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
92 |
id=client.startSMS("test",["01234"] ) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
93 |
self.assertEqual(client.status(id),{id: {'status': ['init',{}], 'name': 'test'}} ) |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
94 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
95 |
def testTwoUser(self): |
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
96 |
u1="https://test:test@localhost:8000" |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
97 |
u2="https://test2:test2@localhost:8000" |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
98 |
admin="https://admin:admin@localhost:8000" |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
99 |
client1=xmlrpclib.Server(u1) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
100 |
client2=xmlrpclib.Server(u2) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
101 |
admin=xmlrpclib.Server(admin) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
102 |
id1=client1.startSMS("test",["01234"] ) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
103 |
self.assertEqual(client2.status(),{} ) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
104 |
self.assertEqual(admin.status(id1),{id1: {'status': ['init',{}], 'name': 'test'}} ) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
105 |
id2=client2.startSMS("test2",["01234"] ) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
106 |
self.assertNotEqual(id1, id2) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
107 |
self.assertEqual(client1.status(),{id1: {'status': ['init',{}], 'name': 'test'}}) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
108 |
self.assertEqual(client2.status(),{id2: {'status': ['init',{}], 'name': 'test2'}}) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
109 |
self.assertEqual(admin.status(),{id1: {'status': ['init',{}], 'name': 'test'}, |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
110 |
id2: {'status': ['init',{}], 'name': 'test2'}} ) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
111 |
|
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
112 |
self.assertRaises(xmlrpclib.Fault, client2.status, id1) |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
113 |
self.assertRaises(xmlrpclib.Fault, client1.status, id2) |
|
5
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
114 |
|
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
115 |
def testGetProvider(self): |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
116 |
servstr="https://test:test@localhost:8000" |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
117 |
client=xmlrpclib.Server(servstr) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
118 |
self.assertEqual(client.getProvider("sms").sort(), ["fax.de","geonet", "sipgate", "smstrade"]) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
119 |
self.assertEqual(client.getProvider("fax").sort(), ["fax.de","geonet", "sipgate"]) |
|
af2f45da3192
added getProvider Test
Sandro Knauß <knauss@netzguerilla.net>
parents:
0
diff
changeset
|
120 |
self.assertEqual(client.getProvider("mail").sort(), ["localhost"]) |
|
0
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
121 |
|
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
122 |
if __name__ == "__main__": |
|
a3b6e531f0d2
[svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
123 |
unittest.main() |