# HG changeset patch # User Christophe de Vienne # Date 1402996460 -7200 # Node ID d20c2b262f559ef9947540f6304831fb33ed1c7e # Parent 16163ee1cdf9a0aa99241cb08d6b51e1cb153b6d [tests] Add a webtest based TestCase class Closes #4002134 diff -r 16163ee1cdf9 -r d20c2b262f55 devtools/test/unittest_webtest.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/devtools/test/unittest_webtest.py Tue Jun 17 11:14:20 2014 +0200 @@ -0,0 +1,40 @@ +import httplib + +from logilab.common.testlib import Tags +from cubicweb.devtools.webtest import CubicWebTestTC + + +class CWTTC(CubicWebTestTC): + def test_response(self): + response = self.webapp.get('/') + self.assertEqual(200, response.status_int) + + def test_base_url(self): + if self.config['base-url'] not in self.webapp.get('/').text: + self.fail('no mention of base url in retrieved page') + + +class CWTIdentTC(CubicWebTestTC): + anonymous_allowed = False + tags = CubicWebTestTC.tags | Tags(('auth',)) + + def test_reponse_denied(self): + res = self.webapp.get('/', expect_errors=True) + self.assertEqual(httplib.FORBIDDEN, res.status_int) + + def test_login(self): + res = self.webapp.get('/', expect_errors=True) + self.assertEqual(httplib.FORBIDDEN, res.status_int) + + self.login(self.admlogin, self.admpassword) + res = self.webapp.get('/') + self.assertEqual(httplib.OK, res.status_int) + + self.logout() + res = self.webapp.get('/', expect_errors=True) + self.assertEqual(httplib.FORBIDDEN, res.status_int) + + +if __name__ == '__main__': + from logilab.common.testlib import unittest_main + unittest_main() diff -r 16163ee1cdf9 -r d20c2b262f55 devtools/webtest.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/devtools/webtest.py Tue Jun 17 11:14:20 2014 +0200 @@ -0,0 +1,36 @@ +from __future__ import absolute_import + +import webtest + +from cubicweb.wsgi import handler +from cubicweb.devtools.testlib import CubicWebTC + + +class CubicWebTestTC(CubicWebTC): + @classmethod + def init_config(cls, config): + super(CubicWebTestTC, cls).init_config(config) + config.global_set_option('base-url', 'http://localhost.local/') + + def setUp(self): + super(CubicWebTestTC, self).setUp() + webapp = handler.CubicWebWSGIApplication(self.config) + self.webapp = webtest.TestApp(webapp) + + def tearDown(self): + del self.webapp + super(CubicWebTestTC, self).tearDown() + + def login(self, user=None, password=None, **args): + if user is None: + user = self.admlogin + if password is None: + password = self.admpassword if user == self.admlogin else user + args.update({ + '__login': user, + '__password': password + }) + return self.webapp.get('/login', args) + + def logout(self): + return self.webapp.get('/logout')