Ejemplo n.º 1
0
    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),)
            )
Ejemplo n.º 2
0
    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),)
        )
Ejemplo n.º 3
0
    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,
            )
        )
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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()
        )