# filter out controller path params
for idx, step in enumerate(cls._cp_path_.split('/')):
+ param = None
if step[0] == ':':
param = step[1:]
+ if step[0] == '{' and step[-1] == '}' and ':' in step[1:-1]:
+ param, _, _regex = step[1:-1].partition(':')
+
+ if param:
if param not in cargs:
raise Exception("function '{}' does not have the"
" positional argument '{}' in the {} "
from ..services.exception import handle_rados_error
from .helper import ControllerTestCase
-from ..controllers import RESTController, ApiController
+from ..controllers import RESTController, ApiController, BaseController
from ..tools import is_valid_ipv6_address, dict_contains_path
return {'detail': (key, [method])}
+@ApiController('rgw/proxy/{path:.*}')
+class GenerateControllerRoutesController(BaseController):
+ @cherrypy.expose
+ def __call__(self, path, **params):
+ pass
+
+
@ApiController('fooargs')
class FooArgs(RESTController):
def set(self, code, name=None, opt1=None, opt2=None):
@classmethod
def setup_server(cls):
- cls.setup_controllers([FooResource, FooResourceDetail, FooArgs])
+ cls.setup_controllers(
+ [FooResource, FooResourceDetail, FooArgs, GenerateControllerRoutesController])
def test_empty(self):
self._delete("/foo")
self.getPage('/fooargs', headers=[('Accept', 'text/html')])
self.assertIn('my_arg_name', self.body.decode('utf-8'))
+ def test_generate_controller_routes(self):
+ # We just need to add this controller in setup_server():
+ # noinspection PyStatementEffect
+ # pylint: disable=pointless-statement
+ GenerateControllerRoutesController
+
class TestFunctions(unittest.TestCase):