Allow specifying the application service-specific `user_id` parameter in the `join` test helper. (#11616)
parent
964f5b9324
commit
833247553f
|
@ -1 +1 @@
|
||||||
Expose the registered device ID from the `register_appservice_user` test helper.
|
Enhance user registration test helpers to make them more useful for tests involving Application Services and devices.
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Enhance user registration test helpers to make them more useful for tests involving Application Services and devices.
|
|
@ -31,6 +31,7 @@ from typing import (
|
||||||
overload,
|
overload,
|
||||||
)
|
)
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
from typing_extensions import Literal
|
from typing_extensions import Literal
|
||||||
|
@ -147,12 +148,20 @@ class RestHelper:
|
||||||
expect_code=expect_code,
|
expect_code=expect_code,
|
||||||
)
|
)
|
||||||
|
|
||||||
def join(self, room=None, user=None, expect_code=200, tok=None):
|
def join(
|
||||||
|
self,
|
||||||
|
room: str,
|
||||||
|
user: Optional[str] = None,
|
||||||
|
expect_code: int = 200,
|
||||||
|
tok: Optional[str] = None,
|
||||||
|
appservice_user_id: Optional[str] = None,
|
||||||
|
) -> None:
|
||||||
self.change_membership(
|
self.change_membership(
|
||||||
room=room,
|
room=room,
|
||||||
src=user,
|
src=user,
|
||||||
targ=user,
|
targ=user,
|
||||||
tok=tok,
|
tok=tok,
|
||||||
|
appservice_user_id=appservice_user_id,
|
||||||
membership=Membership.JOIN,
|
membership=Membership.JOIN,
|
||||||
expect_code=expect_code,
|
expect_code=expect_code,
|
||||||
)
|
)
|
||||||
|
@ -209,11 +218,12 @@ class RestHelper:
|
||||||
def change_membership(
|
def change_membership(
|
||||||
self,
|
self,
|
||||||
room: str,
|
room: str,
|
||||||
src: str,
|
src: Optional[str],
|
||||||
targ: str,
|
targ: Optional[str],
|
||||||
membership: str,
|
membership: str,
|
||||||
extra_data: Optional[dict] = None,
|
extra_data: Optional[dict] = None,
|
||||||
tok: Optional[str] = None,
|
tok: Optional[str] = None,
|
||||||
|
appservice_user_id: Optional[str] = None,
|
||||||
expect_code: int = 200,
|
expect_code: int = 200,
|
||||||
expect_errcode: Optional[str] = None,
|
expect_errcode: Optional[str] = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
@ -227,15 +237,26 @@ class RestHelper:
|
||||||
membership: The type of membership event
|
membership: The type of membership event
|
||||||
extra_data: Extra information to include in the content of the event
|
extra_data: Extra information to include in the content of the event
|
||||||
tok: The user access token to use
|
tok: The user access token to use
|
||||||
|
appservice_user_id: The `user_id` URL parameter to pass.
|
||||||
|
This allows driving an application service user
|
||||||
|
using an application service access token in `tok`.
|
||||||
expect_code: The expected HTTP response code
|
expect_code: The expected HTTP response code
|
||||||
expect_errcode: The expected Matrix error code
|
expect_errcode: The expected Matrix error code
|
||||||
"""
|
"""
|
||||||
temp_id = self.auth_user_id
|
temp_id = self.auth_user_id
|
||||||
self.auth_user_id = src
|
self.auth_user_id = src
|
||||||
|
|
||||||
path = "/_matrix/client/r0/rooms/%s/state/m.room.member/%s" % (room, targ)
|
path = f"/_matrix/client/r0/rooms/{room}/state/m.room.member/{targ}"
|
||||||
|
url_params: Dict[str, str] = {}
|
||||||
|
|
||||||
if tok:
|
if tok:
|
||||||
path = path + "?access_token=%s" % tok
|
url_params["access_token"] = tok
|
||||||
|
|
||||||
|
if appservice_user_id:
|
||||||
|
url_params["user_id"] = appservice_user_id
|
||||||
|
|
||||||
|
if url_params:
|
||||||
|
path += "?" + urlencode(url_params)
|
||||||
|
|
||||||
data = {"membership": membership}
|
data = {"membership": membership}
|
||||||
data.update(extra_data or {})
|
data.update(extra_data or {})
|
||||||
|
|
Loading…
Reference in New Issue