summaryrefslogtreecommitdiff
path: root/src/mailman/chains/tests/test_base.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/chains/tests/test_base.py')
-rw-r--r--src/mailman/chains/tests/test_base.py80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/mailman/chains/tests/test_base.py b/src/mailman/chains/tests/test_base.py
new file mode 100644
index 000000000..8d0d70449
--- /dev/null
+++ b/src/mailman/chains/tests/test_base.py
@@ -0,0 +1,80 @@
+# Copyright (C) 2014 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 base chain stuff."""
+
+from __future__ import absolute_import, print_function, unicode_literals
+
+__metaclass__ = type
+__all__ = [
+ 'TestMiscellaneous',
+ ]
+
+
+import unittest
+
+from mailman.chains.accept import AcceptChain
+from mailman.chains.base import Chain, Link
+from mailman.interfaces.chain import LinkAction
+from mailman.rules.any import Any
+
+
+
+class TestMiscellaneous(unittest.TestCase):
+ """Reach additional code coverage."""
+
+ def test_link_repr(self):
+ self.assertEqual(
+ repr(Link(Any)), '<Link "if any then LinkAction.defer">')
+
+ def test_link_repr_function(self):
+ def function():
+ pass
+ self.assertEqual(
+ repr(Link(Any, function=function)),
+ '<Link "if any then LinkAction.defer" function()>')
+
+ def test_link_repr_chain(self):
+ self.assertEqual(
+ repr(Link(Any, chain=AcceptChain)),
+ '<Link "if any then LinkAction.defer" accept>')
+
+ def test_link_repr_chain_and_function(self):
+ def function():
+ pass
+ self.assertEqual(
+ repr(Link(Any, chain=AcceptChain, function=function)),
+ '<Link "if any then LinkAction.defer" accept function()>')
+
+ def test_link_repr_chain_all(self):
+ def function():
+ pass
+ self.assertEqual(
+ repr(Link(Any, LinkAction.stop, AcceptChain, function)),
+ '<Link "if any then LinkAction.stop" accept function()>')
+
+ def test_flush(self):
+ # Test that we can flush the links of a chain.
+ chain = Chain('test', 'just a testing chain')
+ chain.append_link(Link(Any))
+ # Iterate over the links of the chain to prove there are some.
+ count = sum(1 for link in chain.get_iterator())
+ self.assertEqual(count, 1)
+ # Flush the chain; then there will be no links.
+ chain.flush()
+ count = sum(1 for link in chain.get_iterator())
+ self.assertEqual(count, 0)