Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)