From 02187eea5e296a7b01a517960597c9b4fd7887c7 Mon Sep 17 00:00:00 2001 From: Andrew Svetlov Date: Sat, 12 Mar 2016 19:16:58 +0200 Subject: [PATCH] Fix Resouce: append found method to returned allowed methods --- CHANGES.txt | 2 ++ aiohttp/web_urldispatcher.py | 3 +-- tests/test_urldispatch.py | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 2eda1a14fe..9233434d9f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -10,6 +10,8 @@ CHANGES - Fix ResourceAdapter: dont add method to allowed if resource is not match #826 +- Fix Resouce: append found method to returned allowed methods + 0.21.1 (02-10-2016) ------------------- diff --git a/aiohttp/web_urldispatcher.py b/aiohttp/web_urldispatcher.py index 307b84b597..31a2a953d8 100644 --- a/aiohttp/web_urldispatcher.py +++ b/aiohttp/web_urldispatcher.py @@ -258,11 +258,10 @@ def resolve(self, method, path): for route in self._routes: route_method = route.method + allowed_methods.add(route_method) if route_method == method or route_method == hdrs.METH_ANY: return UrlMappingMatchInfo(match_dict, route), allowed_methods - - allowed_methods.add(route_method) else: return None, allowed_methods diff --git a/tests/test_urldispatch.py b/tests/test_urldispatch.py index 9c718aadf4..45ba143294 100644 --- a/tests/test_urldispatch.py +++ b/tests/test_urldispatch.py @@ -904,3 +904,11 @@ def test_405_for_resource_adapter(self): ret = self.loop.run_until_complete( resource.resolve('POST', '/st/abc.py')) self.assertEqual((None, {'GET'}), ret) + + def test_check_allowed_method_for_found_resource(self): + handler = self.make_handler() + resource = self.router.add_resource('/') + resource.add_route('GET', handler) + ret = self.loop.run_until_complete(resource.resolve('GET', '/')) + self.assertIsNotNone(ret[0]) + self.assertEqual({'GET'}, ret[1])