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) |