cubicweb/test/unittest_req.py
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Thu, 24 Nov 2016 16:58:50 +0100
changeset 11870 3a84a79c4ed5
parent 11799 1bdfe9d4ab83
child 11913 4516c3956d46
permissions -rw-r--r--
Flake8 bits with some copyright updates
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11870
3a84a79c4ed5 Flake8 bits with some copyright updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11799
diff changeset
     1
# copyright 2003-2016 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
5421
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
     2
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
     3
#
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
     4
# This file is part of CubicWeb.
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
     5
#
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
     6
# CubicWeb is free software: you can redistribute it and/or modify it under the
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
     7
# terms of the GNU Lesser General Public License as published by the Free
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
     8
# Software Foundation, either version 2.1 of the License, or (at your option)
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
     9
# any later version.
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
    10
#
5424
8ecbcbff9777 replace logilab-common by CubicWeb in disclaimer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5421
diff changeset
    11
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
5421
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
    13
# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
    14
# details.
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
    15
#
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
    16
# You should have received a copy of the GNU Lesser General Public License along
8167de96c523 proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4891
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
7888
e257b4476454 [req] .view should not catch [Object|Registry]NotFound (which is a bug), only NoSelectableObject (closes #1973681)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6750
diff changeset
    18
4891
90203ec7b3e3 [url] new rebuild_url method on base request
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    19
from logilab.common.testlib import TestCase, unittest_main
7888
e257b4476454 [req] .view should not catch [Object|Registry]NotFound (which is a bug), only NoSelectableObject (closes #1973681)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6750
diff changeset
    20
from cubicweb import ObjectNotFound
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
    21
from cubicweb.req import RequestSessionBase, FindEntityError
6321
a8a33679f4dd [req] build_url: detect None values in arguments and raise ValueError
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5424
diff changeset
    22
from cubicweb.devtools.testlib import CubicWebTC
6747
63bf61e4e130 [security] fix access control problem
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6340
diff changeset
    23
from cubicweb import Unauthorized
4891
90203ec7b3e3 [url] new rebuild_url method on base request
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    24
11870
3a84a79c4ed5 Flake8 bits with some copyright updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11799
diff changeset
    25
7888
e257b4476454 [req] .view should not catch [Object|Registry]NotFound (which is a bug), only NoSelectableObject (closes #1973681)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6750
diff changeset
    26
class RequestTC(TestCase):
6321
a8a33679f4dd [req] build_url: detect None values in arguments and raise ValueError
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5424
diff changeset
    27
    def test_rebuild_url(self):
4891
90203ec7b3e3 [url] new rebuild_url method on base request
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    28
        rebuild_url = RequestSessionBase(None).rebuild_url
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6321
diff changeset
    29
        self.assertEqual(rebuild_url('http://logilab.fr?__message=pouet', __message='hop'),
11870
3a84a79c4ed5 Flake8 bits with some copyright updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11799
diff changeset
    30
                         'http://logilab.fr?__message=hop')
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6321
diff changeset
    31
        self.assertEqual(rebuild_url('http://logilab.fr', __message='hop'),
11870
3a84a79c4ed5 Flake8 bits with some copyright updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11799
diff changeset
    32
                         'http://logilab.fr?__message=hop')
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6321
diff changeset
    33
        self.assertEqual(rebuild_url('http://logilab.fr?vid=index', __message='hop'),
11870
3a84a79c4ed5 Flake8 bits with some copyright updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11799
diff changeset
    34
                         'http://logilab.fr?__message=hop&vid=index')
4891
90203ec7b3e3 [url] new rebuild_url method on base request
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    35
6321
a8a33679f4dd [req] build_url: detect None values in arguments and raise ValueError
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5424
diff changeset
    36
    def test_build_url(self):
a8a33679f4dd [req] build_url: detect None values in arguments and raise ValueError
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5424
diff changeset
    37
        req = RequestSessionBase(None)
11870
3a84a79c4ed5 Flake8 bits with some copyright updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11799
diff changeset
    38
        req.from_controller = lambda: 'view'
6321
a8a33679f4dd [req] build_url: detect None values in arguments and raise ValueError
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5424
diff changeset
    39
        req.relative_path = lambda includeparams=True: None
8309
48ef505aa9f9 [request] gather all base_url logic in a single place (closes #2200756)
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 8190
diff changeset
    40
        req.base_url = lambda secure=None: 'http://testing.fr/cubicweb/'
6321
a8a33679f4dd [req] build_url: detect None values in arguments and raise ValueError
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5424
diff changeset
    41
        self.assertEqual(req.build_url(), u'http://testing.fr/cubicweb/view')
a8a33679f4dd [req] build_url: detect None values in arguments and raise ValueError
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5424
diff changeset
    42
        self.assertEqual(req.build_url(None), u'http://testing.fr/cubicweb/view')
a8a33679f4dd [req] build_url: detect None values in arguments and raise ValueError
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5424
diff changeset
    43
        self.assertEqual(req.build_url('one'), u'http://testing.fr/cubicweb/one')
a8a33679f4dd [req] build_url: detect None values in arguments and raise ValueError
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5424
diff changeset
    44
        self.assertEqual(req.build_url(param='ok'), u'http://testing.fr/cubicweb/view?param=ok')
a8a33679f4dd [req] build_url: detect None values in arguments and raise ValueError
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5424
diff changeset
    45
        self.assertRaises(AssertionError, req.build_url, 'one', 'two not allowed')
6595
00cd0b273cf5 [test] fix test to follow recent changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6340
diff changeset
    46
        self.assertRaises(AssertionError, req.build_url, 'view', test=None)
6321
a8a33679f4dd [req] build_url: detect None values in arguments and raise ValueError
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5424
diff changeset
    47
6747
63bf61e4e130 [security] fix access control problem
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6340
diff changeset
    48
    def test_ensure_no_rql(self):
63bf61e4e130 [security] fix access control problem
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6340
diff changeset
    49
        req = RequestSessionBase(None)
63bf61e4e130 [security] fix access control problem
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6340
diff changeset
    50
        self.assertEqual(req.ensure_ro_rql('Any X WHERE X is CWUser'), None)
63bf61e4e130 [security] fix access control problem
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 6340
diff changeset
    51
        self.assertEqual(req.ensure_ro_rql('  Any X WHERE X is CWUser  '), None)
11870
3a84a79c4ed5 Flake8 bits with some copyright updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11799
diff changeset
    52
        self.assertRaises(Unauthorized, req.ensure_ro_rql,
3a84a79c4ed5 Flake8 bits with some copyright updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11799
diff changeset
    53
                          'SET X login "toto" WHERE X is CWUser')
3a84a79c4ed5 Flake8 bits with some copyright updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11799
diff changeset
    54
        self.assertRaises(Unauthorized, req.ensure_ro_rql,
3a84a79c4ed5 Flake8 bits with some copyright updates
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11799
diff changeset
    55
                          '   SET X login "toto" WHERE X is CWUser   ')
4891
90203ec7b3e3 [url] new rebuild_url method on base request
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    56
7888
e257b4476454 [req] .view should not catch [Object|Registry]NotFound (which is a bug), only NoSelectableObject (closes #1973681)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6750
diff changeset
    57
e257b4476454 [req] .view should not catch [Object|Registry]NotFound (which is a bug), only NoSelectableObject (closes #1973681)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6750
diff changeset
    58
class RequestCWTC(CubicWebTC):
9386
a33da516028f [req] Return base-url in case https-url is None in base_url()
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9348
diff changeset
    59
a33da516028f [req] Return base-url in case https-url is None in base_url()
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9348
diff changeset
    60
    def test_base_url(self):
a33da516028f [req] Return base-url in case https-url is None in base_url()
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9348
diff changeset
    61
        base_url = self.config['base-url']
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    62
        with self.admin_access.repo_cnx() as session:
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    63
            self.assertEqual(session.base_url(), base_url)
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    64
            assert 'https-url' not in self.config
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    65
            self.assertEqual(session.base_url(secure=True), base_url)
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    66
            secure_base_url = base_url.replace('http', 'https')
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    67
            self.config.global_set_option('https-url', secure_base_url)
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    68
            self.assertEqual(session.base_url(secure=True), secure_base_url)
9386
a33da516028f [req] Return base-url in case https-url is None in base_url()
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 9348
diff changeset
    69
7888
e257b4476454 [req] .view should not catch [Object|Registry]NotFound (which is a bug), only NoSelectableObject (closes #1973681)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6750
diff changeset
    70
    def test_view_catch_ex(self):
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    71
        with self.admin_access.web_request() as req:
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    72
            rset = req.execute('CWUser X WHERE X login "hop"')
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    73
            self.assertEqual(req.view('oneline', rset, 'null'), '')
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    74
            self.assertRaises(ObjectNotFound, req.view, 'onelinee', rset, 'null')
7888
e257b4476454 [req] .view should not catch [Object|Registry]NotFound (which is a bug), only NoSelectableObject (closes #1973681)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6750
diff changeset
    75
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
    76
    def test_find_one_entity(self):
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    77
        with self.admin_access.web_request() as req:
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    78
            req.create_entity(
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    79
                'CWUser', login=u'cdevienne', upassword=u'cdevienne',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    80
                surname=u'de Vienne', firstname=u'Christophe',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    81
                in_group=req.find('CWGroup', name=u'users').one())
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
    82
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    83
            req.create_entity(
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    84
                'CWUser', login=u'adim', upassword='adim', surname=u'di mascio',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    85
                firstname=u'adrien',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    86
                in_group=req.find('CWGroup', name=u'users').one())
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
    87
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    88
            u = req.find_one_entity('CWUser', login=u'cdevienne')
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    89
            self.assertEqual(u.firstname, u"Christophe")
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
    90
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    91
            with self.assertRaises(FindEntityError):
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    92
                req.find_one_entity('CWUser', login=u'patanok')
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
    93
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    94
            with self.assertRaises(FindEntityError):
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    95
                req.find_one_entity('CWUser')
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
    96
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
    97
    def test_find_entities(self):
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    98
        with self.admin_access.web_request() as req:
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
    99
            req.create_entity(
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   100
                'CWUser', login=u'cdevienne', upassword=u'cdevienne',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   101
                surname=u'de Vienne', firstname=u'Christophe',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   102
                in_group=req.find('CWGroup', name=u'users').one())
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   103
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   104
            req.create_entity(
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   105
                'CWUser', login=u'adim', upassword='adim', surname=u'di mascio',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   106
                firstname=u'adrien',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   107
                in_group=req.find('CWGroup', name=u'users').one())
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   108
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   109
            l = list(req.find_entities('CWUser', login=u'cdevienne'))
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   110
            self.assertEqual(1, len(l))
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   111
            self.assertEqual(l[0].firstname, u"Christophe")
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   112
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   113
            l = list(req.find_entities('CWUser', login=u'patanok'))
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   114
            self.assertEqual(0, len(l))
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   115
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   116
            l = list(req.find_entities('CWUser'))
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   117
            self.assertEqual(4, len(l))
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   118
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   119
    def test_find(self):
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   120
        with self.admin_access.web_request() as req:
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   121
            req.create_entity(
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   122
                'CWUser', login=u'cdevienne', upassword=u'cdevienne',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   123
                surname=u'de Vienne', firstname=u'Christophe',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   124
                in_group=req.find('CWGroup', name=u'users').one())
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   125
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   126
            req.create_entity(
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   127
                'CWUser', login=u'adim', upassword='adim', surname=u'di mascio',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   128
                firstname=u'adrien',
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   129
                in_group=req.find('CWGroup', name=u'users').one())
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   130
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   131
            u = req.find('CWUser', login=u'cdevienne').one()
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   132
            self.assertEqual(u.firstname, u"Christophe")
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   133
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   134
            users = list(req.find('CWUser').entities())
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   135
            self.assertEqual(len(users), 4)
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   136
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   137
            groups = list(
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   138
                req.find('CWGroup', reverse_in_group=u).entities())
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   139
            self.assertEqual(len(groups), 1)
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   140
            self.assertEqual(groups[0].name, u'users')
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   141
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   142
            users = req.find('CWUser', in_group=groups[0]).entities()
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   143
            users = list(users)
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   144
            self.assertEqual(len(users), 2)
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   145
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   146
            with self.assertRaises(AssertionError):
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   147
                req.find('CWUser', chapeau=u"melon")
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   148
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   149
            with self.assertRaises(AssertionError):
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   150
                req.find('CWUser', reverse_buddy=users[0])
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   151
9654
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   152
            with self.assertRaises(NotImplementedError):
f788e5e7e6ea [test] update unittest_req to 3.19 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 9386
diff changeset
   153
                req.find('CWUser', in_group=[1, 2])
9348
eacd02792332 [req] New method: RequestSessionBase.find().
Christophe de Vienne <cdevienne@gmail.com>
parents: 8309
diff changeset
   154
11794
d8830e2bd2e0 [req,web] Make it possible to handle page language from URL prefix
Laura Médioni <laura.medioni@logilab.fr>, Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   155
4891
90203ec7b3e3 [url] new rebuild_url method on base request
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
   156
if __name__ == '__main__':
90203ec7b3e3 [url] new rebuild_url method on base request
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
   157
    unittest_main()