mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-02 09:46:06 -04:00
Update intentional mentions (MSC3952) to depend on exact_event_property_contains
(MSC3966). (#15051)
This replaces the specific `is_user_mention` push rule condition used in MSC3952 with the generic `exact_event_property_contains` push rule condition from MSC3966.
This commit is contained in:
parent
33a85cf08c
commit
8ef324ea6f
11 changed files with 73 additions and 94 deletions
|
@ -12,7 +12,7 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from typing import Any, Dict, List, Optional, Set, Union, cast
|
||||
from typing import Any, Dict, List, Optional, Union, cast
|
||||
|
||||
import frozendict
|
||||
|
||||
|
@ -147,8 +147,6 @@ class PushRuleEvaluatorTestCase(unittest.TestCase):
|
|||
self,
|
||||
content: JsonMapping,
|
||||
*,
|
||||
has_mentions: bool = False,
|
||||
user_mentions: Optional[Set[str]] = None,
|
||||
related_events: Optional[JsonDict] = None,
|
||||
) -> PushRuleEvaluator:
|
||||
event = FrozenEvent(
|
||||
|
@ -167,8 +165,7 @@ class PushRuleEvaluatorTestCase(unittest.TestCase):
|
|||
power_levels: Dict[str, Union[int, Dict[str, int]]] = {}
|
||||
return PushRuleEvaluator(
|
||||
_flatten_dict(event),
|
||||
has_mentions,
|
||||
user_mentions or set(),
|
||||
False,
|
||||
room_member_count,
|
||||
sender_power_level,
|
||||
cast(Dict[str, int], power_levels.get("notifications", {})),
|
||||
|
@ -204,32 +201,6 @@ class PushRuleEvaluatorTestCase(unittest.TestCase):
|
|||
# A display name with spaces should work fine.
|
||||
self.assertTrue(evaluator.matches(condition, "@user:test", "foo bar"))
|
||||
|
||||
def test_user_mentions(self) -> None:
|
||||
"""Check for user mentions."""
|
||||
condition = {"kind": "org.matrix.msc3952.is_user_mention"}
|
||||
|
||||
# No mentions shouldn't match.
|
||||
evaluator = self._get_evaluator({}, has_mentions=True)
|
||||
self.assertFalse(evaluator.matches(condition, "@user:test", None))
|
||||
|
||||
# An empty set shouldn't match
|
||||
evaluator = self._get_evaluator({}, has_mentions=True, user_mentions=set())
|
||||
self.assertFalse(evaluator.matches(condition, "@user:test", None))
|
||||
|
||||
# The Matrix ID appearing anywhere in the mentions list should match
|
||||
evaluator = self._get_evaluator(
|
||||
{}, has_mentions=True, user_mentions={"@user:test"}
|
||||
)
|
||||
self.assertTrue(evaluator.matches(condition, "@user:test", None))
|
||||
|
||||
evaluator = self._get_evaluator(
|
||||
{}, has_mentions=True, user_mentions={"@another:test", "@user:test"}
|
||||
)
|
||||
self.assertTrue(evaluator.matches(condition, "@user:test", None))
|
||||
|
||||
# Note that invalid data is tested at tests.push.test_bulk_push_rule_evaluator.TestBulkPushRuleEvaluator.test_mentions
|
||||
# since the BulkPushRuleEvaluator is what handles data sanitisation.
|
||||
|
||||
def _assert_matches(
|
||||
self, condition: JsonDict, content: JsonMapping, msg: Optional[str] = None
|
||||
) -> None:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue