/
Undeadguy
/
synapse
Обзор
Документация
Войти
/
Undeadguy
/
synapse
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
tests/config/test_api.py
145 строк
4 KB
David Robertson
Allow selecting "prejoin" events by state keys (#14642)
13 дек 2022, 03:54
Не верифицирован
13 дек 2022, 03:54
e2a1adb
Код
Авторство
О чём код?
from unittest import TestCase as StdlibTestCase import yaml from synapse.config import ConfigError from synapse.config.api import ApiConfig from synapse.types.state import StateFilter DEFAULT_PREJOIN_STATE_PAIRS = { ("m.room.join_rules", ""), ("m.room.canonical_alias", ""), ("m.room.avatar", ""), ("m.room.encryption", ""), ("m.room.name", ""), ("m.room.create", ""), ("m.room.topic", ""), } class TestRoomPrejoinState(StdlibTestCase): def read_config(self, source: str) -> ApiConfig: config = ApiConfig() config.read_config(yaml.safe_load(source)) return config def test_no_prejoin_state(self) -> None: config = self.read_config("foo: bar") self.assertFalse(config.room_prejoin_state.has_wildcards()) self.assertEqual( set(config.room_prejoin_state.concrete_types()), DEFAULT_PREJOIN_STATE_PAIRS ) def test_disable_default_event_types(self) -> None: config = self.read_config( """ room_prejoin_state: disable_default_event_types: true """ ) self.assertEqual(config.room_prejoin_state, StateFilter.none()) def test_event_without_state_key(self) -> None: config = self.read_config( """ room_prejoin_state: disable_default_event_types: true additional_event_types: - foo """ ) self.assertEqual(config.room_prejoin_state.wildcard_types(), ["foo"]) self.assertEqual(config.room_prejoin_state.concrete_types(), []) def test_event_with_specific_state_key(self) -> None: config = self.read_config( """ room_prejoin_state: disable_default_event_types: true additional_event_types: - [foo, bar] """ ) self.assertFalse(config.room_prejoin_state.has_wildcards()) self.assertEqual( set(config.room_prejoin_state.concrete_types()), {("foo", "bar")}, ) def test_repeated_event_with_specific_state_key(self) -> None: config = self.read_config( """ room_prejoin_state: disable_default_event_types: true additional_event_types: - [foo, bar] - [foo, baz] """ ) self.assertFalse(config.room_prejoin_state.has_wildcards()) self.assertEqual( set(config.room_prejoin_state.concrete_types()), {("foo", "bar"), ("foo", "baz")}, ) def test_no_specific_state_key_overrides_specific_state_key(self) -> None: config = self.read_config( """ room_prejoin_state: disable_default_event_types: true additional_event_types: - [foo, bar] - foo """ ) self.assertEqual(config.room_prejoin_state.wildcard_types(), ["foo"]) self.assertEqual(config.room_prejoin_state.concrete_types(), []) config = self.read_config( """ room_prejoin_state: disable_default_event_types: true additional_event_types: - foo - [foo, bar] """ ) self.assertEqual(config.room_prejoin_state.wildcard_types(), ["foo"]) self.assertEqual(config.room_prejoin_state.concrete_types(), []) def test_bad_event_type_entry_raises(self) -> None: with self.assertRaises(ConfigError): self.read_config( """ room_prejoin_state: additional_event_types: - [] """ ) with self.assertRaises(ConfigError): self.read_config( """ room_prejoin_state: additional_event_types: - [a] """ ) with self.assertRaises(ConfigError): self.read_config( """ room_prejoin_state: additional_event_types: - [a, b, c] """ ) with self.assertRaises(ConfigError): self.read_config( """ room_prejoin_state: additional_event_types: - [true, 1.23] """ )