Mercurial > hg > AuthRPC
diff wibble/tests.py @ 4:ad5a8748afcf
Add test framework
author | Ben Croston <ben@croston.org> |
---|---|
date | Wed, 31 Aug 2011 21:35:14 +0100 |
parents | |
children | f5e3ba8cfcd0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wibble/tests.py Wed Aug 31 21:35:14 2011 +0100 @@ -0,0 +1,71 @@ +#!/usr/bin/env python +import unittest +import hashlib +from threading import Thread +import time +from wsgiref import simple_server +import platform + +##### server vvv ##### +class api(object): + def mymethod(self): + #raise Exception("This is a test error") + return 'wibbler woz ere' + +def myauth(username, password, useragent=None): + #raise Exception("This is a test error in auth") + return username == 'testuser' and hashlib.md5('s3cr3t').hexdigest() == password and useragent == 'wibble_unittest' + +def make_server(): + from wibble.server import JsonRpcApp + class myhandler(simple_server.WSGIRequestHandler): + def log_request(self, *a, **b): + pass # do not output log messages + application = JsonRpcApp(api(), auth=myauth) + return simple_server.make_server('localhost', 1337, application, handler_class=myhandler) +##### server ^^^ ##### + +##### client vvv ##### +class WibbleTests(unittest.TestCase): + def setUp(self): + from wibble.client.ServerProxy import ServerProxy + self.client = ServerProxy('http://localhost:1337/', + username='testuser', + password='s3cr3t', + user_agent='wibble_unittest') + +class IgnoreModuleNameTest(WibbleTests): + def runTest(self): + self.assertEqual(self.client.api.mymethod(),self.client.mymethod()) + +#def client_tests(): +# try: +# print(jsonrpc_client.wibble('this should fail')) +# except BadRequestException: +# pass # test passed +# else: +# raise Exception('Test failed (calling unknown method)') +# +# print 'All tests passed' + +##### client ^^^ ##### + +def suite(): + if platform.python_version().startswith('3'): + # no tests for python 3 because server not ported yet + return unittest.TestSuite() + def test_wrapper(): + server = make_server() + server.log_request = None + server.serve_forever() + thread = Thread(target=test_wrapper) + thread.start() + time.sleep(0.1) # wait for server thread to start + suite = unittest.TestSuite() + suite.addTest(IgnoreModuleNameTest()) + return suite + +if __name__ == '__main__': +# unittest.main() + main() +