summaryrefslogtreecommitdiff
path: root/src/mailman/model/tests
diff options
context:
space:
mode:
authorAurélien Bompard2016-04-25 19:58:44 +0200
committerAurélien Bompard2016-04-26 00:22:47 +0200
commitbbaf4977a0099c5c0f27f37e5789598e82549585 (patch)
tree7d00d27eafbb6176e4b8b03b1ba0ca7a8c6e579b /src/mailman/model/tests
parent1656e00a6913a05140e2571e5cfb01576cbe2c31 (diff)
downloadmailman-bbaf4977a0099c5c0f27f37e5789598e82549585.tar.gz
mailman-bbaf4977a0099c5c0f27f37e5789598e82549585.tar.zst
mailman-bbaf4977a0099c5c0f27f37e5789598e82549585.zip
Fix difference between iter and count in find_members
In `SubscriptionService._find_members()`, only select preferred addresses. Fixes #227
Diffstat (limited to 'src/mailman/model/tests')
-rw-r--r--src/mailman/model/tests/test_subscriptions.py31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/mailman/model/tests/test_subscriptions.py b/src/mailman/model/tests/test_subscriptions.py
index 3b3a7a7e5..ede1ed1ca 100644
--- a/src/mailman/model/tests/test_subscriptions.py
+++ b/src/mailman/model/tests/test_subscriptions.py
@@ -71,8 +71,9 @@ class TestSubscriptionService(unittest.TestCase):
self.assertEqual(len(members), 1)
self.assertEqual(members[0].user, user)
- def test_find_member_user_secondary_address(self):
- # Find user-based memberships using a secondary address.
+ def test_wont_find_member_user_secondary_address(self):
+ # Finding user-based memberships using a secondary address is not
+ # supported; the subscription is not returned.
user = self._user_manager.create_user(
'anne@example.com', 'Anne User')
set_preferred(user)
@@ -84,8 +85,7 @@ class TestSubscriptionService(unittest.TestCase):
self._mlist.subscribe(user)
# Search for the secondary address.
members = self._service.find_members('anne2@example.com')
- self.assertEqual(len(members), 1)
- self.assertEqual(members[0].user, user)
+ self.assertEqual(len(members), 0)
def test_wont_find_member_secondary_address(self):
# A user is subscribed with one of their address, and a search is
@@ -396,3 +396,26 @@ class TestSubscriptionService(unittest.TestCase):
self.assertEqual(
[address.email for address in bee_owners.addresses],
['anne_1@example.com'])
+
+ def test_find_members_issue_227(self):
+ # https://gitlab.com/mailman/mailman/issues/227
+ user = self._user_manager.create_user(
+ 'anne@example.com', 'Anne User')
+ address = set_preferred(user)
+ # Create a secondary address.
+ address_2 = self._user_manager.create_address(
+ 'anne2@example.com', 'Anne User 2')
+ address_2.user = user
+ # Subscribe the user.
+ self._mlist.subscribe(user)
+ call_args_list = [
+ dict(list_id=self._mlist.list_id), # Search by list
+ dict(subscriber=user.user_id), # Search by user
+ dict(subscriber='anne@example.com'), # Search by address
+ dict(subscriber='anne*'), # Search by fuzzy address
+ ]
+ for call_args in call_args_list:
+ members = self._service.find_members(**call_args)
+ self.assertEqual(len(list(members)), 1)
+ self.assertEqual(len(members), 1)
+ self.assertEqual(members[0].user, user)