iro/test.py
changeset 7 07dd2663ac90
parent 6 c5672760138b
child 30 5253631a8dd3
equal deleted inserted replaced
6:c5672760138b 7:07dd2663ac90
     1 # -*- coding: utf-8 -*-
     1 # -*- coding: utf-8 -*-
     2 
     2 
     3 import unittest, ConfigParser
     3 import unittest, ConfigParser
     4 import iro
     4 import iro
       
     5 from job import MessageJob
       
     6 from joblist import Joblist
       
     7 from providerlist import Providerlist
     5 import threading, xmlrpclib
     8 import threading, xmlrpclib
     6 from multiprocessing import Queue
     9 from multiprocessing import Queue
     7 from multiprocessing.managers import BaseManager
    10 from multiprocessing.managers import BaseManager
     8 
    11 
     9 class StoppableXMLRPCServer(iro.SecureUserDBXMLRPCServer, threading.Thread):
    12 class StoppableXMLRPCServer(iro.SecureUserDBXMLRPCServer, threading.Thread):
    33 
    36 
    34     
    37     
    35     class MyManager(BaseManager):
    38     class MyManager(BaseManager):
    36         pass
    39         pass
    37     
    40     
    38     MyManager.register('MessageJob', iro.MessageJob) 
    41     MyManager.register('MessageJob', MessageJob) 
    39     manager = MyManager()
    42     manager = MyManager()
    40     manager.start()
    43     manager.start()
    41     
    44     
    42     
    45     
    43     #anbieter erzeugen und konfigurieren
    46     #anbieter erzeugen und konfigurieren
    51     smstrade=iro.MySmstrade()
    54     smstrade=iro.MySmstrade()
    52     smstrade.read_basic_config("iro.conf")
    55     smstrade.read_basic_config("iro.conf")
    53 
    56 
    54     #Benutzerdatenbank erstellen
    57     #Benutzerdatenbank erstellen
    55     queue = Queue()
    58     queue = Queue()
    56     provider={"sms":sip, "fax":sip, "mail":localhost}
    59     provider=Providerlist()
    57     jobqueue=iro.Jobs(manager,  queue, provider)
    60     provider.add("sipgate", sip, ["sms", "fax", ])
       
    61     provider.add("smstrade", smstrade, ["sms", ])
       
    62     provider.add("geonet", None, ["sms", "fax", ])
       
    63     provider.add("fax.de", None, ["sms", "fax", ])
       
    64     provider.add("localhost", localhost, ["mail", ])
       
    65     provider.setDefault("sms","smstrade")
       
    66     provider.setDefault("fax","sipgate")
       
    67     provider.setDefault("mail","localhost")
       
    68     jobqueue=Joblist(manager,  queue, provider)
    58     userdb=iro.MyUserDB(userlist,jobqueue)
    69     userdb=iro.MyUserDB(userlist,jobqueue)
    59 
    70 
    60 
    71 
    61     #Server starten
    72     #Server starten
    62     cp = ConfigParser.ConfigParser()
    73     cp = ConfigParser.ConfigParser()
    87         self.assertRaises(xmlrpclib.ProtocolError,xmlrpclib.Server ("https://test:test2@localhost:8000").status)
    98         self.assertRaises(xmlrpclib.ProtocolError,xmlrpclib.Server ("https://test:test2@localhost:8000").status)
    88     
    99     
    89     def testsendSMS(self):
   100     def testsendSMS(self):
    90         servstr="https://test:test@localhost:8000"
   101         servstr="https://test:test@localhost:8000"
    91         client=xmlrpclib.Server(servstr)
   102         client=xmlrpclib.Server(servstr)
    92         id=client.startSMS("test",["01234"] )
   103         id=client.startSMS("test",["01234", ] )
    93         self.assertEqual(client.status(id),{id: {'status': ['init',{}], 'name':  'test'}} )
   104         self.assertEqual(client.status(id),{id: {'status': ['init',{}], 'name':  'test'}} )
    94         
   105         
    95     def testTwoUser(self):
   106     def testTwoUser(self):
    96         u1="https://test:test@localhost:8000"
   107         u1="https://test:test@localhost:8000"
    97         u2="https://test2:test2@localhost:8000"
   108         u2="https://test2:test2@localhost:8000"
   114         
   125         
   115     def testGetProvider(self):
   126     def testGetProvider(self):
   116         servstr="https://test:test@localhost:8000"
   127         servstr="https://test:test@localhost:8000"
   117         client=xmlrpclib.Server(servstr)       
   128         client=xmlrpclib.Server(servstr)       
   118         self.assertEqual(client.getProvider("sms"), ["fax.de","geonet", "sipgate", "smstrade"])
   129         self.assertEqual(client.getProvider("sms"), ["fax.de","geonet", "sipgate", "smstrade"])
   119         self.assertEqual(client.getProvider("fax").sort(), ["fax.de","geonet", "sipgate"])
   130         self.assertEqual(client.getProvider("fax"), ["fax.de","geonet", "sipgate"])
   120         self.assertEqual(client.getProvider("mail").sort(), ["localhost"])
   131         self.assertEqual(client.getProvider("mail"), ["localhost"])
   121         self.assertRaises(iro.NotSupportedFeature, client.getProvider("temp"))
   132         
       
   133         self.assertRaises(xmlrpclib.Fault,client.getProvider, "temp")
       
   134     
       
   135     def testGetDefault(self):
       
   136         servstr="https://test:test@localhost:8000"
       
   137         client=xmlrpclib.Server(servstr)       
       
   138         self.assertEqual(client.getDefaultProvider("sms"), "smstrade")
       
   139         self.assertEqual(client.getDefaultProvider("fax"),"sipgate")
       
   140         self.assertEqual(client.getDefaultProvider("mail"), "localhost")       
       
   141         
       
   142         self.assertRaises(xmlrpclib.Fault,client.getDefaultProvider, "temp")        
   122 
   143 
   123     
   144     
   124 if __name__ == "__main__":
   145 if __name__ == "__main__":
   125     unittest.main()  
   146     unittest.main()