mirror of
https://github.com/arc53/DocsGPT.git
synced 2026-03-02 08:12:06 +00:00
Merge pull request #556 from Exterminator11/openapi3_parser
Parser for OpenAPI3(Swagger)
This commit is contained in:
116
tests/test_openapi3.yaml
Normal file
116
tests/test_openapi3.yaml
Normal file
@@ -0,0 +1,116 @@
|
||||
openapi: "3.0.0"
|
||||
info:
|
||||
version: 1.0.0
|
||||
title: Swagger Petstore
|
||||
license:
|
||||
name: MIT
|
||||
servers:
|
||||
- url: http://petstore.swagger.io/v1
|
||||
- url: https://api.example.com/v1/resource
|
||||
- url: https://api.example.com/v1/another/resource
|
||||
- url: https://api.example.com/v1/some/endpoint
|
||||
paths:
|
||||
/pets:
|
||||
get:
|
||||
summary: List all pets
|
||||
operationId: listPets
|
||||
tags:
|
||||
- pets
|
||||
parameters:
|
||||
- name: limit
|
||||
in: query
|
||||
description: How many items to return at one time (max 100)
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
maximum: 100
|
||||
format: int32
|
||||
responses:
|
||||
'200':
|
||||
description: A paged array of pets
|
||||
headers:
|
||||
x-next:
|
||||
description: A link to the next page of responses
|
||||
schema:
|
||||
type: string
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Pets"
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Error"
|
||||
post:
|
||||
summary: Create a pet
|
||||
operationId: createPets
|
||||
tags:
|
||||
- pets
|
||||
responses:
|
||||
'201':
|
||||
description: Null response
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Error"
|
||||
/pets/{petId}:
|
||||
get:
|
||||
summary: Info for a specific pet
|
||||
operationId: showPetById
|
||||
tags:
|
||||
- pets
|
||||
parameters:
|
||||
- name: petId
|
||||
in: path
|
||||
required: true
|
||||
description: The id of the pet to retrieve
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: Expected response to a valid request
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Pet"
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Error"
|
||||
components:
|
||||
schemas:
|
||||
Pet:
|
||||
type: object
|
||||
required:
|
||||
- id
|
||||
- name
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
format: int64
|
||||
name:
|
||||
type: string
|
||||
tag:
|
||||
type: string
|
||||
Pets:
|
||||
type: array
|
||||
maxItems: 100
|
||||
items:
|
||||
$ref: "#/components/schemas/Pet"
|
||||
Error:
|
||||
type: object
|
||||
required:
|
||||
- code
|
||||
- message
|
||||
properties:
|
||||
code:
|
||||
type: integer
|
||||
format: int32
|
||||
message:
|
||||
type: string
|
||||
50
tests/test_openapi3parser.py
Normal file
50
tests/test_openapi3parser.py
Normal file
@@ -0,0 +1,50 @@
|
||||
import pytest
|
||||
from openapi_parser import parse
|
||||
from application.parser.file.openapi3_parser import OpenAPI3Parser
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"urls, expected_base_urls",
|
||||
[
|
||||
(
|
||||
[
|
||||
"http://petstore.swagger.io/v1",
|
||||
"https://api.example.com/v1/resource",
|
||||
"https://api.example.com/v1/another/resource",
|
||||
"https://api.example.com/v1/some/endpoint",
|
||||
],
|
||||
["http://petstore.swagger.io", "https://api.example.com"],
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_get_base_urls(urls, expected_base_urls):
|
||||
assert OpenAPI3Parser().get_base_urls(urls) == expected_base_urls
|
||||
|
||||
|
||||
def test_get_info_from_paths():
|
||||
file_path = "tests/test_openapi3.yaml"
|
||||
data = parse(file_path)
|
||||
path = data.paths[1]
|
||||
assert (
|
||||
OpenAPI3Parser().get_info_from_paths(path)
|
||||
== "\nget=Expected response to a valid request"
|
||||
)
|
||||
|
||||
|
||||
def test_parse_file():
|
||||
file_path = "tests/test_openapi3.yaml"
|
||||
results_expected = (
|
||||
"Base URL:http://petstore.swagger.io,https://api.example.com\nPath1: "
|
||||
+ "/pets\ndescription: None\nparameters: []\nmethods: \n"
|
||||
+ "get=A paged array of pets\npost=Null "
|
||||
+ "response\nPath2: /pets/{petId}\ndescription: None\n"
|
||||
+ "parameters: []\nmethods: "
|
||||
+ "\nget=Expected response to a valid request\n"
|
||||
)
|
||||
openapi_parser_test = OpenAPI3Parser()
|
||||
results = openapi_parser_test.parse_file(file_path)
|
||||
assert results == results_expected
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pytest.main()
|
||||
Reference in New Issue
Block a user