iro/test.py
changeset 38 254c00f3cbe0
parent 30 5253631a8dd3
equal deleted inserted replaced
37:6e5bd561ddd0 38:254c00f3cbe0
     8 import threading, xmlrpclib
     8 import threading, xmlrpclib
     9 from multiprocessing import Queue
     9 from multiprocessing import Queue
    10 from multiprocessing.managers import BaseManager
    10 from multiprocessing.managers import BaseManager
    11 
    11 
    12 class StoppableXMLRPCServer(iro.SecureUserDBXMLRPCServer, threading.Thread):
    12 class StoppableXMLRPCServer(iro.SecureUserDBXMLRPCServer, threading.Thread):
    13     running=True
    13     running=False
    14     def __init__(self, *args, **kwargs):
    14     def __init__(self, *args, **kwargs):
    15         iro.SecureUserDBXMLRPCServer.__init__(self, *args, **kwargs)
    15         iro.SecureUserDBXMLRPCServer.__init__(self, *args, **kwargs)
    16         threading.Thread.__init__(self)
    16         threading.Thread.__init__(self)
       
    17         self.timeout=.5
    17    
    18    
       
    19     def start(self):
       
    20         self.running=True
       
    21         threading.Thread.start(self)
       
    22  
    18    
    23    
    19     def run(self):
    24     def run(self):
    20         # *serve_forever* muss in einem eigenen Thread laufen, damit man es
    25         # *serve_forever* muss in einem eigenen Thread laufen, damit man es
    21         # unterbrechen kann!
    26         # unterbrochen werden kann!
    22         while (self.running):
    27         while (self.running):
    23             self.handle_request()
    28             self.handle_request()
    24    
    29    
    25    
       
    26     def stop(self):
    30     def stop(self):
    27         self.running=False
    31         if (self.running):
    28         self.server_close()
    32             self.running=False
       
    33             self.server_close()
       
    34             self.join()
       
    35 
       
    36     def __del__(self):
       
    37         self.stop()
       
    38  
       
    39     def __enter__(self):
       
    40         self.start()
       
    41         return self
       
    42 
       
    43     def __exit__(self,type,value,traceback):
       
    44         self.stop()
       
    45 
    29 
    46 
    30 
    47 
    31 def init_server():
    48 def init_server():
    32     userlist=[{"name":"test","password":"test",  "class":iro.User},
    49     userlist=[{"name":"test","password":"test",  "class":iro.User},
    33               {"name":"test2","password":"test2", "class": iro.User},
    50               {"name":"test2","password":"test2", "class": iro.User},
    77     cp.read(["iro.conf"])
    94     cp.read(["iro.conf"])
    78     cert=cp.get('server', 'cert')
    95     cert=cp.get('server', 'cert')
    79     key=cp.get('server', 'key')
    96     key=cp.get('server', 'key')
    80     serv = StoppableXMLRPCServer(addr=("localhost", 8000), 
    97     serv = StoppableXMLRPCServer(addr=("localhost", 8000), 
    81                                       userdb=userdb,
    98                                       userdb=userdb,
    82                                       certificate=cert,privatekey=key)
    99                                       certificate=cert,privatekey=key,
       
   100                                       logRequests=False)
    83     serv.relam="xmlrpc"
   101     serv.relam="xmlrpc"
    84     return serv
   102     return serv
    85  
   103  
    86     
   104     
    87 class TestServer(unittest.TestCase):
   105 class TestServer(unittest.TestCase):
    88     
   106     
    89     def setUp(self):
   107     def setUp(self):
    90       self.serv = init_server()
   108         self.serv = init_server()
    91       self.serv.start()
   109         self.serv.start()
    92 
   110 
    93     def tearDown(self):
   111     def tearDown(self):
    94       self.serv.stop()
   112         self.serv.stop()
    95       xmlrpclib.Server("https://test:test@localhost:8000").status()			#letzte nachricht abrufen, damit richt geschlossen wird
       
    96 
   113 
    97     def testLogin(self):
   114     def testLogin(self):
    98         self.assertEqual(xmlrpclib.Server("https://test:test@localhost:8000").status(), {})
   115         self.assertEqual(xmlrpclib.Server("https://test:test@localhost:8000").status(), {})
    99         self.assertEqual(xmlrpclib.Server("https://test2:test2@localhost:8000").status(), {})
   116         self.assertEqual(xmlrpclib.Server("https://test2:test2@localhost:8000").status(), {})
   100         self.assertRaises(xmlrpclib.ProtocolError, xmlrpclib.Server("https://test2:test@localhost:8000").status)
   117         self.assertRaises(xmlrpclib.ProtocolError, xmlrpclib.Server("https://test2:test@localhost:8000").status)
   131         client=xmlrpclib.Server(servstr)       
   148         client=xmlrpclib.Server(servstr)       
   132         self.assertEqual(client.getProvider("sms"), ["fax.de","geonet", "sipgate", "smstrade"])
   149         self.assertEqual(client.getProvider("sms"), ["fax.de","geonet", "sipgate", "smstrade"])
   133         self.assertEqual(client.getProvider("fax"), ["fax.de","geonet", "sipgate"])
   150         self.assertEqual(client.getProvider("fax"), ["fax.de","geonet", "sipgate"])
   134         self.assertEqual(client.getProvider("mail"), ["localhost"])
   151         self.assertEqual(client.getProvider("mail"), ["localhost"])
   135         
   152         
   136         self.assertRaises(xmlrpclib.Fault,client.getProvider, "temp")
   153         self.assertRaises(xmlrpclib.ProtocolError,client.getProvider, "temp")
   137     
   154     
   138     def testGetDefault(self):
   155     def testGetDefault(self):
   139         servstr="https://test:test@localhost:8000"
   156         servstr="https://test:test@localhost:8000"
   140         client=xmlrpclib.Server(servstr)       
   157         client=xmlrpclib.Server(servstr)       
   141         self.assertEqual(client.getDefaultProvider("sms"), "smstrade")
   158         self.assertEqual(client.getDefaultProvider("sms"), "smstrade")
   142         self.assertEqual(client.getDefaultProvider("fax"),"sipgate")
   159         self.assertEqual(client.getDefaultProvider("fax"),"sipgate")
   143         self.assertEqual(client.getDefaultProvider("mail"), "localhost")       
   160         self.assertEqual(client.getDefaultProvider("mail"), "localhost")       
   144         
   161         
   145         self.assertRaises(xmlrpclib.Fault,client.getDefaultProvider, "temp")        
   162         self.assertRaises(xmlrpclib.ProtocolError,client.getDefaultProvider, "temp")        
   146 
   163 
   147     
   164     
   148 if __name__ == "__main__":
   165 if __name__ == "__main__":
   149     unittest.main()  
   166     unittest.main()