devtools/test/unittest_webtest.py
author Florent Cayré <florent.cayre@logilab.fr>
Fri, 04 Dec 2015 14:56:20 +0100
changeset 11063 de20b0903d7d
parent 10032 fd1dafb0ab10
child 10604 d4bf85db41f2
permissions -rw-r--r--
[edit controller] fix handling of removal of subentities from an edit form In CubicWeb 3.18 the semantics of dropping a composite relation were changed. It had before the effect of deleting the subentities. Now the edit controller must handle this by itself (it was not adapted then by mistake). So if it detects the removal of a composite relation (on the browser side, the user clicked on the "remove" action), the subentity is now explicitly deleted. It was chosen not to change the form generation but the EditController: - to ensure pre-3.18 forms backward compat - to avoid the introduction of a specific entity-deletion API (RQL is probably our best API for complex DB operations) Related to #8529868.

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):
    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(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()