19 def setup_database(self): |
19 def setup_database(self): |
20 self.create_user(u'ÿsaÿe') |
20 self.create_user(u'ÿsaÿe') |
21 b = self.add_entity('BlogEntry', title=u'hell\'o', content=u'blabla') |
21 b = self.add_entity('BlogEntry', title=u'hell\'o', content=u'blabla') |
22 c = self.add_entity('Tag', name=u'yo') # take care: Tag's name normalized to lower case |
22 c = self.add_entity('Tag', name=u'yo') # take care: Tag's name normalized to lower case |
23 self.execute('SET C tags B WHERE C eid %(c)s, B eid %(b)s', {'c':c.eid, 'b':b.eid}, 'b') |
23 self.execute('SET C tags B WHERE C eid %(c)s, B eid %(b)s', {'c':c.eid, 'b':b.eid}, 'b') |
24 |
24 |
25 def process(self, url): |
25 def process(self, url): |
26 req = self.req = self.request() |
26 req = self.req = self.request() |
27 return self.env.app.url_resolver.process(req, url) |
27 return self.env.app.url_resolver.process(req, url) |
28 |
28 |
29 def test_raw_path(self): |
29 def test_raw_path(self): |
30 """tests raw path resolution'""" |
30 """tests raw path resolution'""" |
31 self.assertEquals(self.process('view'), ('view', None)) |
31 self.assertEquals(self.process('view'), ('view', None)) |
32 self.assertEquals(self.process('edit'), ('edit', None)) |
32 self.assertEquals(self.process('edit'), ('edit', None)) |
33 self.assertRaises(NotFound, self.process, 'whatever') |
33 self.assertRaises(NotFound, self.process, 'whatever') |
49 ctrl, rset = self.process('CWUser/login/admin') |
49 ctrl, rset = self.process('CWUser/login/admin') |
50 self.assertEquals(ctrl, 'view') |
50 self.assertEquals(ctrl, 'view') |
51 self.assertEquals(len(rset), 1) |
51 self.assertEquals(len(rset), 1) |
52 self.assertEquals(rset.description[0][0], 'CWUser') |
52 self.assertEquals(rset.description[0][0], 'CWUser') |
53 self.assertEquals(rset.printable_rql(), 'Any X WHERE X is CWUser, X login "admin"') |
53 self.assertEquals(rset.printable_rql(), 'Any X WHERE X is CWUser, X login "admin"') |
54 ctrl, rset = self.process('euser/admin') |
54 ctrl, rset = self.process('cwuser/admin') |
55 self.assertEquals(ctrl, 'view') |
55 self.assertEquals(ctrl, 'view') |
56 self.assertEquals(len(rset), 1) |
56 self.assertEquals(len(rset), 1) |
57 self.assertEquals(rset.description[0][0], 'CWUser') |
57 self.assertEquals(rset.description[0][0], 'CWUser') |
58 self.assertEquals(rset.printable_rql(), 'Any X WHERE X is CWUser, X login "admin"') |
58 self.assertEquals(rset.printable_rql(), 'Any X WHERE X is CWUser, X login "admin"') |
59 ctrl, rset = self.process('euser/eid/%s'%rset[0][0]) |
59 ctrl, rset = self.process('cwuser/eid/%s'%rset[0][0]) |
60 self.assertEquals(ctrl, 'view') |
60 self.assertEquals(ctrl, 'view') |
61 self.assertEquals(len(rset), 1) |
61 self.assertEquals(len(rset), 1) |
62 self.assertEquals(rset.description[0][0], 'CWUser') |
62 self.assertEquals(rset.description[0][0], 'CWUser') |
63 self.assertEquals(rset.printable_rql(), 'Any X WHERE X is CWUser, X eid 5') |
63 self.assertEquals(rset.printable_rql(), 'Any X WHERE X is CWUser, X eid 5') |
64 # test non-ascii paths |
64 # test non-ascii paths |
75 self.assertEquals(rset.printable_rql(), u'Any X WHERE X is BlogEntry, X title "hell\'o"') |
75 self.assertEquals(rset.printable_rql(), u'Any X WHERE X is BlogEntry, X title "hell\'o"') |
76 # errors |
76 # errors |
77 self.assertRaises(NotFound, self.process, 'CWUser/eid/30000') |
77 self.assertRaises(NotFound, self.process, 'CWUser/eid/30000') |
78 self.assertRaises(NotFound, self.process, 'Workcases') |
78 self.assertRaises(NotFound, self.process, 'Workcases') |
79 self.assertRaises(NotFound, self.process, 'CWUser/inexistant_attribute/joe') |
79 self.assertRaises(NotFound, self.process, 'CWUser/inexistant_attribute/joe') |
80 |
80 |
81 def test_action_path(self): |
81 def test_action_path(self): |
82 """tests the action path resolution""" |
82 """tests the action path resolution""" |
83 self.assertRaises(Redirect, self.process, '1/edit') |
83 self.assertRaises(Redirect, self.process, '1/edit') |
84 self.assertRaises(Redirect, self.process, 'Tag/name/yo/edit') |
84 self.assertRaises(Redirect, self.process, 'Tag/name/yo/edit') |
85 self.assertRaises(Redirect, self.process, 'Tag/yo/edit') |
85 self.assertRaises(Redirect, self.process, 'Tag/yo/edit') |
90 |
90 |
91 def test_regexp_path(self): |
91 def test_regexp_path(self): |
92 """tests the regexp path resolution""" |
92 """tests the regexp path resolution""" |
93 ctrl, rset = self.process('add/Task') |
93 ctrl, rset = self.process('add/Task') |
94 self.assertEquals(ctrl, 'view') |
94 self.assertEquals(ctrl, 'view') |
95 self.assertEquals(rset, None) |
95 self.assertEquals(rset, None) |
96 self.assertEquals(self.req.form, {'etype' : "Task", 'vid' : "creation"}) |
96 self.assertEquals(self.req.form, {'etype' : "Task", 'vid' : "creation"}) |
97 self.assertRaises(NotFound, self.process, 'add/foo/bar') |
97 self.assertRaises(NotFound, self.process, 'add/foo/bar') |
98 |
98 |
99 |
99 |
100 def test_nonascii_path(self): |
100 def test_nonascii_path(self): |
101 oldrules = SimpleReqRewriter.rules |
101 oldrules = SimpleReqRewriter.rules |
102 SimpleReqRewriter.rules = [(re.compile('/\w+', re.U), dict(vid='foo')),] |
102 SimpleReqRewriter.rules = [(re.compile('/\w+', re.U), dict(vid='foo')),] |
103 try: |
103 try: |
104 path = str(FakeRequest().url_quote(u'été')) |
104 path = str(FakeRequest().url_quote(u'été')) |
105 ctrl, rset = self.process(path) |
105 ctrl, rset = self.process(path) |
106 self.assertEquals(rset, None) |
106 self.assertEquals(rset, None) |
107 self.assertEquals(self.req.form, {'vid' : "foo"}) |
107 self.assertEquals(self.req.form, {'vid' : "foo"}) |
108 finally: |
108 finally: |
109 SimpleReqRewriter.rules = oldrules |
109 SimpleReqRewriter.rules = oldrules |
110 |
110 |
111 |
111 |
112 if __name__ == '__main__': |
112 if __name__ == '__main__': |
113 unittest_main() |
113 unittest_main() |