def test_schema_generation_explicit(): import responder from responder.ext.schema import Schema as OpenAPISchema import marshmallow api = responder.API() schema = OpenAPISchema(app=api, title="Web Service", version="1.0", openapi="3.0.2") @schema.schema("Pet") class PetSchema(marshmallow.Schema): name = marshmallow.fields.Str() @api.route("/") def route(req, resp): """A cute furry animal endpoint. --- get: description: Get a random pet responses: 200: description: A pet to be returned schema: $ref: "#/components/schemas/Pet" """ resp.media = PetSchema().dump({"name": "little orange"}) r = api.requests.get("http://;/schema.yml") dump = yaml.safe_load(r.content) assert dump assert dump["openapi"] == "3.0.2"
def test_documentation_explicit(): import responder from responder.ext.schema import Schema as OpenAPISchema import marshmallow description = "This is a sample server for a pet store." terms_of_service = "http://example.com/terms/" contact = { "name": "API Support", "url": "http://www.example.com/support", "email": "*****@*****.**", } license = { "name": "Apache 2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0.html", } api = responder.API(allowed_hosts=["testserver", ";"]) schema = OpenAPISchema( app=api, title="Web Service", version="1.0", openapi="3.0.2", docs_route="/docs", description=description, terms_of_service=terms_of_service, contact=contact, license=license, ) @schema.schema("Pet") class PetSchema(marshmallow.Schema): name = marshmallow.fields.Str() @api.route("/") def route(req, resp): """A cute furry animal endpoint. --- get: description: Get a random pet responses: 200: description: A pet to be returned schema: $ref: "#/components/schemas/Pet" """ resp.media = PetSchema().dump({"name": "little orange"}) r = api.requests.get("/docs") assert "html" in r.text