Issues (74)

tests/integrations/test_fastapi.py (3 issues)

1
import pytest
2
from starlette.testclient import TestClient
3
4
from .fastapi_app import app, deps, Inner, ContextLoaded
5
6
7
def test_request_singletons_are_the_same_within_a_request_context():
8
    client = TestClient(app)
9
    response = client.get("/")
10
    data = response.json()
11
    assert data["outer_one"] == data["outer_two"]
12
13
14
def test_request_singletons_are_different_for_new_requests():
15
    client = TestClient(app)
16
    data_one = client.get("/").json()
17
    data_two = client.get("/").json()
18
19
    assert data_one["outer_one"] != data_two["outer_one"]
20
21
22
def test_request_singletons_also_have_request_class():
23
    client = TestClient(app)
24
    data = client.get("/request_injected_request_singleton").json()
25
26
    assert data["data"] == "/request_injected_request_singleton"
27
28
29
def test_deps_can_be_overridden_during_test():
30
    client = TestClient(app)
31
    with deps.override_for_test() as c:
32
        c[Inner] = Inner("test_message")
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable Inner does not seem to be defined.
Loading history...
33
        call_under_test = client.get("/inner").json()
34
    call_after_test = client.get("/inner").json()
35
36
    assert call_under_test["data"] == "test_message"
37
    assert call_after_test["data"] != "test_message"
38
39
40
@pytest.fixture
41
def fixture_fake_deps():
42
    with deps.override_for_test() as test_container:
43
        test_container[Inner] = Inner("fixture_deps")
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable Inner does not seem to be defined.
Loading history...
44
        yield test_container
45
46
47
def test_overriding_with_fixtures_works(fixture_fake_deps):
48
    client = TestClient(app)
49
    resp = client.get("/inner").json()
50
    assert resp["data"] == "fixture_deps"
51
52
53
def test_deps_can_be_overridden_during_test_multiple_times():
54
    client = TestClient(app)
55
    with deps.override_for_test() as c1:
56
        with deps.override_for_test() as c2:
57
            c1[Inner] = Inner("first_level")
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable Inner does not seem to be defined.
Loading history...
58
            c2[Inner] = Inner("second_level")
59
            second = client.get("/inner").json()
60
        first = client.get("/inner").json()
61
    outer = client.get("/inner").json()
62
63
    assert outer["data"] is None
64
    assert first["data"] == "first_level"
65
    assert second["data"] == "second_level"
66
67
68
def test_deps_can_use_contexts_for_cleanup_tasks():
69
    ContextLoaded.cleaned_up = False
70
    client = TestClient(app)
71
    response = client.get("with_some_context")
72
    assert response.json() == {"cleaned_up": "False"}
73
    assert ContextLoaded.cleaned_up
74