def test_custom_method_name(self): self.app.mount_resource( 'my_method', TestResource, '/my_method', method_name='my_method') request = self.app.make_blank_request('/my_method') handlers.resource_finder(self.app, request, lambda a, r: None) self.assertTrue(hasattr(request, 'resource')) self.assertEqual(request.resource_method, 'my_method')
def test_resource_finder(self): next_handler = lambda app, req: setattr(req, 'test_attr', app) request = self.app.make_blank_request('/test') handlers.resource_finder(self.app, request, next_handler) self.assertTrue(hasattr(request, 'resource')) self.assertTrue(hasattr(request, 'test_attr')) self.assertIs(request.test_attr, self.app)
def test_custom_method_name(self): self.app.mount_resource('my_method', TestResource, '/my_method', method='my_method') request = self.app.make_blank_request('/my_method') handlers.resource_finder(self.app, request, lambda a, r: None) self.assertTrue(hasattr(request, 'resource')) self.assertEqual(request.resource_method, 'my_method')
def test_add_slash(self): self.app.mount_resource('slash', TestResource, '/slash/') # No redirect request = self.app.make_blank_request('/slash/') handlers.resource_finder(self.app, request, lambda a, r: None) # Redirect to slash request = self.app.make_blank_request('/slash') with self.assertRaises(_HTTPMove) as cm: handlers.resource_finder(self.app, request, lambda a, r: None) self.assertEqual(cm.exception.location, 'http://localhost/slash/')
def test_add_slash_redirect(self): app = self.app app.mount_resource('test', TestResource, '/some/dir', add_slash=True) # Should not redirect next_handler = lambda app_, request_: 'NEXT' request = app.make_blank_request('/some/dir/') self.assertEqual(resource_finder(app, request, next_handler), 'NEXT') # Should redirect request = app.make_blank_request('/some/dir') try: resource_finder(app, request, next_handler) except Exception as exc: self.assertTrue(exc.status.startswith('3')) self.assertTrue(exc.location.endswith('/some/dir/'))
def test_add_slash_redirect(self): app = Application({}) factory = lambda *args: type('Resource', (), {'GET': None}) app.mount_resource('test', factory, '/some/dir', add_slash=True) # Should not redirect next_handler = lambda app_, request_: 'NEXT' request = app.make_blank_request('/some/dir/') self.assertEqual(resource_finder(app, request, next_handler), 'NEXT') # Should redirect request = app.make_blank_request('/some/dir') try: resource_finder(app, request, next_handler) except Exception as exc: self.assertTrue(exc.status.startswith('3')) self.assertTrue(exc.location.endswith('/some/dir/'))
def test_missing_method_raises_405(self): request = self.app.make_blank_request('/test', method='POST') with self.assertRaises(HTTPMethodNotAllowed): handlers.resource_finder(self.app, request, lambda a, r: None)
def test_unregistered_path_raises_404(self): request = self.app.make_blank_request('/unregistered') with self.assertRaises(HTTPNotFound): handlers.resource_finder(self.app, request, lambda a, r: None)