cubicweb/ext/test/unittest_rest.py
branch3.26
changeset 12489 79fce4bde06f
parent 12488 3ad34ceee0c4
child 12567 26744ad37953
equal deleted inserted replaced
12488:3ad34ceee0c4 12489:79fce4bde06f
    20 from logilab.common.testlib import unittest_main
    20 from logilab.common.testlib import unittest_main
    21 from cubicweb.devtools.testlib import CubicWebTC
    21 from cubicweb.devtools.testlib import CubicWebTC
    22 
    22 
    23 from cubicweb.ext.rest import rest_publish
    23 from cubicweb.ext.rest import rest_publish
    24 
    24 
       
    25 
    25 class RestTC(CubicWebTC):
    26 class RestTC(CubicWebTC):
    26 
    27 
    27     def context(self, req):
    28     def context(self, req):
    28         return req.execute('CWUser X WHERE X login "admin"').get_entity(0, 0)
    29         return req.execute('CWUser X WHERE X login "admin"').get_entity(0, 0)
    29 
    30 
    30     def test_eid_role(self):
    31     def test_eid_role(self):
    31         with self.admin_access.web_request() as req:
    32         with self.admin_access.web_request() as req:
    32             context = self.context(req)
    33             context = self.context(req)
    33             self.assertEqual(rest_publish(context, ':eid:`%s`' % context.eid),
    34             self.assertEqual(rest_publish(context, ':eid:`%s`' % context.eid),
    34                              '<p><a class="reference" href="http://testing.fr/cubicweb/cwuser/admin">'
    35                              '<p><a class="reference"'
       
    36                              ' href="http://testing.fr/cubicweb/cwuser/admin">'
    35                              '#%s</a></p>\n' % context.eid)
    37                              '#%s</a></p>\n' % context.eid)
    36             self.assertEqual(rest_publish(context, ':eid:`%s:some text`' % context.eid),
    38             self.assertEqual(rest_publish(context, ':eid:`%s:some text`' % context.eid),
    37                              '<p><a class="reference" href="http://testing.fr/cubicweb/cwuser/admin">'
    39                              '<p><a class="reference"'
       
    40                              ' href="http://testing.fr/cubicweb/cwuser/admin">'
    38                              'some text</a></p>\n')
    41                              'some text</a></p>\n')
    39 
    42 
    40     def test_bad_rest_no_crash(self):
    43     def test_bad_rest_no_crash(self):
    41         with self.admin_access.web_request() as req:
    44         with self.admin_access.web_request() as req:
    42             rest_publish(self.context(req), '''
    45             rest_publish(self.context(req), '''
    70             self.assertNotIn('colspan', value)
    73             self.assertNotIn('colspan', value)
    71 
    74 
    72     def test_rql_role_with_vid(self):
    75     def test_rql_role_with_vid(self):
    73         with self.admin_access.web_request() as req:
    76         with self.admin_access.web_request() as req:
    74             context = self.context(req)
    77             context = self.context(req)
    75             out = rest_publish(context, ':rql:`Any X ORDERBY XL WHERE X is CWUser, X login XL:table`')
    78             out = rest_publish(context,
       
    79                                ':rql:`Any X ORDERBY XL WHERE X is CWUser, X login XL:table`')
    76             self.assertTrue(out.endswith('<a href="http://testing.fr/cubicweb/cwuser/anon" '
    80             self.assertTrue(out.endswith('<a href="http://testing.fr/cubicweb/cwuser/anon" '
    77                                          'title="">anon</a></td></tr>\n</tbody></table>'
    81                                          'title="">anon</a></td></tr>\n</tbody></table>'
    78                                          '</div></p>\n'))
    82                                          '</div></p>\n'))
    79 
    83 
    80     def test_rql_role_with_vid_empty_rset(self):
    84     def test_rql_role_with_vid_empty_rset(self):
   120         with self.admin_access.web_request() as req:
   124         with self.admin_access.web_request() as req:
   121             context = self.context(req)
   125             context = self.context(req)
   122             out = rest_publish(context, """.. rql-table::""")
   126             out = rest_publish(context, """.. rql-table::""")
   123             self.assertIn("System Message: ERROR", out)
   127             self.assertIn("System Message: ERROR", out)
   124             self.assertIn("Content block expected for the &quot;rql-table&quot; "
   128             self.assertIn("Content block expected for the &quot;rql-table&quot; "
   125                           "directive; none found" , out)
   129                           "directive; none found", out)
   126 
   130 
   127     def test_rqltable_norset(self):
   131     def test_rqltable_norset(self):
   128         with self.admin_access.web_request() as req:
   132         with self.admin_access.web_request() as req:
   129             context = self.context(req)
   133             context = self.context(req)
   130             rql = "Any X WHERE X is CWUser, X firstname 'franky'"
   134             rql = "Any X WHERE X is CWUser, X firstname 'franky'"
   229                 self.context(req), """\
   233                 self.context(req), """\
   230 .. rql-table::
   234 .. rql-table::
   231    :colvids: %(colvids)s
   235    :colvids: %(colvids)s
   232 
   236 
   233    %(rql)s
   237    %(rql)s
   234                 """ % {'rql': rql,
   238                 """
   235                        'colvids': ', '.join(["%d=%s" % (k, v)
   239                 % {'rql': rql,
   236                                              for k, v in colvids.items()])
   240                    'colvids': ', '.join(["%d=%s" % (k, v)
   237                    })
   241                                          for k, v in colvids.items()])}
       
   242             )
   238             view = self.vreg['views'].select('table', req, rset=req.execute(rql))
   243             view = self.vreg['views'].select('table', req, rset=req.execute(rql))
   239             view.cellvids = colvids
   244             view.cellvids = colvids
   240             self.assertEqual(view.render(w=None)[49:], out[49:])
   245             self.assertEqual(view.render(w=None)[49:], out[49:])
   241 
   246 
   242 
   247