-
Notifications
You must be signed in to change notification settings - Fork 52
Expand file tree
/
Copy pathclient_fixture.py
More file actions
158 lines (108 loc) · 4.07 KB
/
client_fixture.py
File metadata and controls
158 lines (108 loc) · 4.07 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
from typing import Dict, Generator, Iterator
import pytest
from fastapi.testclient import TestClient
from sqlalchemy.orm import Session
from app import main
from app.database.models import Base, User
from app.routers import (
agenda,
audio,
categories,
cursor,
dayview,
event,
friendview,
google_connect,
meds,
notification,
profile,
weekview,
weight,
)
from app.routers.salary import routes as salary
from tests import security_testing_routes
from tests.conftest import get_test_db, test_engine
LOGIN_DATA_TYPE = Dict[str, str]
main.app.include_router(security_testing_routes.router)
def login_client(client: TestClient, data: LOGIN_DATA_TYPE) -> None:
client.post(client.app.url_path_for("login"), data=data)
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 notification_test_client():
yield from create_test_client(notification.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 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 cursor_test_client() -> Iterator[TestClient]:
yield from create_test_client(cursor.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)
@pytest.fixture(scope="session")
def dayview_test_client() -> Iterator[TestClient]:
yield from create_test_client(dayview.get_db)
@pytest.fixture(scope="session")
def weekview_test_client() -> Iterator[TestClient]:
yield from create_test_client(weekview.get_db)