--- /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()
--- /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')