예제 #1
0
    def test_send_intent_to_ship_email_with_risk_fields(self):
        risk_description = "Hardcoded fictitious technical challenge"
        experiment = ExperimentFactory.create(
            name="Experiment",
            slug="experiment",
            risks="Hardcoded fictitious risk",
            risk_technical_description=risk_description,
            population_percent=10.0,
            firefox_min_version="56.0",
            firefox_max_version="",
        )
        send_intent_to_ship_email(experiment.id)

        sent_email = mail.outbox[-1]
        self.verify_subject(experiment, sent_email)

        bug_url = settings.BUGZILLA_DETAIL_URL.format(
            id=experiment.bugzilla_id)
        expected_locales = self.format_locales(experiment)
        expected_countries = self.format_countries(experiment)
        expected_version_channel = self.format_version_and_channel(experiment)

        expected_body = (f"""
Hello Release Drivers,

This request is coming from information entered in Experimenter.
Please reach out to the person(s) on cc: with any questions, details,
or discussion. They will email an update if any of the key information
changes. Otherwise they will reach out once the study has fully passed
QA for Release Management sign-off.

Experimenter Bug: {bug_url}
Experimenter URL: {experiment.experiment_url}
Study owner: {experiment.owner.email}
Description: {experiment.short_description}
Timeline & Channel: {expected_version_channel}
Intended study dates: {experiment.dates}
Percent of Population: 10%
Platforms: {experiment.platform}
Locales: {expected_locales}; {expected_countries}
QA Status: {experiment.qa_status}
Meta Bug: {experiment.feature_bugzilla_url}
Related links: {experiment.related_work}
Risk: Hardcoded fictitious risk
Technical Complexity: Hardcoded fictitious technical challenge

Thank you!!
""".lstrip())

        self.assertEqual(expected_body, sent_email.body)
        self.assertEqual(sent_email.from_email, settings.EMAIL_SENDER)
        self.assertEqual(
            sent_email.recipients(),
            [settings.EMAIL_RELEASE_DRIVERS, experiment.owner.email],
        )
예제 #2
0
    def update(self, request, *args, **kwargs):
        experiment = self.get_object()

        if experiment.review_intent_to_ship:
            return Response({"error": "email-already-sent"},
                            status=status.HTTP_409_CONFLICT)

        email.send_intent_to_ship_email(experiment.id)

        experiment.review_intent_to_ship = True
        experiment.save()

        return Response()
예제 #3
0
    def test_send_intent_to_ship_email_with_risk_fields(self):
        experiment = ExperimentFactory.create(
            name="Experiment",
            slug="experiment",
            risks="Fictitious risk",
            risk_technical_description="Fictitious technical challenge",
            population_percent=10.0,
            firefox_min_version="56.0",
            firefox_max_version="",
            firefox_channel="Nightly",
        )
        sender = "*****@*****.**"
        release_drivers = "*****@*****.**"

        user = UserFactory.create(email="*****@*****.**")

        experiment.subscribers.add(user)

        with self.settings(EMAIL_SENDER=sender,
                           EMAIL_RELEASE_DRIVERS=release_drivers):
            send_intent_to_ship_email(experiment.id)

        bug_url = settings.BUGZILLA_DETAIL_URL.format(
            id=experiment.bugzilla_id)
        expected_locales = self.format_locales(experiment)
        expected_countries = self.format_countries(experiment)
        expected_version_channel = self.format_version_and_channel(experiment)

        sent_email = mail.outbox[-1]
        self.assertEqual(sent_email.subject,
                         "Delivery Intent to ship: Experiment 56.0 Nightly")
        self.assertEqual(sent_email.from_email, sender)
        self.assertEqual(
            set(sent_email.recipients()),
            set([
                release_drivers,
                experiment.owner.email,
                experiment.analysis_owner,
                "*****@*****.**",
            ]),
        )
        self.assertTrue(
            experiment.emails.filter(
                type=ExperimentConstants.INTENT_TO_SHIP_EMAIL_LABEL).exists())
        self.assertIn(f"Experimenter Bug: {bug_url}", sent_email.body)
        self.assertIn(f"Locales: {expected_locales}; {expected_countries}",
                      sent_email.body)
        self.assertIn(f"Timeline & Channel: {expected_version_channel}",
                      sent_email.body)
        self.assertIn("Fictitious risk", sent_email.body)
        self.assertIn("Fictitious technical challenge", sent_email.body)
예제 #4
0
    def test_send_intent_to_ship_email_without_risk_fields(self):
        experiment = ExperimentFactory.create(
            name="Experiment",
            slug="experiment",
            risks="",
            risk_technical_description="",
            population_percent=10.0,
            firefox_min_version="56.0",
            firefox_max_version="",
            firefox_channel="Nightly",
        )

        user = UserFactory.create(email="*****@*****.**")

        experiment.subscribers.add(user)
        sender = "*****@*****.**"
        release_drivers = "*****@*****.**"

        with self.settings(EMAIL_SENDER=sender,
                           EMAIL_RELEASE_DRIVERS=release_drivers):
            send_intent_to_ship_email(experiment.id)

        bug_url = settings.BUGZILLA_DETAIL_URL.format(
            id=experiment.bugzilla_id)
        expected_locales = self.format_locales(experiment)
        expected_countries = self.format_countries(experiment)
        expected_version_channel = self.format_version_and_channel(experiment)

        sent_email = mail.outbox[-1]
        self.assertEqual(
            sent_email.subject,
            "SHIELD Study Intent to ship: Experiment 56.0 Nightly",
        )
        self.assertIn(f"Experimenter Bug: {bug_url}", sent_email.body)
        self.assertIn(
            f"Locales: {expected_locales}; {expected_countries}",
            sent_email.body,
        )
        self.assertIn(f"Timeline & Channel: {expected_version_channel}",
                      sent_email.body)
        self.assertEqual(sent_email.content_subtype, "html")
        self.assertEqual(sent_email.from_email, sender)
        self.assertEqual(
            set(sent_email.recipients()),
            set([release_drivers, experiment.owner.email,
                 "*****@*****.**"]),
        )