major: added initial version
This commit is contained in:
0
app/__init__.py
Normal file
0
app/__init__.py
Normal file
55
app/main.py
Normal file
55
app/main.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import os
|
||||
from fastapi import APIRouter
|
||||
from fastapi import Response
|
||||
from creyPY.fastapi.app import generate_unique_id
|
||||
from dotenv import load_dotenv
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
load_dotenv()
|
||||
|
||||
ENV = os.getenv("ENV", "local").lower()
|
||||
VERSION = os.getenv("VERSION", "Alpha")
|
||||
|
||||
# App Setup
|
||||
app = FastAPI(
|
||||
title="ServerCrow Pong API",
|
||||
description="A really simple FastAPI service to return the request with code and content specified in the parameters. No logging, no nothing.",
|
||||
version=VERSION,
|
||||
docs_url="/",
|
||||
redoc_url=None,
|
||||
debug=ENV != "prod",
|
||||
swagger_ui_parameters={
|
||||
"docExpansion": "list",
|
||||
"displayOperationId": True,
|
||||
"defaultModelsExpandDepth": 5,
|
||||
"defaultModelExpandDepth": 5,
|
||||
"filter": True,
|
||||
"displayRequestDuration": True,
|
||||
"defaultModelRendering": "model",
|
||||
"persistAuthorization": True,
|
||||
},
|
||||
generate_unique_id_function=generate_unique_id,
|
||||
)
|
||||
|
||||
# CORS Setup
|
||||
origins = ["http://localhost:5173", "https://pong.servercrow.com"]
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=origins,
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
# App Routers
|
||||
router = APIRouter(prefix="/pong", tags=["public"])
|
||||
|
||||
|
||||
@router.get("/", operation_id="get_pong")
|
||||
async def get_status(code: int, response_text: str = "OK") -> Response:
|
||||
"""Get the ping to your pong. Returns the code that is specified and a response if provided."""
|
||||
return Response(status_code=code, content=response_text)
|
||||
|
||||
|
||||
app.include_router(router)
|
||||
42
app/test_main.py
Normal file
42
app/test_main.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from creyPY.fastapi.testing import GenericClient
|
||||
from .main import app
|
||||
|
||||
|
||||
class TestAPI:
|
||||
def setup_class(self):
|
||||
self.c = GenericClient(app)
|
||||
|
||||
def test_swagger_gen(self):
|
||||
re = self.c.get("/openapi.json")
|
||||
assert re["info"]["title"] == "ServerCrow Pong API"
|
||||
|
||||
def test_health_check(self):
|
||||
self.c.get("/", parse_json=False)
|
||||
|
||||
def test_get_pong(self):
|
||||
re = self.c.get("/pong/?code=200&response_text=OK", parse_json=False)
|
||||
assert re == b"OK"
|
||||
|
||||
def test_get_pong_404(self):
|
||||
re = self.c.get("/pong/?code=404&response_text=Not Found", parse_json=False, r_code=404)
|
||||
assert re == b"Not Found"
|
||||
|
||||
def test_get_pong_503(self):
|
||||
re = self.c.get(
|
||||
"/pong/?code=503&response_text=Service Unavailable", parse_json=False, r_code=503
|
||||
)
|
||||
assert re == b"Service Unavailable"
|
||||
|
||||
def test_get_pong_500(self):
|
||||
re = self.c.get(
|
||||
"/pong/?code=500&response_text=Internal Server Error", parse_json=False, r_code=500
|
||||
)
|
||||
assert re == b"Internal Server Error"
|
||||
|
||||
def test_get_pong_400(self):
|
||||
re = self.c.get("/pong/?code=400&response_text=Bad Request", parse_json=False, r_code=400)
|
||||
assert re == b"Bad Request"
|
||||
|
||||
def test_get_pong_401(self):
|
||||
re = self.c.get("/pong/?code=401&response_text=Unauthorized", parse_json=False, r_code=401)
|
||||
assert re == b"Unauthorized"
|
||||
Reference in New Issue
Block a user