def test_rebar_can_be_url_prefixed(self): app = Flask(__name__) app.testing = True rebar = Rebar() registry_v1 = rebar.create_handler_registry(prefix='v1') registry_v2 = rebar.create_handler_registry( prefix='/v2/') # Slashes shouldn't matter # We use the same endpoint to show that the swagger operationId gets set correctly # and the Flask endpoint gets prefixed register_endpoint(registry=registry_v1, endpoint='get_foo') register_endpoint(registry=registry_v2, endpoint='get_foo') rebar.init_app(app) for prefix in ('v1', 'v2'): resp = app.test_client().get( prefix_url(prefix=prefix, url='/swagger/ui/')) self.assertEqual(resp.status_code, 200) swagger = get_swagger(test_client=app.test_client(), prefix=prefix) validate_swagger(swagger) self.assertEqual( swagger['paths'][prefix_url( prefix=prefix, url='/foos/{foo_uid}')]['get']['operationId'], 'get_foo') resp = app.test_client().get( prefix_url(prefix=prefix, url='/foos/1')) self.assertEqual(resp.status_code, 200)
def test_clone_rebar(self): rebar = Rebar() app = Flask(__name__) app.testing = True registry = rebar.create_handler_registry() register_default_authenticator(registry) register_endpoint(registry) cloned = registry.clone() cloned.prefix = 'v1' rebar.add_handler_registry(registry=cloned) rebar.init_app(app) resp = app.test_client().get('/swagger/ui/') self.assertEqual(resp.status_code, 200) resp = app.test_client().get(path='/foos/1', headers=auth_headers()) self.assertEqual(resp.status_code, 200) resp = app.test_client().get('/v1/swagger/ui/') self.assertEqual(resp.status_code, 200) resp = app.test_client().get(path='/v1/foos/1', headers=auth_headers()) self.assertEqual(resp.status_code, 200)
def test_rebar_can_be_url_prefixed(self): app = Flask(__name__) app.testing = True rebar = Rebar() registry_v1 = rebar.create_handler_registry(prefix="v1") registry_v2 = rebar.create_handler_registry( prefix="/v2/") # Slashes shouldn't matter # We use the same endpoint to show that the swagger operationId gets set correctly # and the Flask endpoint gets prefixed register_endpoint(registry=registry_v1, endpoint="get_foo") register_endpoint(registry=registry_v2, endpoint="get_foo") rebar.init_app(app) for prefix in ("v1", "v2"): resp = app.test_client().get( prefix_url(prefix=prefix, url="/swagger/ui/")) self.assertEqual(resp.status_code, 200) swagger = get_swagger(test_client=app.test_client(), prefix=prefix) validate_swagger(swagger) self.assertEqual( swagger["paths"][prefix_url( prefix=prefix, url="/foos/{foo_uid}")]["get"]["operationId"], "get_foo", ) resp = app.test_client().get( prefix_url(prefix=prefix, url="/foos/1")) self.assertEqual(resp.status_code, 200)