tests/xmlrpc.py
branchdevel
changeset 126 1ac2439a68b5
parent 125 19b3f383c9ce
child 127 79966b937274
--- a/tests/xmlrpc.py	Mon Jan 30 06:51:28 2012 +0100
+++ b/tests/xmlrpc.py	Mon Jan 30 06:52:46 2012 +0100
@@ -69,7 +69,7 @@
     def testListMethods(self):
         '''list of all offical Methods, that can be executed'''
         ret=self.__rpc2().listMethods()
-        self.failUnlessEqual(ret, ['listMethods', 'status', 'stop', 'sms', 'fax', 'mail', 'routes', 'defaultRoute', 'statistic'])
+        self.failUnlessEqual(ret, ['listMethods', 'status', 'stop', 'sms', 'fax', 'mail', 'routes', 'defaultRoute', 'statistic', 'telnumber','email'])
 
     def testStatus(self):
         ''' test the status function'''
@@ -171,8 +171,64 @@
             session.add(u)
         self.failUnlessEqual(self.__rpc2().defaultRoute('abcdef123456789','sms'),['sipgate_basic'])
 
+    def testTelnumbers(self):
+        '''test the telefon validator'''
+        self.failUnlessEqual(self.__rpc2().telnumber(["0123/456(78)","+4912346785433","00123435456-658"]),True)
+        numbers=['xa','+1','1-23',';:+0','0123']
+        for number in numbers:
+            with self.assertRaises(Fault) as fault:
+                self.__rpc2().telnumber([number])
+            exc = fault.exception
+            self.failUnlessEqual(exc.faultCode, 701)
+            self.failUnlessEqual(exc.faultString, "No valid telnumber: '%s'"%number)
+
+        with self.assertRaises(Fault) as fault:
+            self.__rpc2().telnumber(['01234']+numbers)
+        exc = fault.exception
+        self.failUnlessEqual(exc.faultCode, 701)
+        self.failUnlessEqual(exc.faultString, "No valid telnumber: '%s'"%numbers[0])
 
 
+    def testVaildEmail(self):
+        '''test vaild email adresses (got from wikipedia)'''
+        validmails=["niceandsimple@example.com",
+                "simplewith+symbol@example.com",
+                'a.little.unusual@example.com',
+                'a.little.more.unusual@dept.example.com',
+                '@[10.10.10.10]',
+                '@[1.1.1.1]',
+                '@[200.100.100.100]',
+                'user@[2001:db8:1ff::a0b:dbd0]',
+                '"much.more\ unusual"@example.com',
+                '"very.unusual.@.unusual.com"@example.com',
+                '"very.(),:;<>[]\\".VERY.\\"very@\\\ \\"very\\".unusual"@strange.example.com',
+                "!#$%&'*+-/=?^_`{}|~@example.org",
+                '"()<>[]:;@,\\\"!#$%&\'*+-/=?^_`{}| ~  ? ^_`{}|~."@example.org',
+                '""@example.org']
+        
+        for num in validmails:
+            self.failUnlessEqual(self.__rpc2().email([num]),True)
+    
+    def testInvaildEmail(self):
+        '''test invaild email adresses (got from wikipedia)'''
+        invalid=["Abc.example.com",  # (an @ character must separate the local and domain parts)
+                "Abc.@example.com",          # (character dot(.) is last in local part)
+                "Abc..123@example.com",      # (character dot(.) is double)
+                "A@b@c@example.com",         # (only one @ is allowed outside quotation marks)
+                'a"b(c)d,e:f;g<h>i[j\k]l@example.com',  # (none of the special characters in this local part is allowed outside quotation marks)
+                'just"not"right@example.com',           # (quoted strings must be dot separated, or the only element making up the local-part)
+                'thisis."notallowed@example.com',      # (spaces, quotes, and backslashes may only exist when within quoted strings and preceded by a slash)
+                'this\\ still\\"not\\allowed@example.com',   # (even if escaped (preceded by a backslash), spaces, quotes, and backslashes must still be contained by quotes)
+                ]
+
+        for number in invalid:
+            with self.assertRaises(Fault) as fault:
+                self.__rpc2().email([number])
+            exc = fault.exception
+            self.failUnlessEqual(exc.faultCode, 702)
+            self.failUnlessEqual(exc.faultString, "No valid email: '%s'"%number)
+
+ 
 def startReactor(engine):
     """starts the Rector with a special debug Clild, so that the reactor can be stopped remotly. """
     from twisted.internet import reactor