def get_client():
    app = FastAPI()
    oauth2_scheme = OAuth2PasswordBearer(tokenUrl="auth/token")

    def token_auth(token: str = Depends(oauth2_scheme)):
        if not token:
            raise HTTPException(401, "Invalid token")

    router = MemoryCRUDRouter(schema=Potato,
                              dependencies=[Depends(token_auth)])
    app.include_router(router)

    return testclient.TestClient(app)
Beispiel #2
0
def test_exclude_all():
    routes = MemoryCRUDRouter.get_routes()
    kwargs = {r + "_route": False for r in routes}
    client = get_client(**kwargs)

    assert client.delete(URL).status_code == 404
    assert client.get(URL).status_code == 404
    assert client.post(URL).status_code == 404
    assert client.put(URL).status_code == 404

    for id_ in [-1, 1, 0, 14]:
        assert client.get(f"{URL}/{id_}").status_code == 404
        assert client.post(f"{URL}/{id_}").status_code == 404
        assert client.put(f"{URL}/{id_}").status_code == 404
        assert client.delete(f"{URL}/{id_}").status_code == 404
Beispiel #3
0
def test_exclude_internal(i):
    keys = random.sample(MemoryCRUDRouter.get_routes(), k=i)
    kwargs = {r + "_route": False for r in keys}

    router = MemoryCRUDRouter(schema=Potato, prefix=URL, **kwargs)
    assert len(router.routes) == len(MemoryCRUDRouter.get_routes()) - i
Beispiel #4
0
def get_client(**kwargs):
    app = FastAPI()
    app.include_router(MemoryCRUDRouter(schema=Potato, prefix=URL, **kwargs))

    return testclient.TestClient(app)
Beispiel #5
0
from fastapi import FastAPI, testclient
from fastapi_crudrouter import MemoryCRUDRouter

from tests import Potato

URL = "/potato"


def get_client(**kwargs):
    app = FastAPI()
    app.include_router(MemoryCRUDRouter(schema=Potato, prefix=URL, **kwargs))

    return testclient.TestClient(app)


@pytest.mark.parametrize("i", list(range(1, len(MemoryCRUDRouter.get_routes()) + 1)))
def test_exclude_internal(i):
    keys = random.sample(MemoryCRUDRouter.get_routes(), k=i)
    kwargs = {r + "_route": False for r in keys}

    router = MemoryCRUDRouter(schema=Potato, prefix=URL, **kwargs)
    assert len(router.routes) == len(MemoryCRUDRouter.get_routes()) - i


def test_exclude_delete_all():
    client = get_client(delete_all_route=False)
    assert client.delete(URL).status_code == 405
    assert client.get(URL).status_code == 200


def test_exclude_all():
from tests import Potato

URL = '/potato'


def get_client(**kwargs):
    app = FastAPI()
    app.include_router(MemoryCRUDRouter(schema=Potato, prefix=URL, **kwargs))

    return testclient.TestClient(app)


@pytest.mark.parametrize('i',
                         list(range(1,
                                    len(MemoryCRUDRouter.get_routes()) + 1)))
def test_exclude_internal(i):
    keys = random.sample(MemoryCRUDRouter.get_routes(), k=i)
    kwargs = {r + '_route': False for r in keys}

    router = MemoryCRUDRouter(schema=Potato, prefix=URL, **kwargs)
    assert len(router.routes) == len(MemoryCRUDRouter.get_routes()) - i


def test_exclude_delete_all():
    client = get_client(delete_all_route=False)
    assert client.delete(URL).status_code == 405
    assert client.get(URL).status_code == 200


def test_exclude_all():
Beispiel #7
0
import os

from pydantic import BaseModel
from fastapi import FastAPI
from fastapi_crudrouter import MemoryCRUDRouter
import uvicorn

API_HOST = os.environ.get("API_HOST", "0.0.0.0")
API_PORT = os.environ.get("API_PORT", 5000)


class Potato(BaseModel):
    id: int
    color: str
    mass: float


app = FastAPI()
app.include_router(MemoryCRUDRouter(schema=Potato))

if __name__ == '__main__':
    uvicorn.run(app, host=API_HOST, port=API_PORT, debug=False)