4
|
1 #!/usr/bin/env python
|
|
2 import unittest
|
|
3 import hashlib
|
|
4 from threading import Thread
|
|
5 import time
|
|
6 from wsgiref import simple_server
|
|
7 import platform
|
|
8
|
|
9 ##### server vvv #####
|
|
10 class api(object):
|
|
11 def mymethod(self):
|
|
12 #raise Exception("This is a test error")
|
|
13 return 'wibbler woz ere'
|
|
14
|
|
15 def myauth(username, password, useragent=None):
|
|
16 #raise Exception("This is a test error in auth")
|
|
17 return username == 'testuser' and hashlib.md5('s3cr3t').hexdigest() == password and useragent == 'wibble_unittest'
|
|
18
|
|
19 def make_server():
|
|
20 from wibble.server import JsonRpcApp
|
|
21 class myhandler(simple_server.WSGIRequestHandler):
|
|
22 def log_request(self, *a, **b):
|
|
23 pass # do not output log messages
|
|
24 application = JsonRpcApp(api(), auth=myauth)
|
|
25 return simple_server.make_server('localhost', 1337, application, handler_class=myhandler)
|
|
26 ##### server ^^^ #####
|
|
27
|
|
28 ##### client vvv #####
|
|
29 class WibbleTests(unittest.TestCase):
|
|
30 def setUp(self):
|
|
31 from wibble.client.ServerProxy import ServerProxy
|
|
32 self.client = ServerProxy('http://localhost:1337/',
|
|
33 username='testuser',
|
|
34 password='s3cr3t',
|
|
35 user_agent='wibble_unittest')
|
|
36
|
|
37 class IgnoreModuleNameTest(WibbleTests):
|
|
38 def runTest(self):
|
|
39 self.assertEqual(self.client.api.mymethod(),self.client.mymethod())
|
|
40
|
|
41 #def client_tests():
|
|
42 # try:
|
|
43 # print(jsonrpc_client.wibble('this should fail'))
|
|
44 # except BadRequestException:
|
|
45 # pass # test passed
|
|
46 # else:
|
|
47 # raise Exception('Test failed (calling unknown method)')
|
|
48 #
|
|
49 # print 'All tests passed'
|
|
50
|
|
51 ##### client ^^^ #####
|
|
52
|
|
53 def suite():
|
|
54 if platform.python_version().startswith('3'):
|
|
55 # no tests for python 3 because server not ported yet
|
|
56 return unittest.TestSuite()
|
|
57 def test_wrapper():
|
|
58 server = make_server()
|
|
59 server.log_request = None
|
|
60 server.serve_forever()
|
|
61 thread = Thread(target=test_wrapper)
|
|
62 thread.start()
|
|
63 time.sleep(0.1) # wait for server thread to start
|
|
64 suite = unittest.TestSuite()
|
|
65 suite.addTest(IgnoreModuleNameTest())
|
|
66 return suite
|
|
67
|
|
68 if __name__ == '__main__':
|
|
69 # unittest.main()
|
|
70 main()
|
|
71
|