~abompard/mailman/moderation_reasons

« back to all changes in this revision

Viewing changes to src/mailman/rules/tests/test_moderation.py

  • Committer: Aurelien Bompard
  • Date: 2014-04-17 20:16:14 UTC
  • Revision ID: abompard@redhat.com-20140417201614-lu003t6awfju7nfo
Use real reasons when a message is held

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
import unittest
29
29
 
30
30
from mailman.app.lifecycle import create_list
 
31
from mailman.interfaces.action import Action
31
32
from mailman.interfaces.member import MemberRole
32
33
from mailman.interfaces.usermanager import IUserManager
33
34
from mailman.rules import moderation
76
77
        # Bill is not a member.
77
78
        bill_member = self._mlist.members.get_member('bill@example.com')
78
79
        self.assertIsNone(bill_member)
 
80
 
 
81
    def test_moderation_reason(self):
 
82
        user_manager = getUtility(IUserManager)
 
83
        anne = user_manager.create_address('anne@example.com')
 
84
        msg = mfs("""\
 
85
From: anne@example.com
 
86
To: test@example.com
 
87
Subject: A test message
 
88
Message-ID: <ant>
 
89
MIME-Version: 1.0
 
90
 
 
91
A message body.
 
92
""")
 
93
        # Anne is in the message's senders list.
 
94
        self.assertIn('anne@example.com', msg.senders)
 
95
        # Now run the rule
 
96
        rule = moderation.NonmemberModeration()
 
97
        msgdata = {}
 
98
        result = rule.check(self._mlist, msg, msgdata)
 
99
        self.assertTrue(result, 'NonmemberModeration rule should hit')
 
100
        # The reason for moderation should be in the msgdata
 
101
        self.assertTrue("moderation_reasons" in msgdata)
 
102
        self.assertEqual(len(msgdata["moderation_reasons"]), 1)
 
103
        # Now make Anne a moderated member
 
104
        anne_member = self._mlist.subscribe(anne, MemberRole.member)
 
105
        anne_member.moderation_action = Action.hold
 
106
        # ...and run the rule again
 
107
        rule = moderation.MemberModeration()
 
108
        msgdata = {}
 
109
        result = rule.check(self._mlist, msg, msgdata)
 
110
        self.assertTrue(result, 'MemberModeration rule should hit')
 
111
        # The reason for moderation should be in the msgdata
 
112
        self.assertTrue("moderation_reasons" in msgdata)
 
113
        self.assertEqual(len(msgdata["moderation_reasons"]), 1)