pyramid_cubicweb/tests/test_core.py
author David Douard <david.douard@logilab.fr>
Tue, 22 Mar 2016 14:01:44 +0100
changeset 11611 9d2bb6bdb5c8
parent 11568 a9940c6cd693
child 11630 1400aee10df4
permissions -rw-r--r--
[tests] add a __main__ handler the relative import in test_rest_api.py needs to be modified to prevent a ValueError: Attempted relative import in non-package

from pyramid_cubicweb.tests import PyramidCWTest

from cubicweb.view import View
from cubicweb.web import Redirect
from cubicweb import ValidationError


class Redirector(View):
    __regid__ = 'redirector'

    def call(self, rset=None):
        self._cw.set_header('Cache-Control', 'no-cache')
        raise Redirect('http://example.org')


def put_in_uncommitable_state(request):
    try:
        request.cw_cnx.execute('SET U login NULL WHERE U login "anon"')
    except ValidationError:
        pass
    request.response.body = 'OK'
    return request.response


class CoreTest(PyramidCWTest):
    anonymous_allowed = True

    def includeme(self, config):
        config.add_route('uncommitable', '/uncommitable')
        config.add_view(put_in_uncommitable_state, route_name='uncommitable')

    def test_cw_to_pyramid_copy_headers_on_redirect(self):
        self.vreg.register(Redirector)
        try:
            res = self.webapp.get('/?vid=redirector', expect_errors=True)
            self.assertEqual(res.status_int, 303)
            self.assertEqual(res.headers['Cache-Control'], 'no-cache')
        finally:
            self.vreg.unregister(Redirector)

    def test_uncommitable_cnx(self):
        res = self.webapp.get('/uncommitable')
        self.assertEqual(res.text, 'OK')
        self.assertEqual(res.status_int, 200)


if __name__ == '__main__':
    from unittest import main
    main()