cubicweb/web/test/unittest_views_baseviews.py
author Denis Laxalde <denis.laxalde@logilab.fr>
Thu, 21 Mar 2019 14:33:54 +0100
changeset 12530 9d88e1177c35
parent 11915 fd42a39d3f66
permissions -rw-r--r--
Remove Twisted web server Twisted web server is not used anymore and has been superseded by pyramid many years ago. Furthermore, our usage is not compatible with Python 3. So we drop the "etwist" sub-package. As a consequence, "all-in-one" configuration type gets dropped as it was Twisted-specific. We resurrect it in cubicweb/pyramid/config.py by only keeping options used by the "pyramid". Similarly, we introduce a AllInOneCreateHandler in cubicweb/pyramid/pyramidctl.py that is basically the one that lived in cubicweb/etwist/twctl.py and is used to create the "all-in-one" instance. Added a TODO here about "pyramid.ini" that could be generated at the end of bootstrap() method. In cubicweb/devtools/httptest.py, CubicWebServerTC is now equivalent to CubicWebWsgiTC and the latter is dropped.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
     1
# copyright 2003-2014 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: 5389
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: 5389
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: 5389
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: 5389
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: 5389
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: 5389
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: 5389
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: 5389
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: 5389
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: 5389
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: 5389
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: 5389
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: 5389
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: 5389
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: 5389
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
1977
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1654
diff changeset
    18
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    19
from logilab.common.testlib import unittest_main
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    20
from logilab.mtconverter import html_unescape
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    21
2773
b2530e3e0afb [testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2650
diff changeset
    22
from cubicweb.devtools.testlib import CubicWebTC
5940
0e3ae19b181a [uilib] refactor json_dumps code organization
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5426
diff changeset
    23
from cubicweb.utils import json
8941
7b26fe71404f drop xhtml content-type support (closes #2065651)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8694
diff changeset
    24
from cubicweb.view import StartupView, TRANSITIONAL_DOCTYPE
1654
57b9fd2462b8 test updates
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    25
from cubicweb.web.views import vid_from_rset
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    26
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    27
def loadjson(value):
5940
0e3ae19b181a [uilib] refactor json_dumps code organization
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5426
diff changeset
    28
    return json.loads(html_unescape(value))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    29
2773
b2530e3e0afb [testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2650
diff changeset
    30
class VidFromRsetTC(CubicWebTC):
1654
57b9fd2462b8 test updates
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    31
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    32
    def test_no_rset(self):
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    33
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    34
            self.assertEqual(vid_from_rset(req, None, self.schema), 'index')
1654
57b9fd2462b8 test updates
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    35
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    36
    def test_no_entity(self):
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    37
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    38
            rset = req.execute('Any X WHERE X login "blabla"')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    39
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'noresult')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    40
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    41
    def test_one_entity(self):
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    42
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    43
            rset = req.execute('Any X WHERE X login "admin"')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    44
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'primary')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    45
            rset = req.execute('Any X, L WHERE X login "admin", X login L')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    46
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'primary')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    47
            req.search_state = ('pasnormal',)
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    48
            rset = req.execute('Any X WHERE X login "admin"')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    49
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'outofcontext-search')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    50
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    51
    def test_one_entity_eid(self):
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    52
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    53
            rset = req.execute('Any X WHERE X eid 1')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    54
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'primary')
1654
57b9fd2462b8 test updates
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    55
2637
07103211e511 R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2381
diff changeset
    56
    def test_more_than_one_entity_same_type(self):
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    57
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    58
            rset = req.execute('Any X WHERE X is CWUser')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    59
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'sameetypelist')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    60
            rset = req.execute('Any X, L WHERE X login L')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    61
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'sameetypelist')
2637
07103211e511 R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2381
diff changeset
    62
07103211e511 R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2381
diff changeset
    63
    def test_more_than_one_entity_diff_type(self):
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    64
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    65
            rset = req.execute('Any X WHERE X is IN (CWUser, CWGroup)')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    66
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'list')
1654
57b9fd2462b8 test updates
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    67
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    68
    def test_more_than_one_entity_by_row(self):
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    69
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    70
            rset = req.execute('Any X, G WHERE X in_group G')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    71
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'table')
1654
57b9fd2462b8 test updates
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    72
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    73
    def test_more_than_one_entity_by_row_2(self):
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    74
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    75
            rset = req.execute('Any X, GN WHERE X in_group G, G name GN')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    76
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'table')
1654
57b9fd2462b8 test updates
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
    77
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    78
    def test_aggregat(self):
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    79
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    80
            rset = req.execute('Any X, COUNT(T) GROUPBY X WHERE X is T')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    81
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'table')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    82
            rset = req.execute('Any MAX(X) WHERE X is CWUser')
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    83
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'table')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    84
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    85
    def test_subquery(self):
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    86
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    87
            rset = req.execute(
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    88
'DISTINCT Any X,N ORDERBY N '
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    89
'WITH X,N BEING ('
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 0
diff changeset
    90
'     (DISTINCT Any P,N WHERE P is CWUser, P login N)'
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    91
'       UNION'
1398
5fe84a5f7035 rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents: 0
diff changeset
    92
'     (DISTINCT Any W,N WHERE W is CWGroup, W name N))')
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    93
            self.assertEqual(vid_from_rset(req, rset, self.schema), 'table')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    94
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    95
2773
b2530e3e0afb [testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2650
diff changeset
    96
class TableViewTC(CubicWebTC):
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    97
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
    98
    def _prepare_entity(self, req):
4083
3b285889b8e9 3.6 api update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 3777
diff changeset
    99
        e = req.create_entity("State", name=u'<toto>', description=u'loo"ong blabla')
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   100
        rset = req.execute('Any X, D, CD, NOW - CD WHERE X is State, '
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   101
                           'X description D, X creation_date CD, X eid %(x)s',
5174
78438ad513ca #759035: Automate addition of eid cachekey in RQL analysis
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4494
diff changeset
   102
                           {'x': e.eid})
2650
18aec79ec3a3 R [vreg] important refactoring of the vregistry, moving behaviour to end dictionnary (and so leaving room for more flexibility ; keep bw compat ; update api usage in cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 2637
diff changeset
   103
        view = self.vreg['views'].select('table', req, rset=rset)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   104
        return e, rset, view
1654
57b9fd2462b8 test updates
sylvain.thenault@logilab.fr
parents: 1398
diff changeset
   105
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   106
    def test_sortvalue(self):
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   107
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   108
            e, _, view = self._prepare_entity(req)
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   109
            colrenderers = view.build_column_renderers()[:3]
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   110
            self.assertListEqual([renderer.sortvalue(0) for renderer in colrenderers],
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   111
                                 [u'<toto>', u'loo"ong blabla', e.creation_date])
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   112
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   113
7187
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   114
class HTMLStreamTests(CubicWebTC):
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   115
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   116
    def test_set_doctype_reset_xmldecl(self):
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   117
        """
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   118
        tests `cubicweb.web.request.CubicWebRequestBase.set_doctype`
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   119
        with xmldecl reset
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   120
        """
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   121
        class MyView(StartupView):
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   122
            __regid__ = 'my-view'
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   123
            def call(self):
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   124
                self._cw.set_doctype('<!DOCTYPE html>')
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   125
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   126
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   127
            with self.temporary_appobjects(MyView):
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   128
                html_source = self.view('my-view', req=req).source
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   129
                source_lines = [line.strip()
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   130
                                for line in html_source.splitlines(False)
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   131
                                if line.strip()]
10726
bb91f581c389 [py3k] PageInfo.source contains bytes
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9838
diff changeset
   132
                self.assertListEqual([b'<!DOCTYPE html>',
bb91f581c389 [py3k] PageInfo.source contains bytes
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9838
diff changeset
   133
                                      b'<html xmlns:cubicweb="http://www.cubicweb.org" lang="en">'],
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   134
                                     source_lines[:2])
7187
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   135
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   136
    def test_set_doctype_no_reset_xmldecl(self):
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   137
        """
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   138
        tests `cubicweb.web.request.CubicWebRequestBase.set_doctype`
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   139
        with no xmldecl reset
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   140
        """
8941
7b26fe71404f drop xhtml content-type support (closes #2065651)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 8694
diff changeset
   141
        html_doctype = TRANSITIONAL_DOCTYPE.strip()
7187
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   142
        class MyView(StartupView):
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   143
            __regid__ = 'my-view'
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   144
            def call(self):
9137
c791d8fddc15 [web doctype test] don't give reset_xmldecl to avoid deprecation warning
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 8941
diff changeset
   145
                self._cw.set_doctype(html_doctype)
7187
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   146
                self._cw.main_stream.set_htmlattrs([('lang', 'cz')])
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   147
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   148
        with self.admin_access.web_request() as req:
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   149
            with self.temporary_appobjects(MyView):
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   150
                html_source = self.view('my-view', req=req).source
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   151
                source_lines = [line.strip()
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   152
                                for line in html_source.splitlines(False)
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   153
                                if line.strip()]
10726
bb91f581c389 [py3k] PageInfo.source contains bytes
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9838
diff changeset
   154
                self.assertListEqual([html_doctype.encode('ascii'),
bb91f581c389 [py3k] PageInfo.source contains bytes
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9838
diff changeset
   155
                                      b'<html xmlns:cubicweb="http://www.cubicweb.org" lang="cz">',
bb91f581c389 [py3k] PageInfo.source contains bytes
Rémi Cardona <remi.cardona@logilab.fr>
parents: 9838
diff changeset
   156
                                      b'<head>'],
9838
14640aeb5ddc [webtests/baseviews] use the new connection api
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9523
diff changeset
   157
                                     source_lines[:3])
7187
496f51b92154 [views] extend HTMLStream API to be able to change doctype / xmldecl
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 6340
diff changeset
   158
11915
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   159
class BaseViewsTC(CubicWebTC):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   160
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   161
    def test_null(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   162
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   163
            rset = req.execute('Any X WHERE X login "admin"')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   164
            result = req.view('null', rset)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   165
            self.assertEqual(result, u'')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   166
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   167
    def test_final(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   168
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   169
            rset = req.execute('Any "<script></script>"')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   170
            result = req.view('final', rset)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   171
            self.assertEqual(result, u'&lt;script&gt;&lt;/script&gt;')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   172
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   173
    def test_incontext(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   174
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   175
            entity = req.create_entity('CWUser', login=u'<script></script>', upassword=u'toto')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   176
            result = entity.view('incontext')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   177
            expected = (u'<a href="http://testing.fr/cubicweb/%d" title="">'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   178
                        u'&lt;script&gt;&lt;/script&gt;</a>' % entity.eid)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   179
            self.assertEqual(result, expected)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   180
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   181
    def test_outofcontext(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   182
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   183
            entity = req.create_entity('CWUser', login=u'<script></script>', upassword=u'toto')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   184
            result = entity.view('outofcontext')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   185
            expect = (u'<a href="http://testing.fr/cubicweb/%d" title="">'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   186
                      u'&lt;script&gt;&lt;/script&gt;</a>' % entity.eid)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   187
            self.assertEqual(result, expect)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   188
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   189
    def test_outofcontext(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   190
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   191
            entity = req.create_entity('CWUser', login=u'<script></script>', upassword=u'toto')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   192
            result = entity.view('oneline')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   193
            expect = (u'<a href="http://testing.fr/cubicweb/%d" title="">'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   194
                      u'&lt;script&gt;&lt;/script&gt;</a>' % entity.eid)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   195
            self.assertEqual(result, expect)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   196
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   197
    def test_text(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   198
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   199
            entity = req.create_entity('CWUser', login=u'<script></script>', upassword=u'toto')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   200
            result = entity.view('text')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   201
            self.assertEqual(result, u'<script></script>')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   202
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   203
    def test_textincontext(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   204
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   205
            entity = req.create_entity('CWUser', login=u'<script></script>', upassword=u'toto')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   206
            result = entity.view('textincontext')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   207
            self.assertEqual(result, u'<script></script>')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   208
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   209
    def test_textoutofcontext(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   210
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   211
            entity = req.create_entity('CWUser', login=u'<script></script>', upassword=u'toto')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   212
            result = entity.view('textoutofcontext')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   213
            self.assertEqual(result, u'<script></script>')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   214
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   215
    def test_list(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   216
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   217
            entity = req.create_entity('CWUser', login=u'<script></script>', upassword=u'toto')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   218
            rset = req.execute('Any X WHERE X is CWUser')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   219
            result = req.view('list', rset)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   220
            expected = u'''<ul class="section">
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   221
<li><a href="http://testing.fr/cubicweb/%d" title="">&lt;script&gt;&lt;/script&gt;</a></li>
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   222
<li><a href="http://testing.fr/cubicweb/cwuser/admin" title="">admin</a></li>
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   223
<li><a href="http://testing.fr/cubicweb/cwuser/anon" title="">anon</a></li>
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   224
</ul>
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   225
''' % entity.eid
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   226
            self.assertEqual(result, expected)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   227
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   228
    def test_simplelist(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   229
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   230
            entity = req.create_entity('CWUser', login=u'<script></script>', upassword=u'toto')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   231
            rset = req.execute('Any X WHERE X is CWUser')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   232
            result = req.view('simplelist', rset)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   233
            expected = (
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   234
                u'<div class="section">'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   235
                u'<a href="http://testing.fr/cubicweb/%d" title="">'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   236
                u'&lt;script&gt;&lt;/script&gt;</a></div>'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   237
                u'<div class="section">'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   238
                u'<a href="http://testing.fr/cubicweb/cwuser/admin" title="">admin</a></div>'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   239
                u'<div class="section">'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   240
                u'<a href="http://testing.fr/cubicweb/cwuser/anon" title="">anon</a></div>'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   241
                % entity.eid
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   242
            )
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   243
            self.assertEqual(result, expected)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   244
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   245
    def test_sameetypelist(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   246
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   247
            entity = req.create_entity('CWUser', login=u'<script></script>', upassword=u'toto')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   248
            rset = req.execute('Any X WHERE X is CWUser')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   249
            result = req.view('sameetypelist', rset)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   250
            expected = (
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   251
                u'<h1>CWUser_plural</h1>'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   252
                u'<div class="section">'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   253
                u'<a href="http://testing.fr/cubicweb/%d" title="">'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   254
                u'&lt;script&gt;&lt;/script&gt;</a></div>'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   255
                u'<div class="section">'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   256
                u'<a href="http://testing.fr/cubicweb/cwuser/admin" title="">admin</a></div>'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   257
                u'<div class="section">'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   258
                u'<a href="http://testing.fr/cubicweb/cwuser/anon" title="">anon</a></div>'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   259
                % entity.eid
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   260
            )
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   261
            self.assertEqual(expected, result)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   262
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   263
    def test_sameetypelist(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   264
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   265
            entity = req.create_entity('CWUser', login=u'<script></script>', upassword=u'toto')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   266
            rset = req.execute('Any X WHERE X is CWUser')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   267
            result = req.view('csv', rset)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   268
            expected = (
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   269
                u'<a href="http://testing.fr/cubicweb/%d" title="">&lt;script&gt;&lt;/script&gt;</a>, '
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   270
                u'<a href="http://testing.fr/cubicweb/cwuser/admin" title="">admin</a>, '
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   271
                u'<a href="http://testing.fr/cubicweb/cwuser/anon" title="">anon</a>'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   272
                % entity.eid
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   273
            )
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   274
            self.assertEqual(result, expected)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   275
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   276
    def test_metadata(self):
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   277
        with self.admin_access.web_request() as req:
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   278
            entity = req.create_entity('CWUser', login=u'<script></script>', upassword=u'toto')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   279
            entity.cw_set(creation_date=u'2000-01-01 00:00:00')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   280
            entity.cw_set(modification_date=u'2015-01-01 00:00:00')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   281
            result = entity.view('metadata')
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   282
            expected = (
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   283
                u'<div>CWUser #%d - <span>latest update on</span>'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   284
                u' <span class="value">2015/01/01</span>,'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   285
                u' <span>created on</span>'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   286
                u' <span class="value">2000/01/01</span></div>'
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   287
                % entity.eid
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   288
            )
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   289
            self.assertEqual(result, expected)
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   290
fd42a39d3f66 [test] add some tests to web.views.baseviews
Alain Leufroy <alain@leufroy.fr>
parents: 11057
diff changeset
   291
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   292
if __name__ == '__main__':
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   293
    unittest_main()