| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | from http import HTTPStatusimport pytestfrom clean_python import ctxfrom clean_python import Tenantfrom clean_python.api_client import ApiExceptionfrom clean_python.api_client import SyncApiProvider@pytest.fixturedef provider(fastapi_example_app) -> SyncApiProvider:    ctx.tenant = Tenant(id=2, name="")    yield SyncApiProvider(fastapi_example_app + "/", lambda a, b: "token")    ctx.tenant = Nonedef test_request_params(provider: SyncApiProvider):    response = provider.request("GET", "v1/books", params={"limit": 10, "offset": 2})    assert isinstance(response, dict)    assert response["limit"] == 10    assert response["offset"] == 2def test_request_json_body(provider: SyncApiProvider):    response = provider.request(        "POST", "v1/books", json={"title": "test_body", "author": {"name": "foo"}}    )    assert isinstance(response, dict)    assert response["title"] == "test_body"    assert response["author"] == {"name": "foo"}def test_request_form_body(provider: SyncApiProvider):    response = provider.request("POST", "v1/form", fields={"name": "foo"})    assert isinstance(response, dict)    assert response["name"] == "foo"def test_request_form_file(provider: SyncApiProvider):    response = provider.request("POST", "v1/file", fields={"file": ("x.txt", b"foo")})    assert isinstance(response, dict)    assert response["x.txt"] == "foo"@pytest.fixturedef book(provider: SyncApiProvider):    return provider.request(        "POST", "v1/books", json={"title": "fixture", "author": {"name": "foo"}}    )def test_no_content(provider: SyncApiProvider, book):    response = provider.request("DELETE", f"v1/books/{book['id']}")    assert response is Nonedef test_not_found(provider: SyncApiProvider):    with pytest.raises(ApiException) as e:        provider.request("GET", "v1/book")    assert e.value.status is HTTPStatus.NOT_FOUND    assert e.value.args[0] == {"detail": "Not Found"}def test_bad_request(provider: SyncApiProvider):    with pytest.raises(ApiException) as e:        provider.request("GET", "v1/books", params={"limit": "foo"})    assert e.value.status is HTTPStatus.BAD_REQUEST    assert e.value.args[0]["detail"][0]["loc"] == ["query", "limit"]def test_no_json_response(provider: SyncApiProvider):    with pytest.raises(ApiException) as e:        provider.request("GET", "v1/text")    assert e.value.args[0] == "Unexpected content type 'text/plain; charset=utf-8'"def test_urlencode(provider: SyncApiProvider):    response = provider.request("PUT", "v1/urlencode/x?")    assert isinstance(response, dict)    assert response["name"] == "x?"
 |