mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-21 17:15:38 +03:00
Additional constants for EDU types. (#12884)
Instead of hard-coding strings in many places.
This commit is contained in:
parent
d9f092285b
commit
c52abc1cfd
35 changed files with 146 additions and 96 deletions
1
changelog.d/12884.misc
Normal file
1
changelog.d/12884.misc
Normal file
|
@ -0,0 +1 @@
|
|||
Use constants for EDU types.
|
|
@ -137,7 +137,13 @@ class DeviceKeyAlgorithms:
|
|||
|
||||
|
||||
class EduTypes:
|
||||
Presence: Final = "m.presence"
|
||||
PRESENCE: Final = "m.presence"
|
||||
TYPING: Final = "m.typing"
|
||||
RECEIPT: Final = "m.receipt"
|
||||
DEVICE_LIST_UPDATE: Final = "m.device_list_update"
|
||||
SIGNING_KEY_UPDATE: Final = "m.signing_key_update"
|
||||
UNSTABLE_SIGNING_KEY_UPDATE: Final = "org.matrix.signing_key_update"
|
||||
DIRECT_TO_DEVICE: Final = "m.direct_to_device"
|
||||
|
||||
|
||||
class RejectedReason:
|
||||
|
|
|
@ -33,7 +33,7 @@ from typing import (
|
|||
import jsonschema
|
||||
from jsonschema import FormatChecker
|
||||
|
||||
from synapse.api.constants import EventContentFields
|
||||
from synapse.api.constants import EduTypes, EventContentFields
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.api.presence import UserPresenceState
|
||||
from synapse.events import EventBase
|
||||
|
@ -347,7 +347,7 @@ class Filter:
|
|||
user_id = event.user_id
|
||||
field_matchers = {
|
||||
"senders": lambda v: user_id == v,
|
||||
"types": lambda v: "m.presence" == v,
|
||||
"types": lambda v: EduTypes.PRESENCE == v,
|
||||
}
|
||||
return self._check_fields(field_matchers)
|
||||
else:
|
||||
|
|
|
@ -1353,7 +1353,7 @@ class FederationHandlerRegistry:
|
|||
self._edu_type_to_instance[edu_type] = instance_names
|
||||
|
||||
async def on_edu(self, edu_type: str, origin: str, content: dict) -> None:
|
||||
if not self.config.server.use_presence and edu_type == EduTypes.Presence:
|
||||
if not self.config.server.use_presence and edu_type == EduTypes.PRESENCE:
|
||||
return
|
||||
|
||||
# Check if we have a handler on this instance
|
||||
|
|
|
@ -21,6 +21,7 @@ from typing import TYPE_CHECKING, Dict, Hashable, Iterable, List, Optional, Tupl
|
|||
import attr
|
||||
from prometheus_client import Counter
|
||||
|
||||
from synapse.api.constants import EduTypes
|
||||
from synapse.api.errors import (
|
||||
FederationDeniedError,
|
||||
HttpResponseException,
|
||||
|
@ -542,7 +543,7 @@ class PerDestinationQueue:
|
|||
edu = Edu(
|
||||
origin=self._server_name,
|
||||
destination=self._destination,
|
||||
edu_type="m.receipt",
|
||||
edu_type=EduTypes.RECEIPT,
|
||||
content=self._pending_rrs,
|
||||
)
|
||||
self._pending_rrs = {}
|
||||
|
@ -592,7 +593,7 @@ class PerDestinationQueue:
|
|||
Edu(
|
||||
origin=self._server_name,
|
||||
destination=self._destination,
|
||||
edu_type="m.direct_to_device",
|
||||
edu_type=EduTypes.DIRECT_TO_DEVICE,
|
||||
content=content,
|
||||
)
|
||||
for content in contents
|
||||
|
@ -670,7 +671,7 @@ class _TransactionQueueManager:
|
|||
Edu(
|
||||
origin=self.queue._server_name,
|
||||
destination=self.queue._destination,
|
||||
edu_type="m.presence",
|
||||
edu_type=EduTypes.PRESENCE,
|
||||
content={
|
||||
"push": [
|
||||
format_user_presence_state(
|
||||
|
|
|
@ -16,6 +16,7 @@ from typing import TYPE_CHECKING, List
|
|||
|
||||
from prometheus_client import Gauge
|
||||
|
||||
from synapse.api.constants import EduTypes
|
||||
from synapse.api.errors import HttpResponseException
|
||||
from synapse.events import EventBase
|
||||
from synapse.federation.persistence import TransactionActions
|
||||
|
@ -126,7 +127,10 @@ class TransactionManager:
|
|||
len(edus),
|
||||
)
|
||||
if issue_8631_logger.isEnabledFor(logging.DEBUG):
|
||||
DEVICE_UPDATE_EDUS = {"m.device_list_update", "m.signing_key_update"}
|
||||
DEVICE_UPDATE_EDUS = {
|
||||
EduTypes.DEVICE_LIST_UPDATE,
|
||||
EduTypes.SIGNING_KEY_UPDATE,
|
||||
}
|
||||
device_list_updates = [
|
||||
edu.content for edu in edus if edu.edu_type in DEVICE_UPDATE_EDUS
|
||||
]
|
||||
|
|
|
@ -27,6 +27,7 @@ from typing import (
|
|||
from matrix_common.versionstring import get_distribution_version_string
|
||||
from typing_extensions import Literal
|
||||
|
||||
from synapse.api.constants import EduTypes
|
||||
from synapse.api.errors import Codes, SynapseError
|
||||
from synapse.api.room_versions import RoomVersions
|
||||
from synapse.api.urls import FEDERATION_UNSTABLE_PREFIX, FEDERATION_V2_PREFIX
|
||||
|
@ -108,7 +109,10 @@ class FederationSendServlet(BaseFederationServerServlet):
|
|||
)
|
||||
|
||||
if issue_8631_logger.isEnabledFor(logging.DEBUG):
|
||||
DEVICE_UPDATE_EDUS = ["m.device_list_update", "m.signing_key_update"]
|
||||
DEVICE_UPDATE_EDUS = [
|
||||
EduTypes.DEVICE_LIST_UPDATE,
|
||||
EduTypes.SIGNING_KEY_UPDATE,
|
||||
]
|
||||
device_list_updates = [
|
||||
edu.get("content", {})
|
||||
for edu in transaction_data.get("edus", [])
|
||||
|
|
|
@ -19,7 +19,7 @@ from prometheus_client import Counter
|
|||
from twisted.internet import defer
|
||||
|
||||
import synapse
|
||||
from synapse.api.constants import EventTypes
|
||||
from synapse.api.constants import EduTypes, EventTypes
|
||||
from synapse.appservice import ApplicationService
|
||||
from synapse.events import EventBase
|
||||
from synapse.handlers.presence import format_user_presence_state
|
||||
|
@ -503,7 +503,7 @@ class ApplicationServicesHandler:
|
|||
time_now = self.clock.time_msec()
|
||||
events.extend(
|
||||
{
|
||||
"type": "m.presence",
|
||||
"type": EduTypes.PRESENCE,
|
||||
"sender": event.user_id,
|
||||
"content": format_user_presence_state(
|
||||
event, time_now, include_user_id=False
|
||||
|
|
|
@ -28,7 +28,7 @@ from typing import (
|
|||
)
|
||||
|
||||
from synapse.api import errors
|
||||
from synapse.api.constants import EventTypes
|
||||
from synapse.api.constants import EduTypes, EventTypes
|
||||
from synapse.api.errors import (
|
||||
Codes,
|
||||
FederationDeniedError,
|
||||
|
@ -279,7 +279,8 @@ class DeviceHandler(DeviceWorkerHandler):
|
|||
federation_registry = hs.get_federation_registry()
|
||||
|
||||
federation_registry.register_edu_handler(
|
||||
"m.device_list_update", self.device_list_updater.incoming_device_list_update
|
||||
EduTypes.DEVICE_LIST_UPDATE,
|
||||
self.device_list_updater.incoming_device_list_update,
|
||||
)
|
||||
|
||||
hs.get_distributor().observe("user_left_room", self.user_left_room)
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
import logging
|
||||
from typing import TYPE_CHECKING, Any, Dict
|
||||
|
||||
from synapse.api.constants import ToDeviceEventTypes
|
||||
from synapse.api.constants import EduTypes, ToDeviceEventTypes
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.api.ratelimiting import Ratelimiter
|
||||
from synapse.logging.context import run_in_background
|
||||
|
@ -59,11 +59,11 @@ class DeviceMessageHandler:
|
|||
# to the appropriate worker.
|
||||
if hs.get_instance_name() in hs.config.worker.writers.to_device:
|
||||
hs.get_federation_registry().register_edu_handler(
|
||||
"m.direct_to_device", self.on_direct_to_device_edu
|
||||
EduTypes.DIRECT_TO_DEVICE, self.on_direct_to_device_edu
|
||||
)
|
||||
else:
|
||||
hs.get_federation_registry().register_instances_for_edu(
|
||||
"m.direct_to_device",
|
||||
EduTypes.DIRECT_TO_DEVICE,
|
||||
hs.config.worker.writers.to_device,
|
||||
)
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ from unpaddedbase64 import decode_base64
|
|||
|
||||
from twisted.internet import defer
|
||||
|
||||
from synapse.api.constants import EduTypes
|
||||
from synapse.api.errors import CodeMessageException, Codes, NotFoundError, SynapseError
|
||||
from synapse.logging.context import make_deferred_yieldable, run_in_background
|
||||
from synapse.logging.opentracing import log_kv, set_tag, tag_args, trace
|
||||
|
@ -66,13 +67,13 @@ class E2eKeysHandler:
|
|||
# Only register this edu handler on master as it requires writing
|
||||
# device updates to the db
|
||||
federation_registry.register_edu_handler(
|
||||
"m.signing_key_update",
|
||||
EduTypes.SIGNING_KEY_UPDATE,
|
||||
self._edu_updater.incoming_signing_key_update,
|
||||
)
|
||||
# also handle the unstable version
|
||||
# FIXME: remove this when enough servers have upgraded
|
||||
federation_registry.register_edu_handler(
|
||||
"org.matrix.signing_key_update",
|
||||
EduTypes.UNSTABLE_SIGNING_KEY_UPDATE,
|
||||
self._edu_updater.incoming_signing_key_update,
|
||||
)
|
||||
|
||||
|
|
|
@ -113,7 +113,7 @@ class EventStreamHandler:
|
|||
states = await presence_handler.get_states(users)
|
||||
to_add.extend(
|
||||
{
|
||||
"type": EduTypes.Presence,
|
||||
"type": EduTypes.PRESENCE,
|
||||
"content": format_user_presence_state(state, time_now),
|
||||
}
|
||||
for state in states
|
||||
|
|
|
@ -274,7 +274,7 @@ class InitialSyncHandler:
|
|||
"rooms": rooms_ret,
|
||||
"presence": [
|
||||
{
|
||||
"type": "m.presence",
|
||||
"type": EduTypes.PRESENCE,
|
||||
"content": format_user_presence_state(event, now),
|
||||
}
|
||||
for event in presence
|
||||
|
@ -439,7 +439,7 @@ class InitialSyncHandler:
|
|||
|
||||
return [
|
||||
{
|
||||
"type": EduTypes.Presence,
|
||||
"type": EduTypes.PRESENCE,
|
||||
"content": format_user_presence_state(s, time_now),
|
||||
}
|
||||
for s in states
|
||||
|
|
|
@ -49,7 +49,7 @@ from prometheus_client import Counter
|
|||
from typing_extensions import ContextManager
|
||||
|
||||
import synapse.metrics
|
||||
from synapse.api.constants import EventTypes, Membership, PresenceState
|
||||
from synapse.api.constants import EduTypes, EventTypes, Membership, PresenceState
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.api.presence import UserPresenceState
|
||||
from synapse.appservice import ApplicationService
|
||||
|
@ -394,7 +394,7 @@ class WorkerPresenceHandler(BasePresenceHandler):
|
|||
|
||||
# Route presence EDUs to the right worker
|
||||
hs.get_federation_registry().register_instances_for_edu(
|
||||
"m.presence",
|
||||
EduTypes.PRESENCE,
|
||||
hs.config.worker.writers.presence,
|
||||
)
|
||||
|
||||
|
@ -649,7 +649,9 @@ class PresenceHandler(BasePresenceHandler):
|
|||
|
||||
federation_registry = hs.get_federation_registry()
|
||||
|
||||
federation_registry.register_edu_handler("m.presence", self.incoming_presence)
|
||||
federation_registry.register_edu_handler(
|
||||
EduTypes.PRESENCE, self.incoming_presence
|
||||
)
|
||||
|
||||
LaterGauge(
|
||||
"synapse_handlers_presence_user_to_current_state_size",
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
import logging
|
||||
from typing import TYPE_CHECKING, Iterable, List, Optional, Tuple
|
||||
|
||||
from synapse.api.constants import ReceiptTypes
|
||||
from synapse.api.constants import EduTypes, ReceiptTypes
|
||||
from synapse.appservice import ApplicationService
|
||||
from synapse.streams import EventSource
|
||||
from synapse.types import (
|
||||
|
@ -52,11 +52,11 @@ class ReceiptsHandler:
|
|||
# to the appropriate worker.
|
||||
if hs.get_instance_name() in hs.config.worker.writers.receipts:
|
||||
hs.get_federation_registry().register_edu_handler(
|
||||
"m.receipt", self._received_remote_receipt
|
||||
EduTypes.RECEIPT, self._received_remote_receipt
|
||||
)
|
||||
else:
|
||||
hs.get_federation_registry().register_instances_for_edu(
|
||||
"m.receipt",
|
||||
EduTypes.RECEIPT,
|
||||
hs.config.worker.writers.receipts,
|
||||
)
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Set, Tuple
|
|||
|
||||
import attr
|
||||
|
||||
from synapse.api.constants import EduTypes
|
||||
from synapse.api.errors import AuthError, ShadowBanError, SynapseError
|
||||
from synapse.appservice import ApplicationService
|
||||
from synapse.metrics.background_process_metrics import (
|
||||
|
@ -68,7 +69,7 @@ class FollowerTypingHandler:
|
|||
|
||||
if hs.get_instance_name() not in hs.config.worker.writers.typing:
|
||||
hs.get_federation_registry().register_instances_for_edu(
|
||||
"m.typing",
|
||||
EduTypes.TYPING,
|
||||
hs.config.worker.writers.typing,
|
||||
)
|
||||
|
||||
|
@ -143,7 +144,7 @@ class FollowerTypingHandler:
|
|||
logger.debug("sending typing update to %s", domain)
|
||||
self.federation.build_and_send_edu(
|
||||
destination=domain,
|
||||
edu_type="m.typing",
|
||||
edu_type=EduTypes.TYPING,
|
||||
content={
|
||||
"room_id": member.room_id,
|
||||
"user_id": member.user_id,
|
||||
|
@ -218,7 +219,9 @@ class TypingWriterHandler(FollowerTypingHandler):
|
|||
|
||||
self.hs = hs
|
||||
|
||||
hs.get_federation_registry().register_edu_handler("m.typing", self._recv_edu)
|
||||
hs.get_federation_registry().register_edu_handler(
|
||||
EduTypes.TYPING, self._recv_edu
|
||||
)
|
||||
|
||||
hs.get_distributor().observe("user_left_room", self.user_left_room)
|
||||
|
||||
|
@ -458,7 +461,7 @@ class TypingNotificationEventSource(EventSource[int, JsonDict]):
|
|||
def _make_event_for(self, room_id: str) -> JsonDict:
|
||||
typing = self.get_typing_handler()._room_typing[room_id]
|
||||
return {
|
||||
"type": "m.typing",
|
||||
"type": EduTypes.TYPING,
|
||||
"room_id": room_id,
|
||||
"content": {"user_ids": list(typing)},
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ from prometheus_client import Counter
|
|||
|
||||
from twisted.internet import defer
|
||||
|
||||
from synapse.api.constants import EventTypes, HistoryVisibility, Membership
|
||||
from synapse.api.constants import EduTypes, EventTypes, HistoryVisibility, Membership
|
||||
from synapse.api.errors import AuthError
|
||||
from synapse.events import EventBase
|
||||
from synapse.handlers.presence import format_user_presence_state
|
||||
|
@ -632,7 +632,7 @@ class Notifier:
|
|||
now = self.clock.time_msec()
|
||||
new_events[:] = [
|
||||
{
|
||||
"type": "m.presence",
|
||||
"type": EduTypes.PRESENCE,
|
||||
"content": format_user_presence_state(event, now),
|
||||
}
|
||||
for event in new_events
|
||||
|
|
|
@ -16,7 +16,7 @@ import logging
|
|||
from collections import defaultdict
|
||||
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
|
||||
|
||||
from synapse.api.constants import Membership, PresenceState
|
||||
from synapse.api.constants import EduTypes, Membership, PresenceState
|
||||
from synapse.api.errors import Codes, StoreError, SynapseError
|
||||
from synapse.api.filtering import FilterCollection
|
||||
from synapse.api.presence import UserPresenceState
|
||||
|
@ -305,7 +305,7 @@ class SyncRestServlet(RestServlet):
|
|||
return {
|
||||
"events": [
|
||||
{
|
||||
"type": "m.presence",
|
||||
"type": EduTypes.PRESENCE,
|
||||
"sender": event.user_id,
|
||||
"content": format_user_presence_state(
|
||||
event, time_now, include_user_id=False
|
||||
|
|
|
@ -28,6 +28,7 @@ from typing import (
|
|||
cast,
|
||||
)
|
||||
|
||||
from synapse.api.constants import EduTypes
|
||||
from synapse.api.errors import Codes, StoreError
|
||||
from synapse.logging.opentracing import (
|
||||
get_active_span_text_map,
|
||||
|
@ -419,7 +420,7 @@ class DeviceWorkerStore(SQLBaseStore):
|
|||
# Add the updated cross-signing keys to the results list
|
||||
for user_id, result in cross_signing_keys_by_user.items():
|
||||
result["user_id"] = user_id
|
||||
results.append(("m.signing_key_update", result))
|
||||
results.append((EduTypes.SIGNING_KEY_UPDATE, result))
|
||||
# also send the unstable version
|
||||
# FIXME: remove this when enough servers have upgraded
|
||||
# and remove the length budgeting above.
|
||||
|
@ -545,7 +546,7 @@ class DeviceWorkerStore(SQLBaseStore):
|
|||
else:
|
||||
result["deleted"] = True
|
||||
|
||||
results.append(("m.device_list_update", result))
|
||||
results.append((EduTypes.DEVICE_LIST_UPDATE, result))
|
||||
|
||||
return results
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ from typing import (
|
|||
cast,
|
||||
)
|
||||
|
||||
from synapse.api.constants import ReceiptTypes
|
||||
from synapse.api.constants import EduTypes, ReceiptTypes
|
||||
from synapse.replication.slave.storage._slaved_id_tracker import SlavedIdTracker
|
||||
from synapse.replication.tcp.streams import ReceiptsStream
|
||||
from synapse.storage._base import SQLBaseStore, db_to_json, make_in_list_sql_clause
|
||||
|
@ -363,7 +363,7 @@ class ReceiptsWorkerStore(SQLBaseStore):
|
|||
row["user_id"]
|
||||
] = db_to_json(row["data"])
|
||||
|
||||
return [{"type": "m.receipt", "room_id": room_id, "content": content}]
|
||||
return [{"type": EduTypes.RECEIPT, "room_id": room_id, "content": content}]
|
||||
|
||||
@cachedList(
|
||||
cached_method_name="_get_linearized_receipts_for_room",
|
||||
|
@ -411,7 +411,7 @@ class ReceiptsWorkerStore(SQLBaseStore):
|
|||
# receipts by room, event and type.
|
||||
room_event = results.setdefault(
|
||||
row["room_id"],
|
||||
{"type": "m.receipt", "room_id": row["room_id"], "content": {}},
|
||||
{"type": EduTypes.RECEIPT, "room_id": row["room_id"], "content": {}},
|
||||
)
|
||||
|
||||
# The content is of the form:
|
||||
|
@ -476,7 +476,7 @@ class ReceiptsWorkerStore(SQLBaseStore):
|
|||
# receipts by room, event and type.
|
||||
room_event = results.setdefault(
|
||||
row["room_id"],
|
||||
{"type": "m.receipt", "room_id": row["room_id"], "content": {}},
|
||||
{"type": EduTypes.RECEIPT, "room_id": row["room_id"], "content": {}},
|
||||
)
|
||||
|
||||
# The content is of the form:
|
||||
|
|
|
@ -20,7 +20,7 @@ from unittest.mock import patch
|
|||
import jsonschema
|
||||
from frozendict import frozendict
|
||||
|
||||
from synapse.api.constants import EventContentFields
|
||||
from synapse.api.constants import EduTypes, EventContentFields
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.api.filtering import Filter
|
||||
from synapse.events import make_event_from_dict
|
||||
|
@ -85,13 +85,13 @@ class FilteringTestCase(unittest.HomeserverTestCase):
|
|||
"org.matrix.not_labels": ["#work"],
|
||||
},
|
||||
"ephemeral": {
|
||||
"types": ["m.receipt", "m.typing"],
|
||||
"types": [EduTypes.RECEIPT, EduTypes.TYPING],
|
||||
"not_rooms": ["!726s6s6q:example.com"],
|
||||
"not_senders": ["@spam:example.com"],
|
||||
},
|
||||
},
|
||||
"presence": {
|
||||
"types": ["m.presence"],
|
||||
"types": [EduTypes.PRESENCE],
|
||||
"not_senders": ["@alice:example.com"],
|
||||
},
|
||||
"event_format": "client",
|
||||
|
|
|
@ -439,7 +439,7 @@ class PresenceRouterTestCase(FederatingHomeserverTestCase):
|
|||
|
||||
for edu in edus:
|
||||
# Make sure we're only checking presence-type EDUs
|
||||
if edu["edu_type"] != EduTypes.Presence:
|
||||
if edu["edu_type"] != EduTypes.PRESENCE:
|
||||
continue
|
||||
|
||||
# EDUs can contain multiple presence updates
|
||||
|
|
|
@ -19,7 +19,7 @@ from signedjson.types import BaseKey, SigningKey
|
|||
|
||||
from twisted.internet import defer
|
||||
|
||||
from synapse.api.constants import RoomEncryptionAlgorithms
|
||||
from synapse.api.constants import EduTypes, RoomEncryptionAlgorithms
|
||||
from synapse.rest import admin
|
||||
from synapse.rest.client import login
|
||||
from synapse.types import JsonDict, ReadReceipt
|
||||
|
@ -63,7 +63,7 @@ class FederationSenderReceiptsTestCases(HomeserverTestCase):
|
|||
data["edus"],
|
||||
[
|
||||
{
|
||||
"edu_type": "m.receipt",
|
||||
"edu_type": EduTypes.RECEIPT,
|
||||
"content": {
|
||||
"room_id": {
|
||||
"m.read": {
|
||||
|
@ -103,7 +103,7 @@ class FederationSenderReceiptsTestCases(HomeserverTestCase):
|
|||
data["edus"],
|
||||
[
|
||||
{
|
||||
"edu_type": "m.receipt",
|
||||
"edu_type": EduTypes.RECEIPT,
|
||||
"content": {
|
||||
"room_id": {
|
||||
"m.read": {
|
||||
|
@ -138,7 +138,7 @@ class FederationSenderReceiptsTestCases(HomeserverTestCase):
|
|||
data["edus"],
|
||||
[
|
||||
{
|
||||
"edu_type": "m.receipt",
|
||||
"edu_type": EduTypes.RECEIPT,
|
||||
"content": {
|
||||
"room_id": {
|
||||
"m.read": {
|
||||
|
@ -322,8 +322,10 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
|||
|
||||
# expect signing key update edu
|
||||
self.assertEqual(len(self.edus), 2)
|
||||
self.assertEqual(self.edus.pop(0)["edu_type"], "m.signing_key_update")
|
||||
self.assertEqual(self.edus.pop(0)["edu_type"], "org.matrix.signing_key_update")
|
||||
self.assertEqual(self.edus.pop(0)["edu_type"], EduTypes.SIGNING_KEY_UPDATE)
|
||||
self.assertEqual(
|
||||
self.edus.pop(0)["edu_type"], EduTypes.UNSTABLE_SIGNING_KEY_UPDATE
|
||||
)
|
||||
|
||||
# sign the devices
|
||||
d1_json = build_device_dict(u1, "D1", device1_signing_key)
|
||||
|
@ -348,7 +350,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
|||
self.assertEqual(len(self.edus), 2)
|
||||
stream_id = None # FIXME: there is a discontinuity in the stream IDs: see #7142
|
||||
for edu in self.edus:
|
||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
||||
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||
c = edu["content"]
|
||||
if stream_id is not None:
|
||||
self.assertEqual(c["prev_id"], [stream_id])
|
||||
|
@ -388,7 +390,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
|||
# expect three edus, in an unknown order
|
||||
self.assertEqual(len(self.edus), 3)
|
||||
for edu in self.edus:
|
||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
||||
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||
c = edu["content"]
|
||||
self.assertGreaterEqual(
|
||||
c.items(),
|
||||
|
@ -435,7 +437,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
|||
self.assertEqual(len(self.edus), 3)
|
||||
stream_id = None
|
||||
for edu in self.edus:
|
||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
||||
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||
c = edu["content"]
|
||||
self.assertEqual(c["prev_id"], [stream_id] if stream_id is not None else [])
|
||||
if stream_id is not None:
|
||||
|
@ -487,7 +489,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
|||
# there should be a single update for this user.
|
||||
self.assertEqual(len(self.edus), 1)
|
||||
edu = self.edus.pop(0)
|
||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
||||
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||
c = edu["content"]
|
||||
|
||||
# synapse uses an empty prev_id list to indicate "needs a full resync".
|
||||
|
@ -544,7 +546,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
|||
# ... and we should get a single update for this user.
|
||||
self.assertEqual(len(self.edus), 1)
|
||||
edu = self.edus.pop(0)
|
||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
||||
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||
c = edu["content"]
|
||||
|
||||
# synapse uses an empty prev_id list to indicate "needs a full resync".
|
||||
|
@ -560,7 +562,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
|||
"""Check that the given EDU is an update for the given device
|
||||
Returns the stream_id.
|
||||
"""
|
||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
||||
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||
content = edu["content"]
|
||||
|
||||
expected = {
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from synapse.api.constants import EduTypes
|
||||
|
||||
from tests import unittest
|
||||
from tests.unittest import DEBUG, override_config
|
||||
|
||||
|
@ -50,7 +52,7 @@ class RoomDirectoryFederationTests(unittest.FederatingHomeserverTestCase):
|
|||
"/_matrix/federation/v1/send/txn_id_1234/",
|
||||
content={
|
||||
"edus": [
|
||||
{"edu_type": "m.device_list_update", "content": {"foo": "bar"}}
|
||||
{"edu_type": EduTypes.DEVICE_LIST_UPDATE, "content": {"foo": "bar"}}
|
||||
],
|
||||
"pdus": [],
|
||||
},
|
||||
|
|
|
@ -22,6 +22,7 @@ from twisted.test.proto_helpers import MemoryReactor
|
|||
|
||||
import synapse.rest.admin
|
||||
import synapse.storage
|
||||
from synapse.api.constants import EduTypes
|
||||
from synapse.appservice import (
|
||||
ApplicationService,
|
||||
TransactionOneTimeKeyCounts,
|
||||
|
@ -476,7 +477,7 @@ class ApplicationServicesHandlerSendEventsTestCase(unittest.HomeserverTestCase):
|
|||
|
||||
# Check that the ephemeral event is a read receipt with the expected structure
|
||||
latest_read_receipt = all_ephemeral_events[-1]
|
||||
self.assertEqual(latest_read_receipt["type"], "m.receipt")
|
||||
self.assertEqual(latest_read_receipt["type"], EduTypes.RECEIPT)
|
||||
|
||||
event_id = list(latest_read_receipt["content"].keys())[0]
|
||||
self.assertEqual(
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
from copy import deepcopy
|
||||
from typing import List
|
||||
|
||||
from synapse.api.constants import ReceiptTypes
|
||||
from synapse.api.constants import EduTypes, ReceiptTypes
|
||||
from synapse.types import JsonDict
|
||||
|
||||
from tests import unittest
|
||||
|
@ -39,7 +39,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
}
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
}
|
||||
],
|
||||
[],
|
||||
|
@ -64,7 +64,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
}
|
||||
],
|
||||
[
|
||||
|
@ -79,7 +79,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
}
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
}
|
||||
],
|
||||
)
|
||||
|
@ -105,7 +105,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
}
|
||||
],
|
||||
[
|
||||
|
@ -120,7 +120,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
}
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
}
|
||||
],
|
||||
)
|
||||
|
@ -140,7 +140,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
}
|
||||
],
|
||||
[
|
||||
|
@ -155,7 +155,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
}
|
||||
],
|
||||
)
|
||||
|
@ -174,7 +174,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
},
|
||||
{
|
||||
"content": {
|
||||
|
@ -187,7 +187,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
},
|
||||
],
|
||||
[
|
||||
|
@ -202,7 +202,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
}
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
}
|
||||
],
|
||||
)
|
||||
|
@ -224,7 +224,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
},
|
||||
],
|
||||
[
|
||||
|
@ -237,7 +237,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
},
|
||||
],
|
||||
)
|
||||
|
@ -266,7 +266,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
}
|
||||
],
|
||||
[
|
||||
|
@ -291,7 +291,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
}
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
}
|
||||
],
|
||||
)
|
||||
|
@ -310,7 +310,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
}
|
||||
},
|
||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||
"type": "m.receipt",
|
||||
"type": EduTypes.RECEIPT,
|
||||
}
|
||||
]
|
||||
original_events = deepcopy(events)
|
||||
|
|
|
@ -21,6 +21,7 @@ from twisted.internet import defer
|
|||
from twisted.test.proto_helpers import MemoryReactor
|
||||
from twisted.web.resource import Resource
|
||||
|
||||
from synapse.api.constants import EduTypes
|
||||
from synapse.api.errors import AuthError
|
||||
from synapse.federation.transport.server import TransportLayerServer
|
||||
from synapse.server import HomeServer
|
||||
|
@ -184,7 +185,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
|||
events[0],
|
||||
[
|
||||
{
|
||||
"type": "m.typing",
|
||||
"type": EduTypes.TYPING,
|
||||
"room_id": ROOM_ID,
|
||||
"content": {"user_ids": [U_APPLE.to_string()]},
|
||||
}
|
||||
|
@ -209,7 +210,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
|||
"farm",
|
||||
path="/_matrix/federation/v1/send/1000000",
|
||||
data=_expect_edu_transaction(
|
||||
"m.typing",
|
||||
EduTypes.TYPING,
|
||||
content={
|
||||
"room_id": ROOM_ID,
|
||||
"user_id": U_APPLE.to_string(),
|
||||
|
@ -231,7 +232,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
|||
"PUT",
|
||||
"/_matrix/federation/v1/send/1000000",
|
||||
_make_edu_transaction_json(
|
||||
"m.typing",
|
||||
EduTypes.TYPING,
|
||||
content={
|
||||
"room_id": ROOM_ID,
|
||||
"user_id": U_ONION.to_string(),
|
||||
|
@ -254,7 +255,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
|||
events[0],
|
||||
[
|
||||
{
|
||||
"type": "m.typing",
|
||||
"type": EduTypes.TYPING,
|
||||
"room_id": ROOM_ID,
|
||||
"content": {"user_ids": [U_ONION.to_string()]},
|
||||
}
|
||||
|
@ -270,7 +271,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
|||
"PUT",
|
||||
"/_matrix/federation/v1/send/1000000",
|
||||
_make_edu_transaction_json(
|
||||
"m.typing",
|
||||
EduTypes.TYPING,
|
||||
content={
|
||||
"room_id": OTHER_ROOM_ID,
|
||||
"user_id": U_ONION.to_string(),
|
||||
|
@ -324,7 +325,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
|||
"farm",
|
||||
path="/_matrix/federation/v1/send/1000000",
|
||||
data=_expect_edu_transaction(
|
||||
"m.typing",
|
||||
EduTypes.TYPING,
|
||||
content={
|
||||
"room_id": ROOM_ID,
|
||||
"user_id": U_APPLE.to_string(),
|
||||
|
@ -345,7 +346,13 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
|||
)
|
||||
self.assertEqual(
|
||||
events[0],
|
||||
[{"type": "m.typing", "room_id": ROOM_ID, "content": {"user_ids": []}}],
|
||||
[
|
||||
{
|
||||
"type": EduTypes.TYPING,
|
||||
"room_id": ROOM_ID,
|
||||
"content": {"user_ids": []},
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
def test_typing_timeout(self) -> None:
|
||||
|
@ -379,7 +386,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
|||
events[0],
|
||||
[
|
||||
{
|
||||
"type": "m.typing",
|
||||
"type": EduTypes.TYPING,
|
||||
"room_id": ROOM_ID,
|
||||
"content": {"user_ids": [U_APPLE.to_string()]},
|
||||
}
|
||||
|
@ -402,7 +409,13 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
|||
)
|
||||
self.assertEqual(
|
||||
events[0],
|
||||
[{"type": "m.typing", "room_id": ROOM_ID, "content": {"user_ids": []}}],
|
||||
[
|
||||
{
|
||||
"type": EduTypes.TYPING,
|
||||
"room_id": ROOM_ID,
|
||||
"content": {"user_ids": []},
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
# SYN-230 - see if we can still set after timeout
|
||||
|
@ -433,7 +446,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
|||
events[0],
|
||||
[
|
||||
{
|
||||
"type": "m.typing",
|
||||
"type": EduTypes.TYPING,
|
||||
"room_id": ROOM_ID,
|
||||
"content": {"user_ids": [U_APPLE.to_string()]},
|
||||
}
|
||||
|
|
|
@ -399,7 +399,7 @@ class ModuleApiTestCase(HomeserverTestCase):
|
|||
|
||||
for edu in edus:
|
||||
# Make sure we're only checking presence-type EDUs
|
||||
if edu["edu_type"] != EduTypes.Presence:
|
||||
if edu["edu_type"] != EduTypes.PRESENCE:
|
||||
continue
|
||||
|
||||
# EDUs can contain multiple presence updates
|
||||
|
|
|
@ -19,6 +19,7 @@ from unittest.mock import Mock
|
|||
from twisted.test.proto_helpers import MemoryReactor
|
||||
|
||||
import synapse.rest.admin
|
||||
from synapse.api.constants import EduTypes
|
||||
from synapse.rest.client import events, login, room
|
||||
from synapse.server import HomeServer
|
||||
from synapse.util import Clock
|
||||
|
@ -103,7 +104,7 @@ class EventStreamPermissionsTestCase(unittest.HomeserverTestCase):
|
|||
c
|
||||
for c in channel.json_body["chunk"]
|
||||
if not (
|
||||
c.get("type") == "m.presence"
|
||||
c.get("type") == EduTypes.PRESENCE
|
||||
and c["content"].get("user_id") == self.user_id
|
||||
)
|
||||
]
|
||||
|
|
|
@ -26,6 +26,7 @@ from twisted.test.proto_helpers import MemoryReactor
|
|||
|
||||
import synapse.rest.admin
|
||||
from synapse.api.constants import (
|
||||
EduTypes,
|
||||
EventContentFields,
|
||||
EventTypes,
|
||||
Membership,
|
||||
|
@ -1412,7 +1413,7 @@ class RoomInitialSyncTestCase(RoomBase):
|
|||
e["content"]["user_id"]: e for e in channel.json_body["presence"]
|
||||
}
|
||||
self.assertTrue(self.user_id in presence_by_user)
|
||||
self.assertEqual("m.presence", presence_by_user[self.user_id]["type"])
|
||||
self.assertEqual(EduTypes.PRESENCE, presence_by_user[self.user_id]["type"])
|
||||
|
||||
|
||||
class RoomMessageListTestCase(RoomBase):
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from synapse.api.constants import EduTypes
|
||||
from synapse.rest import admin
|
||||
from synapse.rest.client import login, sendtodevice, sync
|
||||
|
||||
|
@ -139,7 +140,7 @@ class SendToDeviceTestCase(HomeserverTestCase):
|
|||
for i in range(3):
|
||||
self.get_success(
|
||||
federation_registry.on_edu(
|
||||
"m.direct_to_device",
|
||||
EduTypes.DIRECT_TO_DEVICE,
|
||||
"remote_server",
|
||||
{
|
||||
"sender": "@user:remote_server",
|
||||
|
@ -172,7 +173,7 @@ class SendToDeviceTestCase(HomeserverTestCase):
|
|||
# and we can send more messages
|
||||
self.get_success(
|
||||
federation_registry.on_edu(
|
||||
"m.direct_to_device",
|
||||
EduTypes.DIRECT_TO_DEVICE,
|
||||
"remote_server",
|
||||
{
|
||||
"sender": "@user:remote_server",
|
||||
|
|
|
@ -17,7 +17,7 @@ from unittest.mock import Mock, patch
|
|||
from twisted.test.proto_helpers import MemoryReactor
|
||||
|
||||
import synapse.rest.admin
|
||||
from synapse.api.constants import EventTypes
|
||||
from synapse.api.constants import EduTypes, EventTypes
|
||||
from synapse.rest.client import (
|
||||
directory,
|
||||
login,
|
||||
|
@ -226,7 +226,7 @@ class RoomTestCase(_ShadowBannedBase):
|
|||
events[0],
|
||||
[
|
||||
{
|
||||
"type": "m.typing",
|
||||
"type": EduTypes.TYPING,
|
||||
"room_id": room_id,
|
||||
"content": {"user_ids": [self.other_user_id]},
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ from twisted.test.proto_helpers import MemoryReactor
|
|||
|
||||
import synapse.rest.admin
|
||||
from synapse.api.constants import (
|
||||
EduTypes,
|
||||
EventContentFields,
|
||||
EventTypes,
|
||||
ReceiptTypes,
|
||||
|
@ -504,7 +505,7 @@ class ReadReceiptsTestCase(unittest.HomeserverTestCase):
|
|||
|
||||
# Checks if event is a read receipt
|
||||
def is_read_receipt(event: JsonDict) -> bool:
|
||||
return event["type"] == "m.receipt"
|
||||
return event["type"] == EduTypes.RECEIPT
|
||||
|
||||
# Sync
|
||||
channel = self.make_request(
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
from twisted.test.proto_helpers import MemoryReactor
|
||||
|
||||
from synapse.api.constants import EduTypes
|
||||
from synapse.rest.client import room
|
||||
from synapse.server import HomeServer
|
||||
from synapse.types import UserID
|
||||
|
@ -67,7 +68,7 @@ class RoomTypingTestCase(unittest.HomeserverTestCase):
|
|||
events[0],
|
||||
[
|
||||
{
|
||||
"type": "m.typing",
|
||||
"type": EduTypes.TYPING,
|
||||
"room_id": self.room_id,
|
||||
"content": {"user_ids": [self.user_id]},
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
# limitations under the License.
|
||||
|
||||
import synapse.api.errors
|
||||
from synapse.api.constants import EduTypes
|
||||
|
||||
from tests.unittest import HomeserverTestCase
|
||||
|
||||
|
@ -266,10 +267,12 @@ class DeviceStoreTestCase(HomeserverTestCase):
|
|||
# (This is a temporary arrangement for backwards compatibility!)
|
||||
self.assertEqual(len(device_updates), 2, device_updates)
|
||||
self.assertEqual(
|
||||
device_updates[0][0], "m.signing_key_update", device_updates[0]
|
||||
device_updates[0][0], EduTypes.SIGNING_KEY_UPDATE, device_updates[0]
|
||||
)
|
||||
self.assertEqual(
|
||||
device_updates[1][0], "org.matrix.signing_key_update", device_updates[1]
|
||||
device_updates[1][0],
|
||||
EduTypes.UNSTABLE_SIGNING_KEY_UPDATE,
|
||||
device_updates[1],
|
||||
)
|
||||
|
||||
# Check there are no more device updates left.
|
||||
|
|
Loading…
Reference in a new issue