summaryrefslogtreecommitdiff
path: root/src/mailman/rules/tests/test_moderation.py
diff options
context:
space:
mode:
authorAurélien Bompard2016-02-09 12:23:38 +0100
committerBarry Warsaw2016-03-31 18:29:27 -0400
commit71cfeda5fb51c49fd87b6d34e00221a3725b9ec0 (patch)
treed571db90e7010643ea7cca81ab91eaee89e0f378 /src/mailman/rules/tests/test_moderation.py
parent011d278abcc25d417673f70a4eac0a8a78137d95 (diff)
downloadmailman-71cfeda5fb51c49fd87b6d34e00221a3725b9ec0.tar.gz
mailman-71cfeda5fb51c49fd87b6d34e00221a3725b9ec0.tar.zst
mailman-71cfeda5fb51c49fd87b6d34e00221a3725b9ec0.zip
Diffstat (limited to 'src/mailman/rules/tests/test_moderation.py')
-rw-r--r--src/mailman/rules/tests/test_moderation.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/mailman/rules/tests/test_moderation.py b/src/mailman/rules/tests/test_moderation.py
index df1658792..3e80aeeb5 100644
--- a/src/mailman/rules/tests/test_moderation.py
+++ b/src/mailman/rules/tests/test_moderation.py
@@ -144,3 +144,60 @@ A message body.
self.assertEqual(
msgdata['moderation_action'], action_name,
'Wrong action for {}: {}'.format(address, action_name))
+
+ def test_nonmember_fallback_to_list_defaults(self):
+ # https://gitlab.com/mailman/mailman/issues/189
+ self._mlist.default_nonmember_action = Action.hold
+ user_manager = getUtility(IUserManager)
+ user_manager.create_address('anne@example.com')
+ rule = moderation.NonmemberModeration()
+ msg = mfs("""\
+From: anne@example.com
+To: test@example.com
+Subject: A test message
+Message-ID: <ant>
+MIME-Version: 1.0
+
+A message body.
+""")
+ # First, the message should get held
+ msgdata = {}
+ result = rule.check(self._mlist, msg, msgdata)
+ self.assertTrue(result)
+ self.assertEqual(msgdata.get('moderation_action'), 'hold')
+ # Then the list's default nonmember action is changed
+ self._mlist.default_nonmember_action = Action.discard
+ msg.replace_header('Message-ID', '<ant2>')
+ # This time, the message should be discarded
+ result = rule.check(self._mlist, msg, msgdata)
+ self.assertTrue(result)
+ self.assertEqual(msgdata.get('moderation_action'), 'discard')
+
+ def test_member_fallback_to_list_defaults(self):
+ # https://gitlab.com/mailman/mailman/issues/189
+ self._mlist.default_member_action = Action.accept
+ user_manager = getUtility(IUserManager)
+ anne = user_manager.create_address('anne@example.com')
+ self._mlist.subscribe(anne, MemberRole.member)
+ rule = moderation.MemberModeration()
+ msg = mfs("""\
+From: anne@example.com
+To: test@example.com
+Subject: A test message
+Message-ID: <ant>
+MIME-Version: 1.0
+
+A message body.
+""")
+ # First, the message should get held
+ msgdata = {}
+ result = rule.check(self._mlist, msg, msgdata)
+ self.assertTrue(result)
+ self.assertEqual(msgdata.get('moderation_action'), 'accept')
+ # Then the list's default nonmember action is changed
+ self._mlist.default_member_action = Action.hold
+ msg.replace_header('Message-ID', '<ant2>')
+ # This time, the message should be discarded
+ result = rule.check(self._mlist, msg, msgdata)
+ self.assertTrue(result)
+ self.assertEqual(msgdata.get('moderation_action'), 'hold')