web/test/unittest_urlpublisher.py
branchtls-sprint
changeset 1654 57b9fd2462b8
parent 1398 5fe84a5f7035
child 1977 606923dff11b
equal deleted inserted replaced
1653:8b82227719f0 1654:57b9fd2462b8
    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()