| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | from http import HTTPStatusimport pytestfrom fastapi.testclient import TestClientfrom clean_python import InMemoryGatewayfrom clean_python.fastapi import getfrom clean_python.fastapi import Resourcefrom clean_python.fastapi import Servicefrom clean_python.fastapi import vfrom clean_python.oauth2 import OAuth2SPAClientSettingsfrom clean_python.oauth2 import TokenVerifierSettingsclass FooResource(Resource, version=v(1), name="testing"):    @get("/foo")    def testing(self):        return "ok"@pytest.fixturedef app(settings: TokenVerifierSettings):    return Service(FooResource()).create_app(        title="test",        description="testing",        hostname="testserver",        auth=settings,        access_logger_gateway=InMemoryGateway([]),    )@pytest.fixturedef client(app):    return TestClient(app)@pytest.mark.usefixtures("jwk_patched")def test_no_header(app, client: TestClient):    response = client.get(app.url_path_for("v1/testing"))    assert response.status_code == HTTPStatus.UNAUTHORIZED@pytest.mark.usefixtures("jwk_patched")def test_ok(app, client: TestClient, token_generator):    response = client.get(        app.url_path_for("v1/testing"),        headers={"Authorization": "Bearer " + token_generator()},    )    assert response.status_code == HTTPStatus.OK@pytest.fixturedef app2(settings: TokenVerifierSettings):    return Service(FooResource()).create_app(        title="test",        description="testing",        hostname="testserver",        auth=settings,        auth_client=OAuth2SPAClientSettings(            client_id="123",            token_url="https://server/token",            authorization_url="https://server/token",        ),        access_logger_gateway=InMemoryGateway([]),    )@pytest.fixturedef client2(app):    return TestClient(app)@pytest.mark.usefixtures("jwk_patched")def test_no_header2(app2, client2: TestClient):    response = client2.get(app2.url_path_for("v1/testing"))    assert response.status_code == HTTPStatus.UNAUTHORIZED@pytest.mark.usefixtures("jwk_patched")def test_ok2(app2, client2: TestClient, token_generator):    response = client2.get(        app2.url_path_for("v1/testing"),        headers={"Authorization": "Bearer " + token_generator()},    )    assert response.status_code == HTTPStatus.OK
 |