mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-07 23:55:05 -04:00
Fix an invalid comparison of UserPresenceState
to str
(#14393)
This commit is contained in:
parent
d8cc86eff4
commit
618e4ab81b
5 changed files with 46 additions and 8 deletions
|
@ -15,6 +15,7 @@
|
|||
from typing import Optional
|
||||
from unittest.mock import Mock, call
|
||||
|
||||
from parameterized import parameterized
|
||||
from signedjson.key import generate_signing_key
|
||||
|
||||
from synapse.api.constants import EventTypes, Membership, PresenceState
|
||||
|
@ -37,6 +38,7 @@ from synapse.rest.client import room
|
|||
from synapse.types import UserID, get_domain_from_id
|
||||
|
||||
from tests import unittest
|
||||
from tests.replication._base import BaseMultiWorkerStreamTestCase
|
||||
|
||||
|
||||
class PresenceUpdateTestCase(unittest.HomeserverTestCase):
|
||||
|
@ -505,7 +507,7 @@ class PresenceTimeoutTestCase(unittest.TestCase):
|
|||
self.assertEqual(state, new_state)
|
||||
|
||||
|
||||
class PresenceHandlerTestCase(unittest.HomeserverTestCase):
|
||||
class PresenceHandlerTestCase(BaseMultiWorkerStreamTestCase):
|
||||
def prepare(self, reactor, clock, hs):
|
||||
self.presence_handler = hs.get_presence_handler()
|
||||
self.clock = hs.get_clock()
|
||||
|
@ -716,20 +718,47 @@ class PresenceHandlerTestCase(unittest.HomeserverTestCase):
|
|||
# our status message should be the same as it was before
|
||||
self.assertEqual(state.status_msg, status_msg)
|
||||
|
||||
def test_set_presence_from_syncing_keeps_busy(self):
|
||||
"""Test that presence set by syncing doesn't affect busy status"""
|
||||
# while this isn't the default
|
||||
self.presence_handler._busy_presence_enabled = True
|
||||
@parameterized.expand([(False,), (True,)])
|
||||
@unittest.override_config(
|
||||
{
|
||||
"experimental_features": {
|
||||
"msc3026_enabled": True,
|
||||
},
|
||||
}
|
||||
)
|
||||
def test_set_presence_from_syncing_keeps_busy(self, test_with_workers: bool):
|
||||
"""Test that presence set by syncing doesn't affect busy status
|
||||
|
||||
Args:
|
||||
test_with_workers: If True, check the presence state of the user by calling
|
||||
/sync against a worker, rather than the main process.
|
||||
"""
|
||||
user_id = "@test:server"
|
||||
status_msg = "I'm busy!"
|
||||
|
||||
# By default, we call /sync against the main process.
|
||||
worker_to_sync_against = self.hs
|
||||
if test_with_workers:
|
||||
# Create a worker and use it to handle /sync traffic instead.
|
||||
# This is used to test that presence changes get replicated from workers
|
||||
# to the main process correctly.
|
||||
worker_to_sync_against = self.make_worker_hs(
|
||||
"synapse.app.generic_worker", {"worker_name": "presence_writer"}
|
||||
)
|
||||
|
||||
# Set presence to BUSY
|
||||
self._set_presencestate_with_status_msg(user_id, PresenceState.BUSY, status_msg)
|
||||
|
||||
# Perform a sync with a presence state other than busy. This should NOT change
|
||||
# our presence status; we only change from busy if we explicitly set it via
|
||||
# /presence/*.
|
||||
self.get_success(
|
||||
self.presence_handler.user_syncing(user_id, True, PresenceState.ONLINE)
|
||||
worker_to_sync_against.get_presence_handler().user_syncing(
|
||||
user_id, True, PresenceState.ONLINE
|
||||
)
|
||||
)
|
||||
|
||||
# Check against the main process that the user's presence did not change.
|
||||
state = self.get_success(
|
||||
self.presence_handler.get_state(UserID.from_string(user_id))
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue