devtools/webtest.py
author Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
Wed, 01 Jul 2015 21:00:13 +0200
changeset 10476 62251bfdfd79
parent 9930 d20c2b262f55
child 11016 d04703f54510
permissions -rw-r--r--
[predicates] ExpectedValuePredicate now accepts a dict parameter ``match_form_params`` and ``match_kwargs`` benefit from that. For instance, the following statements are valid:: __select__ = match_form_params('vid', 'subvid') __select__ = match_form_params(vid='list', subvid='incontext') __select__ = match_form_params(vid=('list', 'tsearch')) In the latter cases, not only the parameters (``vid``/``subvid``) must be in the request form but their corresponding value must also match the expected values (or one of possible choices if `values` is a sequence). closes #5484070

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