diracx-testing 0.0.1a15__py3-none-any.whl → 0.0.1a16__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
+ # TODO: this needs a lot of documentation, in particular what will matter for users
4
+ # are the enabled_dependencies markers
3
5
  import asyncio
4
6
  import contextlib
5
7
  import os
@@ -16,8 +18,9 @@ import pytest
16
18
  import requests
17
19
 
18
20
  if TYPE_CHECKING:
19
- from diracx.routers.auth.utils import AuthSettings
20
21
  from diracx.routers.job_manager.sandboxes import SandboxStoreSettings
22
+ from diracx.routers.utils.users import AuthorizedUserInfo, AuthSettings
23
+
21
24
 
22
25
  # to get a string like this run:
23
26
  # openssl rand -hex 32
@@ -77,7 +80,7 @@ def fernet_key() -> str:
77
80
 
78
81
  @pytest.fixture(scope="session")
79
82
  def test_auth_settings(rsa_private_key_pem, fernet_key) -> AuthSettings:
80
- from diracx.routers.auth.utils import AuthSettings
83
+ from diracx.routers.utils.users import AuthSettings
81
84
 
82
85
  yield AuthSettings(
83
86
  token_key=rsa_private_key_pem,
@@ -132,6 +135,7 @@ class UnavailableDependency:
132
135
 
133
136
 
134
137
  class ClientFactory:
138
+
135
139
  def __init__(
136
140
  self,
137
141
  tmp_path_factory,
@@ -144,6 +148,21 @@ class ClientFactory:
144
148
  from diracx.core.settings import ServiceSettingsBase
145
149
  from diracx.db.sql.utils import BaseSQLDB
146
150
  from diracx.routers import create_app_inner
151
+ from diracx.routers.access_policies import BaseAccessPolicy
152
+
153
+ class AlwaysAllowAccessPolicy(BaseAccessPolicy):
154
+ """
155
+ Dummy access policy
156
+ """
157
+
158
+ async def policy(
159
+ policy_name: str, user_info: AuthorizedUserInfo, /, **kwargs
160
+ ):
161
+ pass
162
+
163
+ def enrich_tokens(access_payload: dict, refresh_payload: dict):
164
+
165
+ return {"PolicySpecific": "OpenAccessForTest"}, {}
147
166
 
148
167
  enabled_systems = {
149
168
  e.name for e in select_from_extension(group="diracx.services")
@@ -156,6 +175,12 @@ class ClientFactory:
156
175
 
157
176
  self.test_auth_settings = test_auth_settings
158
177
 
178
+ all_access_policies = {
179
+ e.name: [AlwaysAllowAccessPolicy]
180
+ + BaseAccessPolicy.available_implementations(e.name)
181
+ for e in select_from_extension(group="diracx.access_policies")
182
+ }
183
+
159
184
  self.app = create_app_inner(
160
185
  enabled_systems=enabled_systems,
161
186
  all_service_settings=[
@@ -169,13 +194,15 @@ class ClientFactory:
169
194
  config_source=ConfigSource.create_from_url(
170
195
  backend_url=f"git+file://{with_config_repo}"
171
196
  ),
197
+ all_access_policies=all_access_policies,
172
198
  )
173
199
 
174
200
  self.all_dependency_overrides = self.app.dependency_overrides.copy()
175
201
  self.app.dependency_overrides = {}
176
202
  for obj in self.all_dependency_overrides:
177
203
  assert issubclass(
178
- obj.__self__, (ServiceSettingsBase, BaseSQLDB, ConfigSource)
204
+ obj.__self__,
205
+ (ServiceSettingsBase, BaseSQLDB, ConfigSource, BaseAccessPolicy),
179
206
  ), obj
180
207
 
181
208
  self.all_lifetime_functions = self.app.lifetime_functions[:]
@@ -190,9 +217,10 @@ class ClientFactory:
190
217
  assert (
191
218
  self.app.dependency_overrides == {} and self.app.lifetime_functions == []
192
219
  ), "configure cannot be nested"
193
-
194
220
  for k, v in self.all_dependency_overrides.items():
221
+
195
222
  class_name = k.__self__.__name__
223
+
196
224
  if class_name in enabled_dependencies:
197
225
  self.app.dependency_overrides[k] = v
198
226
  else:
@@ -317,7 +345,10 @@ class ClientFactory:
317
345
 
318
346
  @pytest.fixture(scope="session")
319
347
  def session_client_factory(
320
- test_auth_settings, test_sandbox_settings, with_config_repo, tmp_path_factory
348
+ test_auth_settings,
349
+ test_sandbox_settings,
350
+ with_config_repo,
351
+ tmp_path_factory,
321
352
  ):
322
353
  """
323
354
  TODO
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: diracx-testing
3
- Version: 0.0.1a15
3
+ Version: 0.0.1a16
4
4
  Summary: TODO
5
5
  License: GPL-3.0-only
6
6
  Classifier: Intended Audience :: Science/Research
@@ -0,0 +1,6 @@
1
+ diracx/testing/__init__.py,sha256=xsBwJ8Ta1KH7bEBlWNhHK1u2U3KurwbrKcVCMoJXV6E,20129
2
+ diracx/testing/osdb.py,sha256=-EFZNyEY07Zq7HdQGZxS3H808Y94aaUhmo0x-Y8xo3Q,3592
3
+ diracx_testing-0.0.1a16.dist-info/METADATA,sha256=Vxwr5eBOFz6liF95u8rVpoNABAv-fR11nxL2YKxB7QM,615
4
+ diracx_testing-0.0.1a16.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
5
+ diracx_testing-0.0.1a16.dist-info/top_level.txt,sha256=vJx10tdRlBX3rF2Psgk5jlwVGZNcL3m_7iQWwgPXt-U,7
6
+ diracx_testing-0.0.1a16.dist-info/RECORD,,
@@ -1,6 +0,0 @@
1
- diracx/testing/__init__.py,sha256=1g2BhfkyZAmI9Gbbkmgdm_zHSGbA8AAaBn_u8Ojrvws,19172
2
- diracx/testing/osdb.py,sha256=-EFZNyEY07Zq7HdQGZxS3H808Y94aaUhmo0x-Y8xo3Q,3592
3
- diracx_testing-0.0.1a15.dist-info/METADATA,sha256=yVeF8wdqv3BjjIQBJdg-PMSJPMGbDfR5e3Wq0AtW0ks,615
4
- diracx_testing-0.0.1a15.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
5
- diracx_testing-0.0.1a15.dist-info/top_level.txt,sha256=vJx10tdRlBX3rF2Psgk5jlwVGZNcL3m_7iQWwgPXt-U,7
6
- diracx_testing-0.0.1a15.dist-info/RECORD,,