2929from synapse .util .clock import Clock
3030
3131from tests import unittest
32+ from tests .replication ._base import BaseMultiWorkerStreamTestCase
33+ from tests .server import make_request
3234
3335ONE_HOUR_MS = 3600000
3436ONE_DAY_MS = ONE_HOUR_MS * 24
3537
3638
37- class ReadMarkerTestCase (unittest . HomeserverTestCase ):
39+ class ReadMarkerTestCase (BaseMultiWorkerStreamTestCase ):
3840 servlets = [
3941 login .register_servlets ,
4042 register .register_servlets ,
@@ -155,12 +157,12 @@ def send_message() -> str:
155157 def test_deleted_device_cannot_set_read_marker_or_send_message (self ) -> None :
156158 """
157159 Test that a deleted device cannot set a read marker or send a message.
160+ This test removes the device on one worker and tries the next requests on another worker.
158161 """
159162 # Register a user and login with a specific device_id
160163 user_id = self .register_user ("testuser" , "password" )
161164 device_id = "TEST_DEVICE_123"
162165 access_token = self .login ("testuser" , "password" , device_id = device_id )
163- print ("access token: " , access_token )
164166
165167 # Create a room
166168 room_id = self .helper .create_room_as (user_id , tok = access_token )
@@ -171,8 +173,24 @@ def test_deleted_device_cannot_set_read_marker_or_send_message(self) -> None:
171173 )
172174 event_id = message_result ["event_id" ]
173175
174- # Delete the device
175- channel = self .make_request (
176+ # Create two workers
177+ worker1 = self .make_worker_hs (
178+ "synapse.app.generic_worker" ,
179+ extra_config = {"worker_name" : "worker1" },
180+ )
181+ worker2 = self .make_worker_hs (
182+ "synapse.app.generic_worker" ,
183+ extra_config = {"worker_name" : "worker2" },
184+ )
185+
186+ # Get the sites for the workers
187+ worker1_site = self ._hs_to_site [worker1 ]
188+ worker2_site = self ._hs_to_site [worker2 ]
189+
190+ # Delete the device on worker1
191+ channel = make_request (
192+ self .reactor ,
193+ worker1_site ,
176194 "DELETE" ,
177195 f"devices/{ device_id } " ,
178196 access_token = access_token ,
@@ -181,7 +199,9 @@ def test_deleted_device_cannot_set_read_marker_or_send_message(self) -> None:
181199 # If UI auth is required, provide it
182200 if channel .code == 401 :
183201 session = channel .json_body ["session" ]
184- channel = self .make_request (
202+ channel = make_request (
203+ self .reactor ,
204+ worker1_site ,
185205 "DELETE" ,
186206 f"devices/{ device_id } " ,
187207 access_token = access_token ,
@@ -197,8 +217,10 @@ def test_deleted_device_cannot_set_read_marker_or_send_message(self) -> None:
197217
198218 self .assertEqual (channel .code , 200 , channel .result )
199219
200- # Try to set a read marker with the deleted device's token
201- channel = self .make_request (
220+ # Try to set a read marker with the deleted device's token on worker2
221+ channel = make_request (
222+ self .reactor ,
223+ worker2_site ,
202224 "POST" ,
203225 f"/rooms/{ room_id } /read_markers" ,
204226 content = {
@@ -210,8 +232,10 @@ def test_deleted_device_cannot_set_read_marker_or_send_message(self) -> None:
210232 self .assertEqual (channel .code , 401 , channel .result )
211233 self .assertEqual (channel .json_body ["errcode" ], "M_UNKNOWN_TOKEN" )
212234
213- # Try to send a message with the deleted device's token
214- channel = self .make_request (
235+ # Try to send a message with the deleted device's token on worker2
236+ channel = make_request (
237+ self .reactor ,
238+ worker2_site ,
215239 "PUT" ,
216240 f"/rooms/{ room_id } /send/m.room.message/test_msg" ,
217241 content = {
0 commit comments