Skip to content

Commit

Permalink
Merge pull request #567 from Axik/master
Browse files Browse the repository at this point in the history
Validate route name
  • Loading branch information
asvetlov committed Oct 15, 2015
2 parents db29231 + a2aa20d commit 4b6ff68
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
7 changes: 6 additions & 1 deletion aiohttp/web_urldispatcher.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import abc
import asyncio

import keyword
import collections
import mimetypes
import re
Expand Down Expand Up @@ -442,8 +443,12 @@ def register_route(self, route):
assert isinstance(route, Route), 'Instance of Route class is required.'

name = route.name

if name is not None:
if name in self._routes:
if not name.isidentifier() or keyword.iskeyword(name):
raise ValueError('Incorrect route name value, '
'Route name should be python identifier')
elif name in self._routes:
raise ValueError('Duplicate {!r}, '
'already handled by {!r}'
.format(name, self._routes[name]))
Expand Down
6 changes: 6 additions & 0 deletions tests/test_urldispatch.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@ def test_register_route_checks(self):
self.router.register_route(route)
self.assertRaises(ValueError, self.router.register_route, route)

route = PlainRoute('GET', handler, '1bad name', '/handler/to/path')
self.assertRaises(ValueError, self.router.register_route, route)

route = PlainRoute('GET', handler, 'return', '/handler/to/path')
self.assertRaises(ValueError, self.router.register_route, route)

def test_add_route_root(self):
handler = self.make_handler()
self.router.add_route('GET', '/', handler)
Expand Down

0 comments on commit 4b6ff68

Please sign in to comment.