--- a/Allura/allura/tests/model/test_notification.py
+++ b/Allura/allura/tests/model/test_notification.py
@@ -2,7 +2,7 @@
from datetime import timedelta
from pylons import g, c
-from nose.tools import assert_equal
+from nose.tools import assert_equal, assert_in
from ming.orm import ThreadLocalORMSession
from alluratest.controller import setup_basic_test, setup_global_objects, REGISTRY
@@ -98,26 +98,32 @@
assert len(mbox.queue) == 1
def test_email(self):
- self._subscribe()
+ self._subscribe() # as current user: test-admin
+ user2 = M.User.query.get(username='test-user-2')
+ self._subscribe(user=user2)
self._post_notification()
ThreadLocalORMSession.flush_all()
assert_equal(M.Notification.query.get()['from_address'], '"Test Admin" <test-admin@users.localhost>')
- assert M.Mailbox.query.find().count()==1
+ assert_equal(M.Mailbox.query.find().count(), 2)
M.MonQTask.run_ready() # sends the notification out into "mailboxes"
- assert_equal(M.Notification.query.get(), None)
- mbox = M.Mailbox.query.get()
- assert len(mbox.queue) == 1
-
- M.Mailbox.fire_ready()
- task = M.MonQTask.get()
- for addr in c.user.email_addresses:
- if addr in task.kwargs['fromaddr']: break
- else:
- assert False, 'From address is wrong: %s' % task.kwargs['fromaddr']
- assert task.kwargs['text'].startswith('WikiPage Home modified by Test Admin')
- assert 'you indicated interest in ' in task.kwargs['text']
+ mboxes = M.Mailbox.query.find().all()
+ assert_equal(len(mboxes), 2)
+ assert_equal(len(mboxes[0].queue), 1)
+ assert_equal(len(mboxes[1].queue), 1)
+
+ M.Mailbox.fire_ready()
+ email_tasks = M.MonQTask.query.find({'state': 'ready'}).all()
+ assert_equal(len(email_tasks), 2) # make sure both subscribers will get an email
+
+ first_destinations = [e.kwargs['destinations'][0] for e in email_tasks]
+ assert_in(str(c.user._id), first_destinations)
+ assert_in(str(user2._id), first_destinations)
+ assert_equal(email_tasks[0].kwargs['fromaddr'], '"Test Admin" <test-admin@users.localhost>')
+ assert_equal(email_tasks[1].kwargs['fromaddr'], '"Test Admin" <test-admin@users.localhost>')
+ assert email_tasks[0].kwargs['text'].startswith('WikiPage Home modified by Test Admin')
+ assert 'you indicated interest in ' in email_tasks[0].kwargs['text']
def test_permissions(self):
# Notification should only be delivered if user has read perms on the