iro/test.py
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--
added getProvider Test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()