diff -r 20c41a7e2173 -r 83b28fc0d731 web/ldt/test/testcases.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/ldt/test/testcases.py Mon Dec 13 23:55:19 2010 +0100 @@ -0,0 +1,82 @@ +from django.conf import settings +from django.core.management import call_command +from django.test.testcases import TestCase, TransactionTestCase +import django +import threading +import time +import httplib +from ldt.test.client import WebClient, OAuthClient, OAuthWebClient + + +def launch_webserver(addrport='', keep_running = None, ready_event = None): + call_command('testrunserver',addrport, keep_running, ready_event) + +class WebTestCase(TransactionTestCase): + +# def __init__(self, clientKlass = None): +# super(WebTestCase,self).__init__() +# if clientKlass is not None: +# self.client = clientKlass(self.client) + + def set_login_url(self, value): + self.client.login_url = value + + def _pre_setup(self): + super(WebTestCase,self)._pre_setup() + self._keep_webserver = True + self._lock = threading.Lock() + self._ready_event = threading.Event() + + self.baseurl = "http://"+settings.TEST_WEBSERVER_ADDRPORT + self.client = WebClient() + self.client.baseurl = self.baseurl + login_url = '/' + settings.LOGIN_URL[len(settings.BASE_URL):].lstrip('/') + self.client.login_url = login_url + + def keep_runningserver(): + with self._lock: + return self._keep_webserver + + def launch_server(): + launch_webserver(settings.TEST_WEBSERVER_ADDRPORT, keep_running=keep_runningserver, ready_event = self._ready_event) + + #launch_server() + self._t = threading.Thread(target=launch_server) + self._t.start() + self._ready_event.wait() + time.sleep(0.1) + + + def _post_teardown(self): + with self._lock: + self._keep_webserver = False + conn = httplib.HTTPConnection(settings.TEST_WEBSERVER_ADDRPORT) + conn.request("HEAD", "/") + conn.getresponse() + self._t.join() + super(WebTestCase,self)._post_teardown() + +class OAuthTestCase(TestCase): + + def set_consumer(self, key, secret): + self.client.set_consumer(key, secret) + + def _pre_setup(self): + super(OAuthTestCase,self)._pre_setup() + self.client = OAuthClient() + +class OAuthWebTestCase(WebTestCase): + + def set_consumer(self, key, secret): + self.client.set_consumer(key, secret) + + def _pre_setup(self): + super(OAuthWebTestCase,self)._pre_setup() + self.client = OAuthWebClient() + self.client.baseurl = self.baseurl + login_url = '/' + settings.LOGIN_URL[len(settings.BASE_URL):].lstrip('/') + self.client.login_url = login_url + + + + \ No newline at end of file