mirror of
https://github.com/arc53/DocsGPT.git
synced 2025-11-29 08:33:20 +00:00
Added tests and updated openapi3_parser.py
This commit is contained in:
@@ -2,7 +2,10 @@ from urllib.parse import urlparse
|
||||
|
||||
from openapi_parser import parse
|
||||
|
||||
from base_parser import BaseParser
|
||||
try:
|
||||
from scripts.parser.file.base_parser import BaseParser
|
||||
except:
|
||||
from base_parser import BaseParser
|
||||
|
||||
|
||||
class OpenAPI3Parser(BaseParser):
|
||||
@@ -20,6 +23,7 @@ class OpenAPI3Parser(BaseParser):
|
||||
|
||||
def get_info_from_paths(self, path):
|
||||
info = ""
|
||||
if(path.operations):
|
||||
for operation in path.operations:
|
||||
info += (
|
||||
f"\n{operation.method.value}="
|
||||
@@ -42,5 +46,9 @@ class OpenAPI3Parser(BaseParser):
|
||||
f"parameters: {path.parameters}\nmethods: {info}\n"
|
||||
)
|
||||
i += 1
|
||||
if(i==2):
|
||||
with open("reff.txt", "w") as f:
|
||||
f.write(str(path))
|
||||
with open("results.txt", "w") as f:
|
||||
f.write(results)
|
||||
return results
|
||||
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
|
||||
29
tests/test_openapi3parser.py
Normal file
29
tests/test_openapi3parser.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import pytest
|
||||
|
||||
from scripts.parser.file.openapi3_parser import OpenAPI3Parser
|
||||
from openapi_parser import parse
|
||||
|
||||
|
||||
@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_real = "Base URL:http://petstore.swagger.io,https://api.example.com\nPath1: /pets\ndescription: None\nparameters: []\nmethods: \nget=A paged array of pets\npost=Null response\nPath2: /pets/{petId}\ndescription: None\nparameters: []\nmethods: \nget=Expected response to a valid request\n"
|
||||
openapi_parser_test = OpenAPI3Parser()
|
||||
results=openapi_parser_test.parse_file(file_path)
|
||||
assert results == results_real
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pytest.main()
|
||||
Reference in New Issue
Block a user