-
Notifications
You must be signed in to change notification settings - Fork 52
Expand file tree
/
Copy pathclient_fixture.py
More file actions
139 lines (96 loc) · 3.63 KB
/
Copy pathclient_fixture.py
File metadata and controls
139 lines (96 loc) · 3.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
from typing import Generator, Iterator
from fastapi.testclient import TestClient
import pytest
from sqlalchemy.orm import Session
from app import main
from app.database.models import Base, User
from app.routers import (
agenda,
audio,
categories,
event,
friendview,
google_connect,
invitation,
meds,
profile,
weight,
)
from app.routers.salary import routes as salary
from tests import security_testing_routes
from tests.conftest import get_test_db, test_engine
main.app.include_router(security_testing_routes.router)
def get_test_placeholder_user() -> User:
return User(
username="fake_user",
email="fake@mail.fake",
password="123456fake",
full_name="FakeName",
language_id=1,
telegram_id="666666",
)
@pytest.fixture(scope="session")
def client() -> TestClient:
return TestClient(main.app)
def create_test_client(get_db_function) -> Generator[Session, None, None]:
Base.metadata.create_all(bind=test_engine)
main.app.dependency_overrides[get_db_function] = get_test_db
with TestClient(main.app) as client:
yield client
main.app.dependency_overrides = {}
Base.metadata.drop_all(bind=test_engine)
@pytest.fixture(scope="session")
def agenda_test_client() -> Generator[TestClient, None, None]:
yield from create_test_client(agenda.get_db)
@pytest.fixture(scope="session")
def friendview_test_client() -> Generator[TestClient, None, None]:
yield from create_test_client(friendview.get_db)
@pytest.fixture(scope="session")
def weight_test_client() -> Generator[TestClient, None, None]:
yield from create_test_client(weight.get_db)
@pytest.fixture(scope="session")
def event_test_client() -> Generator[TestClient, None, None]:
yield from create_test_client(event.get_db)
@pytest.fixture(scope="session")
def home_test_client() -> Generator[TestClient, None, None]:
yield from create_test_client(main.get_db)
@pytest.fixture(scope="session")
def invitation_test_client() -> Generator[TestClient, None, None]:
yield from create_test_client(invitation.get_db)
@pytest.fixture(scope="session")
def categories_test_client() -> Generator[TestClient, None, None]:
yield from create_test_client(categories.get_db)
@pytest.fixture(scope="session")
def profile_test_client() -> Generator[Session, None, None]:
Base.metadata.create_all(bind=test_engine)
main.app.dependency_overrides[profile.get_db] = get_test_db
main.app.dependency_overrides[
profile.get_placeholder_user
] = get_test_placeholder_user
with TestClient(main.app) as client:
yield client
main.app.dependency_overrides = {}
Base.metadata.drop_all(bind=test_engine)
@pytest.fixture(scope="session")
def quotes_test_client() -> Iterator[TestClient]:
yield from create_test_client(main.get_db)
@pytest.fixture(scope="session")
def audio_test_client() -> Iterator[TestClient]:
yield from create_test_client(audio.get_db)
@pytest.fixture(scope="session")
def security_test_client():
yield from create_test_client(event.get_db)
@pytest.fixture(scope="session")
def salary_test_client() -> Iterator[TestClient]:
yield from create_test_client(salary.get_db)
@pytest.fixture(scope="session")
def meds_test_client() -> Iterator[TestClient]:
yield from create_test_client(meds.get_db)
@pytest.fixture(scope="session")
def google_connect_test_client():
Base.metadata.create_all(bind=test_engine)
main.app.dependency_overrides[google_connect.get_db] = get_test_db
with TestClient(main.app) as client:
yield client
main.app.dependency_overrides = {}
Base.metadata.drop_all(bind=test_engine)