def test_review_published_email_hook(self): """Testing the ReviewPublishedEmailHook""" class DummyHook(ReviewPublishedEmailHook): def get_to_field(self, to_field, review, user, review_request): return set([user]) def get_cc_field(self, cc_field, review, user, review_request): return set([user]) hook = DummyHook(self.extension) self.spy_on(hook.get_to_field) self.spy_on(hook.get_cc_field) admin = User.objects.get(username='******') review_request = self.create_review_request(public=True) review = self.create_review(review_request) call_kwargs = { 'user': admin, 'review_request': review_request, 'review': review, } with set_siteconfig_settings({'mail_send_review_mail': True}): review.publish(admin) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].to, [get_email_address_for_user(admin)]) self.assertTrue(hook.get_to_field.spy.called) self.assertEqual(hook.get_to_field.spy.calls[0].kwargs, call_kwargs) self.assertTrue(hook.get_cc_field.spy.called) self.assertEqual(hook.get_cc_field.spy.calls[0].kwargs, call_kwargs)
def testReviewReplyEmail(self): """Testing sending an e-mail when replying to a review""" review_request = ReviewRequest.objects.get( summary="Add permission checking for JSON API") review_request.publish(review_request.submitter) base_review = Review.objects.get(review_request=review_request, user__username="******", base_reply_to__isnull=True) base_review.publish() # Clear the outbox. mail.outbox = [] reply = Review.objects.get(base_reply_to=base_review, user__username="******") reply.publish() from_email = get_email_address_for_user(reply.user) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual( mail.outbox[0].subject, "Re: Review Request 3: Add permission checking " + "for JSON API") self.assertValidRecipients(["admin", "doc", "dopey", "admin"], []) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(reply.user))
def testReviewReplyEmail(self): """Testing sending an e-mail when replying to a review""" review_request = ReviewRequest.objects.get( summary="Add permission checking for JSON API") review_request.publish(review_request.submitter) base_review = Review.objects.get(review_request=review_request, user__username="******", base_reply_to__isnull=True) base_review.publish() # Clear the outbox. mail.outbox = [] reply = Review.objects.get(base_reply_to=base_review, user__username="******") reply.publish() from_email = get_email_address_for_user(reply.user) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, from_email) self.assertEqual(mail.outbox[0].subject, "Re: Review Request: Add permission checking " + "for JSON API") self.assertValidRecipients(["admin", "doc", "dopey", "admin"], []) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(reply.user))
def test_add_reviewer_review_request_email(self): """Testing limited e-mail recipients when adding a reviewer to an existing review request """ review_request = self.create_review_request( summary='My test review request', public=True) review_request.email_message_id = "junk" review_request.target_people.add(User.objects.get(username='******')) review_request.save() draft = ReviewRequestDraft.create(review_request) draft.target_people.add(User.objects.get(username='******')) draft.publish(user=review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Re: Review Request %s: My test review request' % review_request.pk) # The only included users should be the submitter and 'grumpy' (not # 'dopey', since he was already included on the review request earlier) self.assertValidRecipients([review_request.submitter.username, 'grumpy']) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_update_review_request_email(self): """Testing sending an e-mail when updating a review request""" group = Group.objects.create(name='devgroup', mailing_list='*****@*****.**') review_request = self.create_review_request( summary='My test review request') review_request.target_groups.add(group) review_request.email_message_id = "junk" review_request.publish(review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Re: Review Request %s: My test review request' % review_request.pk) self.assertValidRecipients([review_request.submitter.username], ['devgroup']) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_review_published_email_hook(self): """Testing the ReviewPublishedEmailHook""" class DummyHook(ReviewPublishedEmailHook): def get_to_field(self, to_field, review, user, review_request): return set([user]) def get_cc_field(self, cc_field, review, user, review_request): return set([user]) hook = DummyHook(self.extension) self.spy_on(hook.get_to_field) self.spy_on(hook.get_cc_field) admin = User.objects.get(username='******') review_request = self.create_review_request(public=True) review = self.create_review(review_request) call_kwargs = { 'user': admin, 'review_request': review_request, 'review': review, } with set_siteconfig_settings({'mail_send_review_mail': True}): review.publish(admin) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].to, [get_email_address_for_user(admin)]) self.assertTrue(hook.get_to_field.spy.called) self.assertEqual(hook.get_to_field.spy.calls[0].kwargs, call_kwargs) self.assertTrue(hook.get_cc_field.spy.called) self.assertEqual(hook.get_cc_field.spy.calls[0].kwargs, call_kwargs)
def test_review_reply_email(self): """Testing sending an e-mail when replying to a review""" review_request = self.create_review_request( summary='My test review request') review_request.publish(review_request.submitter) base_review = self.create_review(review_request=review_request) base_review.publish() # Clear the outbox. mail.outbox = [] reply = self.create_reply(base_review) reply.publish() from_email = get_email_address_for_user(reply.user) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Re: Review Request %s: My test review request' % review_request.pk) self.assertValidRecipients([ review_request.submitter.username, base_review.user.username, reply.user.username, ]) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(reply.user))
def test_review_reply_email(self): """Testing sending an e-mail when replying to a review""" review_request = self.create_review_request( summary='My test review request') review_request.publish(review_request.submitter) base_review = self.create_review(review_request=review_request) base_review.publish() # Clear the outbox. mail.outbox = [] reply = self.create_reply(base_review) reply.publish() from_email = get_email_address_for_user(reply.user) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Re: Review Request %s: My test review request' % review_request.pk) self.assertValidRecipients([ review_request.submitter.username, base_review.user.username, reply.user.username, ]) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(reply.user))
def test_add_reviewer_review_request_email(self): """Testing limited e-mail recipients when adding a reviewer to an existing review request """ review_request = self.create_review_request( summary='My test review request', public=True) review_request.email_message_id = "junk" review_request.target_people.add(User.objects.get(username='******')) review_request.save() draft = ReviewRequestDraft.create(review_request) draft.target_people.add(User.objects.get(username='******')) draft.publish(user=review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Re: Review Request %s: My test review request' % review_request.pk) # The only included users should be the submitter and 'grumpy' (not # 'dopey', since he was already included on the review request earlier) self.assertValidRecipients([review_request.submitter.username, 'grumpy']) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_limited_recipients_other_fields(self): """Testing that recipient limiting only happens when adding reviewers """ review_request = self.create_review_request( summary='My test review request', public=True) review_request.email_message_id = "junk" review_request.target_people.add(User.objects.get(username='******')) review_request.save() draft = ReviewRequestDraft.create(review_request) draft.summary = 'Changed summary' draft.target_people.add(User.objects.get(username='******')) draft.publish(user=review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Re: Review Request %s: Changed summary' % review_request.pk) self.assertValidRecipients([review_request.submitter.username, 'dopey', 'grumpy']) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_limited_recipients_other_fields(self): """Testing that recipient limiting only happens when adding reviewers """ review_request = self.create_review_request( summary='My test review request', public=True) review_request.email_message_id = "junk" review_request.target_people.add(User.objects.get(username='******')) review_request.save() draft = ReviewRequestDraft.create(review_request) draft.summary = 'Changed summary' draft.target_people.add(User.objects.get(username='******')) draft.publish(user=review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Re: Review Request %s: Changed summary' % review_request.pk) self.assertValidRecipients([review_request.submitter.username, 'dopey', 'grumpy']) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_update_review_request_email(self): """Testing sending an e-mail when updating a review request""" group = Group.objects.create(name='devgroup', mailing_list='*****@*****.**') review_request = self.create_review_request( summary='My test review request') review_request.target_groups.add(group) review_request.email_message_id = "junk" review_request.publish(review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Re: Review Request %s: My test review request' % review_request.pk) self.assertValidRecipients([review_request.submitter.username], ['devgroup']) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_local_site_user_filters(self): """Testing sending e-mails and filtering out users not on a local site """ test_site = LocalSite.objects.create(name=self.local_site_name) site_user1 = User.objects.create(username="******", email="*****@*****.**") site_user2 = User.objects.create(username="******", email="*****@*****.**") site_user3 = User.objects.create(username="******", email="*****@*****.**") site_user4 = User.objects.create(username="******", email="*****@*****.**") site_user5 = User.objects.create(username="******", email="*****@*****.**") non_site_user1 = User.objects.create(username="******", email="*****@*****.**") non_site_user2 = User.objects.create(username="******", email="*****@*****.**") non_site_user3 = User.objects.create(username="******", email="*****@*****.**") test_site.admins.add(site_user1) test_site.users.add(site_user2) test_site.users.add(site_user3) test_site.users.add(site_user4) test_site.users.add(site_user5) group = Group.objects.create(name="my-group", display_name="My Group", local_site=test_site) group.users.add(site_user5) group.users.add(non_site_user3) review_request = self.create_review_request(with_local_site=True, local_id=123) review_request.email_message_id = "junk" review_request.target_people = [site_user1, site_user2, site_user3, non_site_user1] review_request.target_groups = [group] review = Review.objects.create(review_request=review_request, user=site_user4) review.publish() review = Review.objects.create(review_request=review_request, user=non_site_user2) review.publish() from_email = get_email_address_for_user(review_request.submitter) # Now that we're set up, send another e-mail. mail.outbox = [] review_request.publish(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers["From"], from_email) self.assertValidRecipients( ["site_user1", "site_user2", "site_user3", "site_user4", "site_user5", review_request.submitter.username], [], ) message = mail.outbox[0].message() self.assertEqual(message["Sender"], self._get_sender(review_request.submitter))
def assertValidRecipients(self, user_list, group_list): recipient_list = mail.outbox[0].to + mail.outbox[0].cc self.assertEqual(len(recipient_list), len(user_list) + len(group_list)) for user in user_list: self.assert_(get_email_address_for_user( User.objects.get(username=user)) in recipient_list, u"user %s was not found in the recipient list" % user) groups = Group.objects.filter(name__in=group_list, local_site=None) for group in groups: for address in get_email_addresses_for_group(group): self.assert_(address in recipient_list, u"group %s was not found in the recipient list" % address)
def assertValidRecipients(self, user_list, group_list): recipient_list = mail.outbox[0].to + mail.outbox[0].cc self.assertEqual(len(recipient_list), len(user_list) + len(group_list)) for user in user_list: self.assert_(get_email_address_for_user( User.objects.get(username=user)) in recipient_list, u"user %s was not found in the recipient list" % user) groups = Group.objects.filter(name__in=group_list, local_site=None) for group in groups: for address in get_email_addresses_for_group(group): self.assert_(address in recipient_list, u"group %s was not found in the recipient list" % address)
def testNewReviewRequestEmail(self): """Testing sending an e-mail when creating a new review request""" review_request = ReviewRequest.objects.get(summary="Made e-mail improvements") review_request.publish(review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers["From"], from_email) self.assertEqual(mail.outbox[0].subject, "Review Request 4: Made e-mail improvements") self.assertValidRecipients(["grumpy", "doc"], []) message = mail.outbox[0].message() print review_request.submitter self.assertEqual(message["Sender"], self._get_sender(review_request.submitter))
def testUpdateReviewRequestEmail(self): """Testing sending an e-mail when updating a review request""" review_request = ReviewRequest.objects.get(summary="Update for cleaned_data changes") review_request.email_message_id = "junk" review_request.publish(review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers["From"], from_email) self.assertEqual(mail.outbox[0].subject, "Re: Review Request 2: Update for cleaned_data " "changes") self.assertValidRecipients(["dopey", "doc"], ["devgroup"]) message = mail.outbox[0].message() self.assertEqual(message["Sender"], self._get_sender(review_request.submitter))
def test_new_review_request_email(self): """Testing sending an e-mail when creating a new review request""" review_request = self.create_review_request(summary="My test review request") review_request.target_people.add(User.objects.get(username="******")) review_request.target_people.add(User.objects.get(username="******")) review_request.publish(review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers["From"], from_email) self.assertEqual(mail.outbox[0].subject, "Review Request %s: My test review request" % review_request.pk) self.assertValidRecipients(["grumpy", "doc"]) message = mail.outbox[0].message() self.assertEqual(message["Sender"], self._get_sender(review_request.submitter))
def testNewReviewRequestEmail(self): """Testing sending an e-mail when creating a new review request""" review_request = ReviewRequest.objects.get( summary="Made e-mail improvements") review_request.publish(review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, from_email) self.assertEqual(mail.outbox[0].subject, "Review Request: Made e-mail improvements") self.assertValidRecipients(["grumpy", "doc"], []) message = mail.outbox[0].message() print review_request.submitter self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_review_request_email_with_unicode_summary(self): """Testing sending a review request e-mail with a unicode subject""" review_request = self.create_review_request() review_request.summary = '\ud83d\ude04'.encode('utf-8') review_request.target_people.add(User.objects.get(username='******')) review_request.target_people.add(User.objects.get(username='******')) review_request.publish(review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Review Request %s: \ud83d\ude04' % review_request.pk) self.assertValidRecipients(['grumpy', 'doc'])
def test_review_email_with_site(self): """Testing sending an e-mail when replying to a review request on a Local Site """ review_request = self.create_review_request( summary='My test review request', with_local_site=True) review_request.target_people.add(User.objects.get(username='******')) review_request.target_people.add(User.objects.get(username='******')) review_request.publish(review_request.submitter) # Ensure all the reviewers are on the site. site = review_request.local_site site.users.add(*list(review_request.target_people.all())) # Clear the outbox. mail.outbox = [] review = self.create_review(review_request=review_request) review.publish() from_email = get_email_address_for_user(review.user) self.assertEqual(len(mail.outbox), 1) email = mail.outbox[0] self.assertEqual(email.from_email, self.sender) self.assertEqual(email.extra_headers['From'], from_email) self.assertEqual(email.extra_headers['X-ReviewBoard-URL'], 'http://example.com/s/local-site-1/') self.assertEqual(email.extra_headers['X-ReviewRequest-URL'], 'http://example.com/s/local-site-1/r/%s/' % review_request.display_id) self.assertEqual(email.subject, 'Re: Review Request %s: My test review request' % review_request.display_id) self.assertValidRecipients([ review_request.submitter.username, 'grumpy', 'doc', ]) message = email.message() self.assertEqual(message['Sender'], self._get_sender(review.user))
def test_review_email_with_site(self): """Testing sending an e-mail when replying to a review request on a Local Site """ review_request = self.create_review_request( summary='My test review request', with_local_site=True) review_request.target_people.add(User.objects.get(username='******')) review_request.target_people.add(User.objects.get(username='******')) review_request.publish(review_request.submitter) # Ensure all the reviewers are on the site. site = review_request.local_site site.users.add(*list(review_request.target_people.all())) # Clear the outbox. mail.outbox = [] review = self.create_review(review_request=review_request) review.publish() from_email = get_email_address_for_user(review.user) self.assertEqual(len(mail.outbox), 1) email = mail.outbox[0] self.assertEqual(email.from_email, self.sender) self.assertEqual(email.extra_headers['From'], from_email) self.assertEqual(email.extra_headers['X-ReviewBoard-URL'], 'http://example.com/s/local-site-1/') self.assertEqual(email.extra_headers['X-ReviewRequest-URL'], 'http://example.com/s/local-site-1/r/%s/' % review_request.display_id) self.assertEqual(email.subject, 'Re: Review Request %s: My test review request' % review_request.display_id) self.assertValidRecipients([ review_request.submitter.username, 'grumpy', 'doc', ]) message = email.message() self.assertEqual(message['Sender'], self._get_sender(review.user))
def testUpdateReviewRequestEmail(self): """Testing sending an e-mail when updating a review request""" review_request = ReviewRequest.objects.get( summary="Update for cleaned_data changes") review_request.email_message_id = "junk" review_request.publish(review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, "Re: Review Request 2: Update for cleaned_data changes") self.assertValidRecipients(["dopey", "doc"], ["devgroup"]) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_new_review_request_email(self): """Testing sending an e-mail when creating a new review request""" review_request = self.create_review_request( summary='My test review request') review_request.target_people.add(User.objects.get(username='******')) review_request.target_people.add(User.objects.get(username='******')) review_request.publish(review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Review Request %s: My test review request' % review_request.pk) self.assertValidRecipients(['grumpy', 'doc']) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_new_review_request_email(self): """Testing sending an e-mail when creating a new review request""" review_request = self.create_review_request( summary='My test review request') review_request.target_people.add(User.objects.get(username='******')) review_request.target_people.add(User.objects.get(username='******')) review_request.publish(review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Review Request %s: My test review request' % review_request.pk) self.assertValidRecipients(['grumpy', 'doc']) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_add_group_review_request_email(self): """Testing limited e-mail recipients when adding a group to an existing review request """ existing_group = Group.objects.create( name='existing', mailing_list='*****@*****.**') review_request = self.create_review_request( summary='My test review request', public=True) review_request.email_message_id = "junk" review_request.target_groups.add(existing_group) review_request.target_people.add(User.objects.get(username='******')) review_request.save() new_group = Group.objects.create(name='devgroup', mailing_list='*****@*****.**') draft = ReviewRequestDraft.create(review_request) draft.target_groups.add(new_group) draft.publish(user=review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Re: Review Request %s: My test review request' % review_request.pk) # The only included users should be the submitter and 'devgroup' (not # 'dopey' or 'existing', since they were already included on the # review request earlier) self.assertValidRecipients([review_request.submitter.username], ['devgroup']) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_add_group_review_request_email(self): """Testing limited e-mail recipients when adding a group to an existing review request """ existing_group = Group.objects.create( name='existing', mailing_list='*****@*****.**') review_request = self.create_review_request( summary='My test review request', public=True) review_request.email_message_id = "junk" review_request.target_groups.add(existing_group) review_request.target_people.add(User.objects.get(username='******')) review_request.save() new_group = Group.objects.create(name='devgroup', mailing_list='*****@*****.**') draft = ReviewRequestDraft.create(review_request) draft.target_groups.add(new_group) draft.publish(user=review_request.submitter) from_email = get_email_address_for_user(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertEqual(mail.outbox[0].subject, 'Re: Review Request %s: My test review request' % review_request.pk) # The only included users should be the submitter and 'devgroup' (not # 'dopey' or 'existing', since they were already included on the # review request earlier) self.assertValidRecipients([review_request.submitter.username], ['devgroup']) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))
def test_review_email(self): """Testing sending an e-mail when replying to a review request""" review_request = self.create_review_request( summary='My test review request') review_request.target_people.add(User.objects.get(username='******')) review_request.target_people.add(User.objects.get(username='******')) review_request.publish(review_request.submitter) # Clear the outbox. mail.outbox = [] review = self.create_review(review_request=review_request) review.publish() from_email = get_email_address_for_user(review.user) self.assertEqual(len(mail.outbox), 1) email = mail.outbox[0] self.assertEqual(email.from_email, self.sender) self.assertEqual(email.headers['From'], from_email) self.assertEqual(email.headers['X-ReviewBoard-URL'], 'http://example.com/') self.assertEqual(email.headers['X-ReviewRequest-URL'], 'http://example.com/r/%s/' % review_request.display_id) self.assertEqual(email.subject, 'Re: Review Request %s: My test review request' % review_request.display_id) self.assertValidRecipients([ review_request.submitter.username, 'grumpy', 'doc', ]) message = email.message() self.assertEqual(message['Sender'], self._get_sender(review.user))
def test_local_site_user_filters(self): """Testing sending e-mails and filtering out users not on a local site """ test_site = LocalSite.objects.create(name=self.local_site_name) site_user1 = User.objects.create( username='******', email='*****@*****.**') site_user2 = User.objects.create( username='******', email='*****@*****.**') site_user3 = User.objects.create( username='******', email='*****@*****.**') site_user4 = User.objects.create( username='******', email='*****@*****.**') site_user5 = User.objects.create( username='******', email='*****@*****.**') non_site_user1 = User.objects.create( username='******', email='*****@*****.**') non_site_user2 = User.objects.create( username='******', email='*****@*****.**') non_site_user3 = User.objects.create( username='******', email='*****@*****.**') test_site.admins.add(site_user1) test_site.users.add(site_user2) test_site.users.add(site_user3) test_site.users.add(site_user4) test_site.users.add(site_user5) group = Group.objects.create(name='my-group', display_name='My Group', local_site=test_site) group.users.add(site_user5) group.users.add(non_site_user3) review_request = self.create_review_request(with_local_site=True, local_id=123) review_request.email_message_id = "junk" review_request.target_people = [site_user1, site_user2, site_user3, non_site_user1] review_request.target_groups = [group] review = Review.objects.create(review_request=review_request, user=site_user4) review.publish() review = Review.objects.create(review_request=review_request, user=non_site_user2) review.publish() from_email = get_email_address_for_user(review_request.submitter) # Now that we're set up, send another e-mail. mail.outbox = [] review_request.publish(review_request.submitter) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, self.sender) self.assertEqual(mail.outbox[0].extra_headers['From'], from_email) self.assertValidRecipients( ['site_user1', 'site_user2', 'site_user3', 'site_user4', 'site_user5', review_request.submitter.username], []) message = mail.outbox[0].message() self.assertEqual(message['Sender'], self._get_sender(review_request.submitter))