Added tests and updated openapi3_parser.py

pull/556/head
Exterminator11 7 months ago
parent ddd938fd64
commit bd70e00f08

@ -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,11 +23,12 @@ class OpenAPI3Parser(BaseParser):
def get_info_from_paths(self, path):
info = ""
for operation in path.operations:
info += (
f"\n{operation.method.value}="
f"{operation.responses[0].description}"
)
if(path.operations):
for operation in path.operations:
info += (
f"\n{operation.method.value}="
f"{operation.responses[0].description}"
)
return info
def parse_file(self, file_path):
@ -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

@ -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

@ -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()
Loading…
Cancel
Save