diff --git a/tests/appservice/test_appservice.py b/tests/appservice/test_appservice.py
index d12e4f2644..eb7becf725 100644
--- a/tests/appservice/test_appservice.py
+++ b/tests/appservice/test_appservice.py
@@ -18,6 +18,13 @@ from mock import Mock, PropertyMock
from tests import unittest
+def _regex(regex, exclusive=True):
+ return {
+ "regex": regex,
+ "exclusive": exclusive
+ }
+
+
class ApplicationServiceTestCase(unittest.TestCase):
def setUp(self):
@@ -36,21 +43,21 @@ class ApplicationServiceTestCase(unittest.TestCase):
def test_regex_user_id_prefix_match(self):
self.service.namespaces[ApplicationService.NS_USERS].append(
- "@irc_.*"
+ _regex("@irc_.*")
)
self.event.sender = "@irc_foobar:matrix.org"
self.assertTrue(self.service.is_interested(self.event))
def test_regex_user_id_prefix_no_match(self):
self.service.namespaces[ApplicationService.NS_USERS].append(
- "@irc_.*"
+ _regex("@irc_.*")
)
self.event.sender = "@someone_else:matrix.org"
self.assertFalse(self.service.is_interested(self.event))
def test_regex_room_member_is_checked(self):
self.service.namespaces[ApplicationService.NS_USERS].append(
- "@irc_.*"
+ _regex("@irc_.*")
)
self.event.sender = "@someone_else:matrix.org"
self.event.type = "m.room.member"
@@ -59,30 +66,78 @@ class ApplicationServiceTestCase(unittest.TestCase):
def test_regex_room_id_match(self):
self.service.namespaces[ApplicationService.NS_ROOMS].append(
- "!some_prefix.*some_suffix:matrix.org"
+ _regex("!some_prefix.*some_suffix:matrix.org")
)
self.event.room_id = "!some_prefixs0m3th1nGsome_suffix:matrix.org"
self.assertTrue(self.service.is_interested(self.event))
def test_regex_room_id_no_match(self):
self.service.namespaces[ApplicationService.NS_ROOMS].append(
- "!some_prefix.*some_suffix:matrix.org"
+ _regex("!some_prefix.*some_suffix:matrix.org")
)
self.event.room_id = "!XqBunHwQIXUiqCaoxq:matrix.org"
self.assertFalse(self.service.is_interested(self.event))
def test_regex_alias_match(self):
self.service.namespaces[ApplicationService.NS_ALIASES].append(
- "#irc_.*:matrix.org"
+ _regex("#irc_.*:matrix.org")
)
self.assertTrue(self.service.is_interested(
self.event,
aliases_for_event=["#irc_foobar:matrix.org", "#athing:matrix.org"]
))
+ def test_non_exclusive_alias(self):
+ self.service.namespaces[ApplicationService.NS_ALIASES].append(
+ _regex("#irc_.*:matrix.org", exclusive=False)
+ )
+ self.assertFalse(self.service.is_exclusive_alias(
+ "#irc_foobar:matrix.org"
+ ))
+
+ def test_non_exclusive_room(self):
+ self.service.namespaces[ApplicationService.NS_ROOMS].append(
+ _regex("!irc_.*:matrix.org", exclusive=False)
+ )
+ self.assertFalse(self.service.is_exclusive_room(
+ "!irc_foobar:matrix.org"
+ ))
+
+ def test_non_exclusive_user(self):
+ self.service.namespaces[ApplicationService.NS_USERS].append(
+ _regex("@irc_.*:matrix.org", exclusive=False)
+ )
+ self.assertFalse(self.service.is_exclusive_user(
+ "@irc_foobar:matrix.org"
+ ))
+
+ def test_exclusive_alias(self):
+ self.service.namespaces[ApplicationService.NS_ALIASES].append(
+ _regex("#irc_.*:matrix.org", exclusive=True)
+ )
+ self.assertTrue(self.service.is_exclusive_alias(
+ "#irc_foobar:matrix.org"
+ ))
+
+ def test_exclusive_user(self):
+ self.service.namespaces[ApplicationService.NS_USERS].append(
+ _regex("@irc_.*:matrix.org", exclusive=True)
+ )
+ self.assertTrue(self.service.is_exclusive_user(
+ "@irc_foobar:matrix.org"
+ ))
+
+ def test_exclusive_room(self):
+ self.service.namespaces[ApplicationService.NS_ROOMS].append(
+ _regex("!irc_.*:matrix.org", exclusive=True)
+ )
+ self.assertTrue(self.service.is_exclusive_room(
+ "!irc_foobar:matrix.org"
+ ))
+
def test_regex_alias_no_match(self):
self.service.namespaces[ApplicationService.NS_ALIASES].append(
- "#irc_.*:matrix.org"
+ _regex("#irc_.*:matrix.org")
)
self.assertFalse(self.service.is_interested(
self.event,
@@ -91,10 +146,10 @@ class ApplicationServiceTestCase(unittest.TestCase):
def test_regex_multiple_matches(self):
self.service.namespaces[ApplicationService.NS_ALIASES].append(
- "#irc_.*:matrix.org"
+ _regex("#irc_.*:matrix.org")
)
self.service.namespaces[ApplicationService.NS_USERS].append(
- "@irc_.*"
+ _regex("@irc_.*")
)
self.event.sender = "@irc_foobar:matrix.org"
self.assertTrue(self.service.is_interested(
@@ -104,10 +159,10 @@ class ApplicationServiceTestCase(unittest.TestCase):
def test_restrict_to_rooms(self):
self.service.namespaces[ApplicationService.NS_ROOMS].append(
- "!flibble_.*:matrix.org"
+ _regex("!flibble_.*:matrix.org")
)
self.service.namespaces[ApplicationService.NS_USERS].append(
- "@irc_.*"
+ _regex("@irc_.*")
)
self.event.sender = "@irc_foobar:matrix.org"
self.event.room_id = "!wibblewoo:matrix.org"
@@ -118,10 +173,10 @@ class ApplicationServiceTestCase(unittest.TestCase):
def test_restrict_to_aliases(self):
self.service.namespaces[ApplicationService.NS_ALIASES].append(
- "#xmpp_.*:matrix.org"
+ _regex("#xmpp_.*:matrix.org")
)
self.service.namespaces[ApplicationService.NS_USERS].append(
- "@irc_.*"
+ _regex("@irc_.*")
)
self.event.sender = "@irc_foobar:matrix.org"
self.assertFalse(self.service.is_interested(
@@ -132,10 +187,10 @@ class ApplicationServiceTestCase(unittest.TestCase):
def test_restrict_to_senders(self):
self.service.namespaces[ApplicationService.NS_ALIASES].append(
- "#xmpp_.*:matrix.org"
+ _regex("#xmpp_.*:matrix.org")
)
self.service.namespaces[ApplicationService.NS_USERS].append(
- "@irc_.*"
+ _regex("@irc_.*")
)
self.event.sender = "@xmpp_foobar:matrix.org"
self.assertFalse(self.service.is_interested(
@@ -146,7 +201,7 @@ class ApplicationServiceTestCase(unittest.TestCase):
def test_member_list_match(self):
self.service.namespaces[ApplicationService.NS_USERS].append(
- "@irc_.*"
+ _regex("@irc_.*")
)
join_list = [
Mock(
diff --git a/tests/storage/test_appservice.py b/tests/storage/test_appservice.py
index fc733d4c79..ca5b92ec85 100644
--- a/tests/storage/test_appservice.py
+++ b/tests/storage/test_appservice.py
@@ -50,9 +50,15 @@ class ApplicationServiceStoreTestCase(unittest.TestCase):
def test_update_and_retrieval_of_service(self):
url = "https://matrix.org/appservices/foobar"
hs_token = "hstok"
- user_regex = ["@foobar_.*:matrix.org"]
- alias_regex = ["#foobar_.*:matrix.org"]
- room_regex = []
+ user_regex = [
+ {"regex": "@foobar_.*:matrix.org", "exclusive": True}
+ ]
+ alias_regex = [
+ {"regex": "#foobar_.*:matrix.org", "exclusive": False}
+ ]
+ room_regex = [
+
+ ]
service = ApplicationService(
url=url, hs_token=hs_token, token=self.as_token, namespaces={
ApplicationService.NS_USERS: user_regex,
|