cubicweb/web/test/unittest_application.py
changeset 12567 26744ad37953
parent 12503 b01dd0ef43aa
equal deleted inserted replaced
12566:6b3523f81f42 12567:26744ad37953
    16 # You should have received a copy of the GNU Lesser General Public License along
    16 # You should have received a copy of the GNU Lesser General Public License along
    17 # with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
    17 # with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
    18 """unit tests for cubicweb.web.application"""
    18 """unit tests for cubicweb.web.application"""
    19 
    19 
    20 import base64
    20 import base64
    21 
    21 import http.client
    22 from six import text_type
    22 from http.cookies import SimpleCookie
    23 from six.moves import http_client
       
    24 from six.moves.http_cookies import SimpleCookie
       
    25 
    23 
    26 from logilab.common.testlib import TestCase, unittest_main
    24 from logilab.common.testlib import TestCase, unittest_main
    27 from logilab.common.decorators import clear_cache
    25 from logilab.common.decorators import clear_cache
    28 
    26 
    29 from cubicweb import view
    27 from cubicweb import view
   165             cnx.commit()
   163             cnx.commit()
   166 
   164 
   167     def test_publish_validation_error(self):
   165     def test_publish_validation_error(self):
   168         with self.admin_access.web_request() as req:
   166         with self.admin_access.web_request() as req:
   169             user = req.user
   167             user = req.user
   170             eid = text_type(user.eid)
   168             eid = str(user.eid)
   171             req.form = {
   169             req.form = {
   172                 'eid': eid,
   170                 'eid': eid,
   173                 '__type:' + eid: 'CWUser',
   171                 '__type:' + eid: 'CWUser',
   174                 '_cw_entity_fields:' + eid: 'login-subject',
   172                 '_cw_entity_fields:' + eid: 'login-subject',
   175                 'login-subject:' + eid: '',  # ERROR: no login specified
   173                 'login-subject:' + eid: '',  # ERROR: no login specified
   246     def test_handle_request_with_lang_negotiated(self):
   244     def test_handle_request_with_lang_negotiated(self):
   247         """Language negociated, normal case."""
   245         """Language negociated, normal case."""
   248         self.config.global_set_option('language-mode', 'http-negotiation')
   246         self.config.global_set_option('language-mode', 'http-negotiation')
   249         orig_translations = self.config.translations.copy()
   247         orig_translations = self.config.translations.copy()
   250         self.config.translations = {
   248         self.config.translations = {
   251             'fr': (text_type, lambda x, y: text_type(y)),
   249             'fr': (str, lambda x, y: str(y)),
   252             'en': (text_type, lambda x, y: text_type(y))}
   250             'en': (str, lambda x, y: str(y))}
   253         try:
   251         try:
   254             headers = {'Accept-Language': 'fr'}
   252             headers = {'Accept-Language': 'fr'}
   255             with self.admin_access.web_request(headers=headers) as req:
   253             with self.admin_access.web_request(headers=headers) as req:
   256                 self.app.handle_request(req)
   254                 self.app.handle_request(req)
   257             self.assertEqual(req.lang, 'fr')
   255             self.assertEqual(req.lang, 'fr')
   334     def _edit_parent(self, dir_eid, parent_eid, role='subject',
   332     def _edit_parent(self, dir_eid, parent_eid, role='subject',
   335                      etype='Directory', **kwargs):
   333                      etype='Directory', **kwargs):
   336         parent_eid = parent_eid or '__cubicweb_internal_field__'
   334         parent_eid = parent_eid or '__cubicweb_internal_field__'
   337         with self.admin_access.web_request() as req:
   335         with self.admin_access.web_request() as req:
   338             req.form = {
   336             req.form = {
   339                 'eid': text_type(dir_eid),
   337                 'eid': str(dir_eid),
   340                 '__maineid': text_type(dir_eid),
   338                 '__maineid': str(dir_eid),
   341                 '__type:%s' % dir_eid: etype,
   339                 '__type:%s' % dir_eid: etype,
   342                 'parent-%s:%s' % (role, dir_eid): parent_eid,
   340                 'parent-%s:%s' % (role, dir_eid): parent_eid,
   343             }
   341             }
   344             req.form.update(kwargs)
   342             req.form.update(kwargs)
   345             req.form['_cw_entity_fields:%s' % dir_eid] = ','.join(
   343             req.form['_cw_entity_fields:%s' % dir_eid] = ','.join(
   351 
   349 
   352     def _edit_in_version(self, ticket_eid, version_eid, **kwargs):
   350     def _edit_in_version(self, ticket_eid, version_eid, **kwargs):
   353         version_eid = version_eid or '__cubicweb_internal_field__'
   351         version_eid = version_eid or '__cubicweb_internal_field__'
   354         with self.admin_access.web_request() as req:
   352         with self.admin_access.web_request() as req:
   355             req.form = {
   353             req.form = {
   356                 'eid': text_type(ticket_eid),
   354                 'eid': str(ticket_eid),
   357                 '__maineid': text_type(ticket_eid),
   355                 '__maineid': str(ticket_eid),
   358                 '__type:%s' % ticket_eid: 'Ticket',
   356                 '__type:%s' % ticket_eid: 'Ticket',
   359                 'in_version-subject:%s' % ticket_eid: version_eid,
   357                 'in_version-subject:%s' % ticket_eid: version_eid,
   360             }
   358             }
   361             req.form.update(kwargs)
   359             req.form.update(kwargs)
   362             req.form['_cw_entity_fields:%s' % ticket_eid] = ','.join(
   360             req.form['_cw_entity_fields:%s' % ticket_eid] = ','.join(
   393             topd = cnx.create_entity('Directory', name=u'topd')
   391             topd = cnx.create_entity('Directory', name=u'topd')
   394             cnx.commit()
   392             cnx.commit()
   395 
   393 
   396         with self.admin_access.web_request() as req:
   394         with self.admin_access.web_request() as req:
   397             req.form = {
   395             req.form = {
   398                 'eid': (text_type(topd.eid), u'B'),
   396                 'eid': (str(topd.eid), u'B'),
   399                 '__maineid': text_type(topd.eid),
   397                 '__maineid': str(topd.eid),
   400                 '__type:%s' % topd.eid: 'Directory',
   398                 '__type:%s' % topd.eid: 'Directory',
   401                 '__type:B': 'Directory',
   399                 '__type:B': 'Directory',
   402                 'parent-object:%s' % topd.eid: u'B',
   400                 'parent-object:%s' % topd.eid: u'B',
   403                 'name-subject:B': u'subd',
   401                 'name-subject:B': u'subd',
   404                 '_cw_entity_fields:%s' % topd.eid: 'parent-object',
   402                 '_cw_entity_fields:%s' % topd.eid: 'parent-object',
   567             mydir = cnx.create_entity('Directory', name=u'dir',
   565             mydir = cnx.create_entity('Directory', name=u'dir',
   568                                       has_permission=perm)
   566                                       has_permission=perm)
   569             cnx.commit()
   567             cnx.commit()
   570 
   568 
   571         with self.admin_access.web_request() as req:
   569         with self.admin_access.web_request() as req:
   572             dir_eid = text_type(mydir.eid)
   570             dir_eid = str(mydir.eid)
   573             perm_eid = text_type(perm.eid)
   571             perm_eid = str(perm.eid)
   574             req.form = {
   572             req.form = {
   575                 'eid': [dir_eid, perm_eid],
   573                 'eid': [dir_eid, perm_eid],
   576                 '__maineid': dir_eid,
   574                 '__maineid': dir_eid,
   577                 '__type:%s' % dir_eid: 'Directory',
   575                 '__type:%s' % dir_eid: 'Directory',
   578                 '__type:%s' % perm_eid: 'DirectoryPermission',
   576                 '__type:%s' % perm_eid: 'DirectoryPermission',
   594         with self.temporary_appobjects(ErrorAjaxView):
   592         with self.temporary_appobjects(ErrorAjaxView):
   595             with real_error_handling(self.app) as app:
   593             with real_error_handling(self.app) as app:
   596                 with self.admin_access.web_request(vid='test.ajax.error', url='') as req:
   594                 with self.admin_access.web_request(vid='test.ajax.error', url='') as req:
   597                     req.ajax_request = True
   595                     req.ajax_request = True
   598                     app.handle_request(req)
   596                     app.handle_request(req)
   599         self.assertEqual(http_client.INTERNAL_SERVER_ERROR,
   597         self.assertEqual(http.client.INTERNAL_SERVER_ERROR,
   600                          req.status_out)
   598                          req.status_out)
   601 
   599 
   602     def _test_cleaned(self, kwargs, injected, cleaned):
   600     def _test_cleaned(self, kwargs, injected, cleaned):
   603         with self.admin_access.web_request(**kwargs) as req:
   601         with self.admin_access.web_request(**kwargs) as req:
   604             page = self.app_handle_request(req)
   602             page = self.app_handle_request(req)