Skip to content

Commit 0048708

Browse files
refactor fixture users
1 parent 73e37ff commit 0048708

6 files changed

Lines changed: 40 additions & 20 deletions

File tree

newsfragments/626.internal.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Refactor test users in integration tests.

tests/integration/fixtures/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from .data import ESSData, generated_data
88
from .helm import helm_prerequisites, ingress_ready, matrix_stack, secrets_generated
99
from .matrix_tools import build_matrix_tools, loaded_matrix_tools
10-
from .users import users
10+
from .users import User, users
1111

1212
__all__ = [
1313
"build_matrix_tools",
@@ -28,5 +28,6 @@
2828
"root_ca",
2929
"secrets_generated",
3030
"ssl_context",
31+
"User",
3132
"users",
3233
]

tests/integration/fixtures/users.py

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,48 @@
33
# SPDX-License-Identifier: AGPL-3.0-only
44

55
import asyncio
6+
from collections.abc import Iterable
7+
from dataclasses import dataclass, field
68

79
import pytest
810

9-
from ..lib.matrix_authentication_service import create_mas_user, get_client_token
11+
from ..lib.matrix_authentication_service import (
12+
create_mas_user,
13+
get_client_token,
14+
)
1015
from ..lib.synapse import create_synapse_user
1116
from ..lib.utils import value_file_has
1217
from .data import ESSData
1318

1419

15-
@pytest.fixture(scope="session")
20+
@dataclass
21+
class User:
22+
name: str
23+
admin: bool = field(default=False)
24+
access_token: str | None = field(default=None)
25+
26+
27+
@pytest.fixture
1628
async def users(
1729
request, pytestconfig, matrix_stack, secrets_generated, generated_data: ESSData, ssl_context, ingress_ready
1830
):
1931
await ingress_ready("synapse")
2032
if value_file_has("matrixAuthenticationService.enabled", True):
2133
await ingress_ready("matrix-authentication-service")
2234

35+
users = request.param
36+
assert isinstance(users, Iterable)
37+
2338
wait_for_users = []
2439
if value_file_has("matrixAuthenticationService.enabled", True):
2540
admin_token = await get_client_token(f"mas.{generated_data.server_name}", generated_data, ssl_context)
26-
for user in request.param:
41+
for user in users:
2742
wait_for_users.append(
2843
create_mas_user(
2944
f"mas.{generated_data.server_name}",
30-
user,
45+
user.name,
3146
generated_data.secrets_random,
32-
False,
47+
user.admin,
3348
admin_token,
3449
ssl_context,
3550
pytestconfig,
@@ -41,12 +56,15 @@ async def users(
4156
wait_for_users.append(
4257
create_synapse_user(
4358
f"synapse.{generated_data.server_name}",
44-
user,
59+
user.name,
4560
generated_data.secrets_random,
46-
False,
61+
user.admin,
4762
synapse_registration_shared_secret,
4863
ssl_context,
4964
pytestconfig,
5065
)
5166
)
52-
return await asyncio.gather(*wait_for_users)
67+
tokens = await asyncio.gather(*wait_for_users)
68+
for i, user in enumerate(users):
69+
user.token = tokens[i]
70+
return users

tests/integration/test_element_call.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@
44

55
import pytest
66

7-
from .fixtures import ESSData
7+
from .fixtures import ESSData, User
88
from .lib.utils import aiohttp_post_json, value_file_has
99

1010

1111
@pytest.mark.skipif(value_file_has("matrixRTC.enabled", False), reason="Matrix RTC not deployed")
1212
@pytest.mark.skipif(value_file_has("synapse.enabled", False), reason="Synapse not deployed")
1313
@pytest.mark.skipif(value_file_has("wellKnownDelegation.enabled", False), reason="Well-Known Delegation not deployed")
14-
@pytest.mark.parametrize("users", [("matrix-rtc-user",)], indirect=True)
14+
@pytest.mark.parametrize("users", [(User(name="matrix-rtc-user"),)], indirect=True)
1515
@pytest.mark.asyncio_cooperative
1616
async def test_element_call_livekit_jwt(ingress_ready, users, generated_data: ESSData, ssl_context):
1717
await ingress_ready("synapse")
18-
access_token = users[0]
18+
access_token = users[0].access_token
1919

2020
openid_token = await aiohttp_post_json(
2121
f"https://synapse.{generated_data.server_name}/_matrix/client/v3/user/@matrix-rtc-user:{generated_data.server_name}/openid/request_token",

tests/integration/test_syn2mas.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import pytest
99
from lightkube import AsyncClient
1010

11-
from .fixtures import ESSData
11+
from .fixtures import ESSData, User
1212
from .fixtures.users import create_mas_user, get_client_token
1313
from .lib.helpers import deploy_with_values_patch, get_deployment_marker
1414
from .lib.utils import aiohttp_get_json, aiohttp_post_json, value_file_has
@@ -21,7 +21,7 @@
2121
or value_file_has("matrixAuthenticationService.syn2mas.enabled", False),
2222
reason="Syn2Mas not deployed or the tested chart version does not support syn2mas",
2323
)
24-
@pytest.mark.parametrize("users", [("syn2mas-user",)], indirect=True)
24+
@pytest.mark.parametrize("users", [(User(name="syn2mas-user"),)], indirect=True)
2525
@pytest.mark.asyncio_cooperative
2626
async def test_run_syn2mas_upgrade(
2727
helm_client: pyhelm3.Client,
@@ -32,7 +32,7 @@ async def test_run_syn2mas_upgrade(
3232
generated_data: ESSData,
3333
pytestconfig,
3434
):
35-
access_token = users[0]
35+
access_token = users[0].access_token
3636
await ingress_ready("synapse")
3737
assert await get_deployment_marker(kube_client, generated_data, "MATRIX_STACK_MSC3861") == "legacy_auth"
3838
# After the base chart is setup, we enable MAS to run the syn2mas dry run job

tests/integration/test_synapse.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import pyhelm3
99
import pytest
1010

11-
from .fixtures import ESSData
11+
from .fixtures import ESSData, User
1212
from .lib.helpers import deploy_with_values_patch, get_deployment_marker
1313
from .lib.synapse import assert_downloaded_content, download_media, upload_media
1414
from .lib.utils import KubeCtl, aiohttp_client, aiohttp_get_json, aiohttp_post_json, value_file_has
@@ -33,10 +33,10 @@ async def test_synapse_can_access_client_api(
3333

3434

3535
@pytest.mark.skipif(value_file_has("synapse.enabled", False), reason="Synapse not deployed")
36-
@pytest.mark.parametrize("users", [("sliding-sync-user",)], indirect=True)
36+
@pytest.mark.parametrize("users", [(User(name="sliding-sync-user"),)], indirect=True)
3737
@pytest.mark.asyncio_cooperative
3838
async def test_simplified_sliding_sync_syncs(ssl_context, users, generated_data: ESSData):
39-
access_token = users[0]
39+
access_token = users[0].access_token
4040

4141
sync_result = await aiohttp_post_json(
4242
f"https://synapse.{generated_data.server_name}/_matrix/client/unstable/org.matrix.simplified_msc3575/sync",
@@ -49,15 +49,15 @@ async def test_simplified_sliding_sync_syncs(ssl_context, users, generated_data:
4949

5050

5151
@pytest.mark.skipif(value_file_has("synapse.enabled", False), reason="Synapse not deployed")
52-
@pytest.mark.parametrize("users", [("media-upload-unauth",)], indirect=True)
52+
@pytest.mark.parametrize("users", [(User(name="media-upload-unauth"),)], indirect=True)
5353
@pytest.mark.asyncio_cooperative
5454
async def test_synapse_media_upload_fetch_authenticated(
5555
cluster,
5656
ssl_context,
5757
users,
5858
generated_data: ESSData,
5959
):
60-
user_access_token = users[0]
60+
user_access_token = users[0].access_token
6161

6262
filepath = Path(__file__).parent.resolve() / Path("artifacts/files/minimal.png")
6363
with open(filepath, "rb") as file:

0 commit comments

Comments
 (0)