Add unit tests

This commit is contained in:
Brendan Abolivier 2019-10-30 16:15:04 +00:00
parent 233b14ebe1
commit e7943f660a
No known key found for this signature in database
GPG key ID: 1E015C145F1916CD
2 changed files with 52 additions and 1 deletions

View file

@ -307,7 +307,7 @@ class Filter(object):
content = event.get("content", {}) content = event.get("content", {})
# check if there is a string url field in the content for filtering purposes # check if there is a string url field in the content for filtering purposes
contains_url = isinstance(content.get("url"), text_type) contains_url = isinstance(content.get("url"), text_type)
labels = content.get(LabelsField) labels = content.get(LabelsField, [])
return self.check_fields(room_id, sender, ev_type, labels, contains_url) return self.check_fields(room_id, sender, ev_type, labels, contains_url)

View file

@ -19,6 +19,7 @@ import jsonschema
from twisted.internet import defer from twisted.internet import defer
from synapse.api.constants import LabelsField
from synapse.api.errors import SynapseError from synapse.api.errors import SynapseError
from synapse.api.filtering import Filter from synapse.api.filtering import Filter
from synapse.events import FrozenEvent from synapse.events import FrozenEvent
@ -95,6 +96,8 @@ class FilteringTestCase(unittest.TestCase):
"types": ["m.room.message"], "types": ["m.room.message"],
"not_rooms": ["!726s6s6q:example.com"], "not_rooms": ["!726s6s6q:example.com"],
"not_senders": ["@spam:example.com"], "not_senders": ["@spam:example.com"],
"org.matrix.labels": ["#fun"],
"org.matrix.not_labels": ["#work"],
}, },
"ephemeral": { "ephemeral": {
"types": ["m.receipt", "m.typing"], "types": ["m.receipt", "m.typing"],
@ -320,6 +323,54 @@ class FilteringTestCase(unittest.TestCase):
) )
self.assertFalse(Filter(definition).check(event)) self.assertFalse(Filter(definition).check(event))
def test_filter_labels(self):
definition = {"org.matrix.labels": ["#fun"]}
event = MockEvent(
sender="@foo:bar",
type="m.room.message",
room_id="!secretbase:unknown",
content={
LabelsField: ["#fun"]
},
)
self.assertTrue(Filter(definition).check(event))
event = MockEvent(
sender="@foo:bar",
type="m.room.message",
room_id="!secretbase:unknown",
content={
LabelsField: ["#notfun"]
},
)
self.assertFalse(Filter(definition).check(event))
def test_filter_not_labels(self):
definition = {"org.matrix.not_labels": ["#fun"]}
event = MockEvent(
sender="@foo:bar",
type="m.room.message",
room_id="!secretbase:unknown",
content={
LabelsField: ["#fun"]
},
)
self.assertFalse(Filter(definition).check(event))
event = MockEvent(
sender="@foo:bar",
type="m.room.message",
room_id="!secretbase:unknown",
content={
LabelsField: ["#notfun"]
},
)
self.assertTrue(Filter(definition).check(event))
@defer.inlineCallbacks @defer.inlineCallbacks
def test_filter_presence_match(self): def test_filter_presence_match(self):
user_filter_json = {"presence": {"types": ["m.*"]}} user_filter_json = {"presence": {"types": ["m.*"]}}