-
Notifications
You must be signed in to change notification settings - Fork 180
Expand file tree
/
Copy pathconftest.py
More file actions
145 lines (98 loc) · 3.23 KB
/
conftest.py
File metadata and controls
145 lines (98 loc) · 3.23 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
import pytest
import pytest_asyncio
from mock import patch
from fastapi import FastAPI
from httpx import AsyncClient, ASGITransport
from models.domain.authentication import User
@pytest.fixture(autouse=True, scope='module')
def no_lifespan_events():
with patch("main.lifespan"):
yield
@pytest.fixture(autouse=True)
def no_auth_token():
""" overrides validating and decoding tokens for all tests"""
with patch('services.aad_authentication.AccessService.__call__', return_value="token"):
with patch('services.aad_authentication.AzureADAuthorization._decode_token', return_value="decoded_token"):
yield
@pytest.fixture(autouse=True, scope="session")
def patch_user_management_enabled():
with patch("core.config.USER_MANAGEMENT_ENABLED", new=True):
yield
def create_test_user() -> User:
return User(
id="user-guid-here",
name="Test User",
email="test@user.com",
roles=[],
roleAssignments=[]
)
def create_admin_user() -> User:
user = create_test_user()
user.roles = ["TREAdmin"]
user.roleAssignments = [("ab123", "ab124")]
return user
def create_non_admin_user() -> User:
user = create_test_user()
user.roles = ["TREUser"]
user.roleAssignments = [("ab123", "ab124")]
return user
def create_workspace_owner_user() -> User:
user = create_test_user()
user.roles = ["WorkspaceOwner"]
return user
def create_workspace_researcher_user() -> User:
user = create_test_user()
user.roles = ["WorkspaceResearcher"]
return user
def create_workspace_airlock_manager_user() -> User:
user = create_test_user()
user.roles = ["AirlockManager"]
return user
def override_get_user():
user = create_test_user()
user.roles = []
user.roleAssignments = [("ab123", "ab124")]
return user
def get_required_roles(endpoint):
dependencies = list(filter(lambda x: hasattr(x.dependency, 'require_one_of_roles'), endpoint.__defaults__))
required_roles = dependencies[0].dependency.require_one_of_roles
return required_roles
@pytest.fixture(scope='module')
def admin_user():
def inner():
return create_admin_user()
return inner
@pytest.fixture(scope='module')
def non_admin_user():
def inner():
return create_non_admin_user()
return inner
@pytest.fixture(scope='module')
def owner_user():
def inner():
return create_workspace_owner_user()
return inner
@pytest.fixture(scope='module')
def researcher_user():
def inner():
return create_workspace_researcher_user()
return inner
@pytest.fixture(scope='module')
def airlock_manager_user():
def inner():
return create_workspace_airlock_manager_user()
return inner
@pytest.fixture(scope='module')
def no_workspace_role_user():
def inner():
user = create_test_user()
return user
return inner
@pytest.fixture(scope='module')
def app() -> FastAPI:
from main import get_application
return get_application()
@pytest_asyncio.fixture
async def client(app: FastAPI) -> AsyncClient:
async with AsyncClient(transport=ASGITransport(app=app), base_url="http://testserver", headers={"Content-Type": "application/json"}) as client:
yield client