web/test/unittest_urlrewrite.py
changeset 3465 01616e5fa590
parent 3185 bd0126d17e83
child 4252 6c4f109c2b03
equal deleted inserted replaced
3464:99bd1ea0394a 3465:01616e5fa590
    11 from cubicweb.devtools.fake import FakeRequest
    11 from cubicweb.devtools.fake import FakeRequest
    12 
    12 
    13 from cubicweb.web.views.urlrewrite import SimpleReqRewriter, SchemaBasedRewriter, rgx, rgx_action
    13 from cubicweb.web.views.urlrewrite import SimpleReqRewriter, SchemaBasedRewriter, rgx, rgx_action
    14 
    14 
    15 
    15 
    16 class UrlRewriteTC(TestCase):
    16 class UrlRewriteTC(CubicWebTC):
    17 
    17 
    18     def test_auto_extend_rules(self):
    18     def test_auto_extend_rules(self):
    19         class Rewriter(SimpleReqRewriter):
    19         class Rewriter(SimpleReqRewriter):
    20             rules = [
    20             rules = [
    21                 ('foo', dict(rql='Foo F')),
    21                 ('foo', dict(rql='Foo F')),
    62             ('/index' , dict(vid='index2')),
    62             ('/index' , dict(vid='index2')),
    63             ])
    63             ])
    64 
    64 
    65     def test_basic_transformation(self):
    65     def test_basic_transformation(self):
    66         """test simple string-based rewrite"""
    66         """test simple string-based rewrite"""
    67         rewriter = SimpleReqRewriter()
       
    68         req = FakeRequest()
    67         req = FakeRequest()
       
    68         rewriter = SimpleReqRewriter(req)
    69         self.assertRaises(KeyError, rewriter.rewrite, req, '/view?vid=whatever')
    69         self.assertRaises(KeyError, rewriter.rewrite, req, '/view?vid=whatever')
    70         self.assertEquals(req.form, {})
    70         self.assertEquals(req.form, {})
    71         rewriter.rewrite(req, '/index')
    71         rewriter.rewrite(req, '/index')
    72         self.assertEquals(req.form, {'vid' : "index"})
    72         self.assertEquals(req.form, {'vid' : "index"})
    73 
    73 
    74     def test_regexp_transformation(self):
    74     def test_regexp_transformation(self):
    75         """test regexp-based rewrite"""
    75         """test regexp-based rewrite"""
    76         rewriter = SimpleReqRewriter()
       
    77         req = FakeRequest()
    76         req = FakeRequest()
       
    77         rewriter = SimpleReqRewriter(req)
    78         rewriter.rewrite(req, '/add/Task')
    78         rewriter.rewrite(req, '/add/Task')
    79         self.assertEquals(req.form, {'vid' : "creation", 'etype' : "Task"})
    79         self.assertEquals(req.form, {'vid' : "creation", 'etype' : "Task"})
    80         req = FakeRequest()
    80         req = FakeRequest()
    81         rewriter.rewrite(req, '/add/Task/')
    81         rewriter.rewrite(req, '/add/Task/')
    82         self.assertEquals(req.form, {'vid' : "creation", 'etype' : "Task"})
    82         self.assertEquals(req.form, {'vid' : "creation", 'etype' : "Task"})
    98                 (rgx('/(?P<sn>\w+)/(?P<fn>\w+)'), rgx_action(r'Any X WHERE X surname %(sn)s, X firstname %(fn)s',
    98                 (rgx('/(?P<sn>\w+)/(?P<fn>\w+)'), rgx_action(r'Any X WHERE X surname %(sn)s, X firstname %(fn)s',
    99                                                                              argsgroups=('sn', 'fn'),
    99                                                                              argsgroups=('sn', 'fn'),
   100                                                                              transforms={'sn' : unicode.capitalize,
   100                                                                              transforms={'sn' : unicode.capitalize,
   101                                                                                          'fn' : unicode.lower,})),
   101                                                                                          'fn' : unicode.lower,})),
   102                 ]
   102                 ]
   103         rewriter = TestSchemaBasedRewriter()
       
   104         req = self.request()
   103         req = self.request()
       
   104         rewriter = TestSchemaBasedRewriter(req)
   105         pmid, rset = rewriter.rewrite(req, u'/DaLToN/JoE')
   105         pmid, rset = rewriter.rewrite(req, u'/DaLToN/JoE')
   106         self.assertEquals(len(rset), 1)
   106         self.assertEquals(len(rset), 1)
   107         self.assertEquals(rset[0][0], self.p1.eid)
   107         self.assertEquals(rset[0][0], self.p1.eid)
   108 
   108 
   109     def test_inheritance_precedence(self):
   109     def test_inheritance_precedence(self):
   123                 rgx_action(rql=RQL2,
   123                 rgx_action(rql=RQL2,
   124                     form=dict(vid='index')),
   124                     form=dict(vid='index')),
   125                 ),
   125                 ),
   126                 ]
   126                 ]
   127 
   127 
   128         rewriter = Rewriter()
       
   129         req = self.request()
   128         req = self.request()
       
   129         rewriter = Rewriter(req)
   130         pmid, rset = rewriter.rewrite(req, '/collector')
   130         pmid, rset = rewriter.rewrite(req, '/collector')
   131         self.assertEquals(rset.rql, RQL1)
   131         self.assertEquals(rset.rql, RQL1)
   132         self.assertEquals(req.form, {'vid' : "baseindex"})
   132         self.assertEquals(req.form, {'vid' : "baseindex"})
   133         pmid, rset = rewriter.rewrite(req, '/collector/something')
   133         pmid, rset = rewriter.rewrite(req, '/collector/something')
   134         self.assertEquals(rset.rql, RQL2)
   134         self.assertEquals(rset.rql, RQL2)
   157                 rgx_action(rql=RQL2,
   157                 rgx_action(rql=RQL2,
   158                     form=dict(vid='index')),
   158                     form=dict(vid='index')),
   159                 ),
   159                 ),
   160                 ]
   160                 ]
   161 
   161 
   162         rewriter = Rewriter()
       
   163         req = self.request()
   162         req = self.request()
       
   163         rewriter = Rewriter(req)
   164         pmid, rset = rewriter.rewrite(req, '/collector')
   164         pmid, rset = rewriter.rewrite(req, '/collector')
   165         self.assertEquals(rset.rql, RQL2)
   165         self.assertEquals(rset.rql, RQL2)
   166         self.assertEquals(req.form, {'vid' : "index"})
   166         self.assertEquals(req.form, {'vid' : "index"})
   167         pmid, rset = rewriter.rewrite(req, '/collector/something')
   167         pmid, rset = rewriter.rewrite(req, '/collector/something')
   168         self.assertEquals(rset.rql, RQL2)
   168         self.assertEquals(rset.rql, RQL2)