180 |
180 |
181 with self.assertRaises(Fault) as fault: |
181 with self.assertRaises(Fault) as fault: |
182 self.__rpc2().telnumber(['01234']+invalid) |
182 self.__rpc2().telnumber(['01234']+invalid) |
183 exc = fault.exception |
183 exc = fault.exception |
184 self.failUnlessEqual(exc.faultCode, 701) |
184 self.failUnlessEqual(exc.faultCode, 701) |
185 self.failUnlessEqual(exc.faultString, "No valid telnumber: '%s'"%invalid[0]) |
185 self.failUnlessEqual(exc.faultString, "No valid telnumber: '%s'" % invalid[0]) |
186 |
186 |
187 |
187 |
188 def testVaildEmail(self): |
188 def testVaildEmail(self): |
189 '''test vaild email adresses (got from wikipedia)''' |
189 '''test vaild email adresses (got from wikipedia)''' |
190 validmails=["niceandsimple@example.com", |
190 validmails=["niceandsimple@example.com"] |
191 "simplewith+symbol@example.com", |
191 self.failUnlessEqual(self.__rpc2().email(validmails),True) |
192 'a.little.unusual@example.com', |
|
193 'a.little.more.unusual@dept.example.com', |
|
194 '@[10.10.10.10]', |
|
195 '@[1.1.1.1]', |
|
196 '@[200.100.100.100]', |
|
197 'user@[2001:db8:1ff::a0b:dbd0]', |
|
198 '"much.more\ unusual"@example.com', |
|
199 '"very.unusual.@.unusual.com"@example.com', |
|
200 '"very.(),:;<>[]\\".VERY.\\"very@\\\ \\"very\\".unusual"@strange.example.com', |
|
201 "!#$%&'*+-/=?^_`{}|~@example.org", |
|
202 '"()<>[]:;@,\\\"!#$%&\'*+-/=?^_`{}| ~ ? ^_`{}|~."@example.org', |
|
203 '""@example.org'] |
|
204 |
|
205 for num in validmails: |
|
206 self.failUnlessEqual(self.__rpc2().email([num]),True) |
|
207 |
192 |
208 def testInvaildEmail(self): |
193 def testInvaildEmail(self): |
209 '''test invaild email adresses (got from wikipedia)''' |
194 '''test invaild email adresses (got from wikipedia)''' |
210 invalid=["Abc.example.com", # (an @ character must separate the local and domain parts) |
195 invalid=["Abc.example.com",] |
211 "Abc.@example.com", # (character dot(.) is last in local part) |
196 with self.assertRaises(Fault) as fault: |
212 "Abc..123@example.com", # (character dot(.) is double) |
197 self.__rpc2().email(invalid) |
213 "A@b@c@example.com", # (only one @ is allowed outside quotation marks) |
198 exc = fault.exception |
214 '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) |
199 self.failUnlessEqual(exc.faultCode, 702) |
215 'just"not"right@example.com', # (quoted strings must be dot separated, or the only element making up the local-part) |
200 self.failUnlessEqual(exc.faultString, "No valid email: '%s'" % invalid[0]) |
216 'thisis."notallowed@example.com', # (spaces, quotes, and backslashes may only exist when within quoted strings and preceded by a slash) |
|
217 'this\\ still\\"not\\allowed@example.com', # (even if escaped (preceded by a backslash), spaces, quotes, and backslashes must still be contained by quotes) |
|
218 ] |
|
219 |
|
220 for number in invalid: |
|
221 with self.assertRaises(Fault) as fault: |
|
222 self.__rpc2().email([number]) |
|
223 exc = fault.exception |
|
224 self.failUnlessEqual(exc.faultCode, 702) |
|
225 self.failUnlessEqual(exc.faultString, "No valid email: '%s'"%number) |
|
226 |
201 |
227 def testBill(self): |
202 def testBill(self): |
228 '''test bill function''' |
203 '''test bill function''' |
229 apikey='abcdef123456789' |
204 apikey='abcdef123456789' |
230 with WithSession(md.engine, autocommit=True) as session: |
205 with WithSession(md.engine, autocommit=True) as session: |