Allow specifying the application service-specific `user_id` parameter in the `join` test helper. (#11616)

anoa/as_edu_fixes
reivilibre 2022-02-03 13:09:22 +00:00 committed by GitHub
parent 964f5b9324
commit 833247553f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 6 deletions

View File

@ -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.

1
changelog.d/11616.misc Normal file
View File

@ -0,0 +1 @@
Enhance user registration test helpers to make them more useful for tests involving Application Services and devices.

View File

@ -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 {})