def test_can_report_abuse_from_both_emails(self, send_abuse_report_message): call_count = 0 for email_address in ["*****@*****.**", "*****@*****.**"]: invite_to_group(self.group.pk, email_address, self.referent.pk) email = mail.outbox[-1] self.assertIn("/groupes/invitation/abus/", email.body) report_url = re.search( r"/groupes/invitation/abus/\?[%.A-za-z0-9&=-]+", email.body ).group(0) # following to make it work with auto_login res = self.client.get(report_url, follow=True) self.assertContains(res, "<h2>Signaler un email non sollicité</h2>") self.assertContains(res, "<form") if res.redirect_chain: res = self.client.post(res.redirect_chain[-1][0]) else: res = self.client.post(report_url) self.assertContains(res, "<h2>Merci de votre signalement</h2>") call_count += 1 self.assertEqual(send_abuse_report_message.delay.call_count, call_count) self.assertEqual( send_abuse_report_message.delay.call_args[0], (str(self.referent.id),) )
def test_can_report_abuse_when_not_subscrived(self, send_abuse_report_message): email_address = "*****@*****.**" invite_to_group(self.group.pk, email_address, self.referent.pk) email = mail.outbox[-1] self.assertIn("/groupes/invitation/abus/", email.body) report_url = re.search( r"/groupes/invitation/abus/\?[%.A-za-z0-9&=-]+", email.body ).group(0) # following to make it work with auto_login res = self.client.get(report_url, follow=True) self.assertContains(res, "Signaler un email non sollicité") self.assertContains(res, "<form") if res.redirect_chain: res = self.client.post(res.redirect_chain[-1][0]) else: res = self.client.post(report_url) self.assertContains(res, "Merci de votre signalement") send_abuse_report_message.delay.assert_called_once() self.assertEqual( send_abuse_report_message.delay.call_args[0], (str(self.referent.id),) )
def test_invitation_mail_is_sent_to_new_user(self): invite_to_group(self.group.pk, "*****@*****.**", self.referent.pk) self.assertEqual(len(mail.outbox), 1) email = mail.outbox[0] self.assertEqual( email.subject, "Vous avez été invité à rejoindre la France insoumise" ) self.assertIn( "Vous avez été invité à rejoindre la France insoumise et le groupe d'action « Nom du groupe » par un de ses animateurs", email.body, ) self.assertIn("groupes/inscription/?", email.body) join_url = re.search( "/groupes/inscription/\?[%.A-Za-z0-9&=_-]+", email.body ).group(0) res = self.client.get(join_url) self.assertEqual(res.status_code, 200) self.assertContains( res, "<h2>Vous avez été invité à rejoindre la France insoumise</h2>" ) res = self.client.post( join_url, data={ "location_zip": "33000", "subscribed": "Y", "join_support_group": "Y", }, ) self.assertEqual(res.status_code, 200) self.assertContains( res, "Vous venez de rejoindre la France insoumise. Nous en sommes très heureux.", ) self.assertTrue( Person.objects.filter(emails__address="*****@*****.**").exists() ) self.assertTrue( Membership.objects.filter( person__emails__address="*****@*****.**", supportgroup=self.group, ) )
def test_activity_is_created_for_existing_user(self): invite_to_group(self.group.pk, "*****@*****.**", self.referent.pk) self.assertEqual(len(mail.outbox), 0) activities = Activity.objects.filter(recipient=self.invitee) self.assertEqual(activities.count(), 1) activity = activities.get() self.assertEqual(activity.type, Activity.TYPE_GROUP_INVITATION) self.assertEqual(activity.supportgroup, self.group)
def test_invitation_mail_is_sent_to_existing_user(self): invite_to_group(self.group.pk, "*****@*****.**", self.referent.pk) self.assertEqual(len(mail.outbox), 1) email = mail.outbox[0] self.assertEqual( email.subject, "Vous avez été invité à rejoindre un groupe de la FI" ) self.assertIn( "Vous avez été invité à rejoindre le groupe d'action « Nom du groupe » par un de ses animateurs", email.body, ) self.assertIn("/groupes/invitation/?", email.body) join_url = re.search( "/groupes/invitation/\?[A-Za-z0-9&=_-]+", email.body ).group(0) res = self.client.get(join_url, follow=True) self.assertRedirects( res, reverse("view_group", args=(self.group.pk,)), fetch_redirect_response=False, ) self.assertTrue( any( "Vous venez de rejoindre le groupe d'action <em>Nom du groupe</em>" in m.message for m in get_messages(res.wsgi_request) ) ) self.assertTrue( Membership.objects.filter( person=self.invitee, supportgroup=self.group ).exists() )