diff options
| author | Barry Warsaw | 2016-01-25 11:46:18 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2016-01-25 15:08:43 -0500 |
| commit | e2e962ab7c298f6706ce50f981c2e27a0286c271 (patch) | |
| tree | 335ca754c5bbfada75c2ca00817595e4ac617e0e | |
| parent | 6c3df8293effb241c58a1c58aa53af29105501ad (diff) | |
| download | mailman-e2e962ab7c298f6706ce50f981c2e27a0286c271.tar.gz mailman-e2e962ab7c298f6706ce50f981c2e27a0286c271.tar.zst mailman-e2e962ab7c298f6706ce50f981c2e27a0286c271.zip | |
| -rw-r--r-- | src/mailman/chains/tests/test_accept.py | 76 | ||||
| -rw-r--r-- | src/mailman/chains/tests/test_reject.py | 4 |
2 files changed, 78 insertions, 2 deletions
diff --git a/src/mailman/chains/tests/test_accept.py b/src/mailman/chains/tests/test_accept.py new file mode 100644 index 000000000..0ec912d4f --- /dev/null +++ b/src/mailman/chains/tests/test_accept.py @@ -0,0 +1,76 @@ +# Copyright (C) 2016 by the Free Software Foundation, Inc. +# +# This file is part of GNU Mailman. +# +# GNU Mailman is free software: you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation, either version 3 of the License, or (at your option) +# any later version. +# +# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# GNU Mailman. If not, see <http://www.gnu.org/licenses/>. + +"""Test the accept chain.""" + +__all__ = [ + 'TestAccept', + ] + + +import unittest + +from mailman.app.lifecycle import create_list +from mailman.chains.base import Link +from mailman.config import config +from mailman.core.chains import process as process_chain +from mailman.interfaces.chain import AcceptEvent, IChain, LinkAction +from mailman.testing.helpers import ( + event_subscribers, specialized_message_from_string as mfs) +from mailman.testing.layers import ConfigLayer +from zope.interface import implementer + + +@implementer(IChain) +class MyChain: + name = 'mine' + description = 'A test chain' + + def get_links(self, mlist, msg, msgdata): + def set_hits(mlist, msg, msgdata): + msgdata['rule_hits'] = ['first', 'second', 'third'] + truth = config.rules['truth'] + yield Link(truth, LinkAction.run, function=set_hits) + yield Link(truth, LinkAction.jump, config.chains['accept']) + + + +class TestAccept(unittest.TestCase): + """Test the accept chain.""" + + layer = ConfigLayer + + def setUp(self): + self._mlist = create_list('ant@example.com') + self._msg = mfs("""\ +From: anne@example.com +To: test@example.com +Subject: Ignore + +""") + + def test_rule_hits(self): + config.chains['mine'] = MyChain() + self.addCleanup(config.chains.pop, 'mine') + hits = None + def handler(event): + nonlocal hits + if isinstance(event, AcceptEvent): + hits = event.msg['x-mailman-rule-hits'] + with event_subscribers(handler): + process_chain(self._mlist, self._msg, {}, start_chain='mine') + self.assertEqual(hits, 'first; second; third') diff --git a/src/mailman/chains/tests/test_reject.py b/src/mailman/chains/tests/test_reject.py index ed9763b4a..ae83d63bf 100644 --- a/src/mailman/chains/tests/test_reject.py +++ b/src/mailman/chains/tests/test_reject.py @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License along with # GNU Mailman. If not, see <http://www.gnu.org/licenses/>. -"""Testing the reject chain.""" +"""Test the reject chain.""" __all__ = [ 'TestReject', @@ -33,7 +33,7 @@ from mailman.testing.layers import ConfigLayer class TestReject(unittest.TestCase): - """Test the `mailman.app.bounces.bounce_message()` function.""" + """Test the reject chain.""" layer = ConfigLayer |
