devtools/test/unittest_webtest.py
author Denis Laxalde <denis.laxalde@logilab.fr>
Mon, 09 Nov 2015 11:34:28 +0100
changeset 10975 6615ecb60244
parent 10604 d4bf85db41f2
permissions -rw-r--r--
[tox] Use generating environments Drop the "env" option, which is unknown, and set a generative_ "envlist". Then use conditional dependencies based on factors_ to avoid repeating environment sections. The only singular one is the "cubicweb" environment because of its "commands". At some point, it'd be nice to find a way to have python version prefixes (py27-hooks or py34-web) for environment names but I could not find a way to extract the package name from such names. .. _generative: http://tox.readthedocs.org/en/latest/config.html#generative-envlist .. _factors: http://tox.readthedocs.org/en/latest/config.html#factors-and-factor-conditional-settings

from six.moves import http_client

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):
    test_db_id = 'webtest-ident'
    anonymous_allowed = False
    tags = CubicWebTestTC.tags | Tags(('auth',))

    def test_reponse_denied(self):
        res = self.webapp.get('/', expect_errors=True)
        self.assertEqual(http_client.FORBIDDEN, res.status_int)

    def test_login(self):
        res = self.webapp.get('/', expect_errors=True)
        self.assertEqual(http_client.FORBIDDEN, res.status_int)

        self.login(self.admlogin, self.admpassword)
        res = self.webapp.get('/')
        self.assertEqual(http_client.OK, res.status_int)

        self.logout()
        res = self.webapp.get('/', expect_errors=True)
        self.assertEqual(http_client.FORBIDDEN, res.status_int)


if __name__ == '__main__':
    from logilab.common.testlib import unittest_main
    unittest_main()