Esempio n. 1
0
    def test_change_delivery_email_end_to_end_with_admins_visibility(self) -> None:
        user_profile = self.example_user('hamlet')
        do_set_realm_property(user_profile.realm, 'email_address_visibility',
                              Realm.EMAIL_ADDRESS_VISIBILITY_ADMINS)

        old_email = user_profile.email
        new_email = '*****@*****.**'
        self.login(self.example_email('hamlet'))
        obj = EmailChangeStatus.objects.create(new_email=new_email,
                                               old_email=old_email,
                                               user_profile=user_profile,
                                               realm=user_profile.realm)
        key = generate_key()
        Confirmation.objects.create(content_object=obj,
                                    date_sent=now(),
                                    confirmation_key=key,
                                    type=Confirmation.EMAIL_CHANGE)
        url = confirmation_url(key, user_profile.realm.host, Confirmation.EMAIL_CHANGE)
        response = self.client_get(url)

        self.assertEqual(response.status_code, 200)
        self.assert_in_success_response(["This confirms that the email address for your Zulip"],
                                        response)
        user_profile = get_user_profile_by_id(user_profile.id)
        self.assertEqual(user_profile.delivery_email, new_email)
        self.assertEqual(user_profile.email, "*****@*****.**")
        obj.refresh_from_db()
        self.assertEqual(obj.status, 1)
        with self.assertRaises(UserProfile.DoesNotExist):
            get_user(old_email, user_profile.realm)
        with self.assertRaises(UserProfile.DoesNotExist):
            get_user_by_delivery_email(old_email, user_profile.realm)
        self.assertEqual(get_user_by_delivery_email(new_email, user_profile.realm), user_profile)
    def test_confirm_email_change(self) -> None:
        user_profile = self.example_user('hamlet')
        old_email = user_profile.email
        new_email = '*****@*****.**'
        new_realm = get_realm('zulip')
        self.login(self.example_email('hamlet'))
        obj = EmailChangeStatus.objects.create(new_email=new_email,
                                               old_email=old_email,
                                               user_profile=user_profile,
                                               realm=user_profile.realm)
        key = generate_key()
        Confirmation.objects.create(content_object=obj,
                                    date_sent=now(),
                                    confirmation_key=key,
                                    type=Confirmation.EMAIL_CHANGE)
        url = confirmation_url(key, user_profile.realm.host, Confirmation.EMAIL_CHANGE)
        response = self.client_get(url)

        self.assertEqual(response.status_code, 200)
        self.assert_in_success_response(["This confirms that the email address for your Zulip"],
                                        response)
        user_profile = get_user(new_email, new_realm)
        self.assertTrue(bool(user_profile))
        obj.refresh_from_db()
        self.assertEqual(obj.status, 1)
Esempio n. 3
0
    def test_change_delivery_email_end_to_end_with_admins_visibility(self) -> None:
        user_profile = self.example_user('hamlet')
        do_set_realm_property(user_profile.realm, 'email_address_visibility',
                              Realm.EMAIL_ADDRESS_VISIBILITY_ADMINS)

        self.login_user(user_profile)
        old_email = user_profile.delivery_email
        new_email = '*****@*****.**'
        obj = EmailChangeStatus.objects.create(new_email=new_email,
                                               old_email=old_email,
                                               user_profile=user_profile,
                                               realm=user_profile.realm)
        key = generate_key()
        Confirmation.objects.create(content_object=obj,
                                    date_sent=now(),
                                    confirmation_key=key,
                                    type=Confirmation.EMAIL_CHANGE)
        url = confirmation_url(key, user_profile.realm.host, Confirmation.EMAIL_CHANGE)
        response = self.client_get(url)

        self.assertEqual(response.status_code, 200)
        self.assert_in_success_response(["This confirms that the email address for your Zulip"],
                                        response)
        user_profile = get_user_profile_by_id(user_profile.id)
        self.assertEqual(user_profile.delivery_email, new_email)
        self.assertEqual(user_profile.email, f"user{user_profile.id}@zulip.testserver")
        obj.refresh_from_db()
        self.assertEqual(obj.status, 1)
        with self.assertRaises(UserProfile.DoesNotExist):
            get_user(old_email, user_profile.realm)
        with self.assertRaises(UserProfile.DoesNotExist):
            get_user_by_delivery_email(old_email, user_profile.realm)
        self.assertEqual(get_user_by_delivery_email(new_email, user_profile.realm), user_profile)
Esempio n. 4
0
 def test_confirm_email_change_when_time_exceeded(self) -> None:
     user_profile = self.example_user("hamlet")
     old_email = user_profile.email
     new_email = "*****@*****.**"
     self.login("hamlet")
     obj = EmailChangeStatus.objects.create(
         new_email=new_email,
         old_email=old_email,
         user_profile=user_profile,
         realm=user_profile.realm,
     )
     key = generate_key()
     date_sent = now() - datetime.timedelta(days=2)
     Confirmation.objects.create(
         content_object=obj,
         date_sent=date_sent,
         confirmation_key=key,
         type=Confirmation.EMAIL_CHANGE,
     )
     url = confirmation_url(key, user_profile.realm,
                            Confirmation.EMAIL_CHANGE)
     response = self.client_get(url)
     self.assert_in_success_response(
         ["The confirmation link has expired or been deactivated."],
         response)
Esempio n. 5
0
 def test_confirm_email_change_with_non_existent_key(self):
     # type: () -> None
     self.login(self.example_email("hamlet"))
     key = generate_key()
     url = confirmation_url(key, 'testserver', Confirmation.EMAIL_CHANGE)
     response = self.client_get(url)
     self.assert_in_success_response(["Whoops. We couldn't find your confirmation link in the system."], response)
Esempio n. 6
0
 def test_confirm_email_change_with_non_existent_key(self) -> None:
     self.login('hamlet')
     key = generate_key()
     url = confirmation_url(key, None, Confirmation.EMAIL_CHANGE)
     response = self.client_get(url)
     self.assert_in_success_response(
         ["Whoops. We couldn't find your confirmation link in the system."],
         response)
Esempio n. 7
0
 def test_confirm_email_change_with_non_existent_key(self):
     # type: () -> None
     self.login(self.example_email("hamlet"))
     key = generate_key()
     url = confirmation_url(key, 'testserver', Confirmation.EMAIL_CHANGE)
     response = self.client_get(url)
     self.assert_in_success_response(
         ["Whoops. We couldn't find your confirmation link in the system."],
         response)
Esempio n. 8
0
 def test_confirm_email_change_with_non_existent_key(self) -> None:
     self.login("hamlet")
     key = generate_key()
     url = confirmation_url(key, None, Confirmation.EMAIL_CHANGE)
     response = self.client_get(url)
     self.assertEqual(response.status_code, 404)
     self.assert_in_response(
         "Whoops. We couldn't find your confirmation link in the system.",
         response)
Esempio n. 9
0
 def test_confirm_email_change_when_time_exceeded(self) -> None:
     user_profile = self.example_user('hamlet')
     old_email = user_profile.email
     new_email = '*****@*****.**'
     self.login(self.example_email("hamlet"))
     obj = EmailChangeStatus.objects.create(new_email=new_email,
                                            old_email=old_email,
                                            user_profile=user_profile,
                                            realm=user_profile.realm)
     key = generate_key()
     date_sent = now() - datetime.timedelta(days=2)
     Confirmation.objects.create(content_object=obj,
                                 date_sent=date_sent,
                                 confirmation_key=key,
                                 type=Confirmation.EMAIL_CHANGE)
     url = confirmation_url(key, user_profile.realm.host, Confirmation.EMAIL_CHANGE)
     response = self.client_get(url)
     self.assert_in_success_response(["The confirmation link has expired or been deactivated."], response)
Esempio n. 10
0
    def test_confirm_email_change(self) -> None:
        user_profile = self.example_user("hamlet")
        do_set_realm_property(
            user_profile.realm,
            "email_address_visibility",
            Realm.EMAIL_ADDRESS_VISIBILITY_EVERYONE,
            acting_user=None,
        )

        old_email = user_profile.delivery_email
        new_email = "*****@*****.**"
        new_realm = get_realm("zulip")
        self.login("hamlet")
        obj = EmailChangeStatus.objects.create(
            new_email=new_email,
            old_email=old_email,
            user_profile=user_profile,
            realm=user_profile.realm,
        )
        key = generate_key()
        Confirmation.objects.create(
            content_object=obj,
            date_sent=now(),
            confirmation_key=key,
            type=Confirmation.EMAIL_CHANGE,
        )
        url = confirmation_url(key, user_profile.realm, Confirmation.EMAIL_CHANGE)
        response = self.client_get(url)

        self.assertEqual(response.status_code, 200)
        self.assert_in_success_response(
            ["This confirms that the email address for your Zulip"], response
        )
        user_profile = get_user_by_delivery_email(new_email, new_realm)
        self.assertTrue(bool(user_profile))
        obj.refresh_from_db()
        self.assertEqual(obj.status, 1)
Esempio n. 11
0
 def tokenized_no_reply_address() -> str:
     if settings.ADD_TOKENS_TO_NOREPLY_ADDRESS:
         return parseaddr(
             settings.TOKENIZED_NOREPLY_EMAIL_ADDRESS)[1].format(
                 token=generate_key())
     return FromAddress.NOREPLY
Esempio n. 12
0
 def tokenized_no_reply_address() -> str:
     if settings.ADD_TOKENS_TO_NOREPLY_ADDRESS:
         return parseaddr(settings.TOKENIZED_NOREPLY_EMAIL_ADDRESS)[1].format(token=generate_key())
     return FromAddress.NOREPLY
Esempio n. 13
0
 def test_email_change_when_not_logging_in(self):
     # type: () -> None
     key = generate_key()
     url = confirmation_url(key, 'testserver', Confirmation.EMAIL_CHANGE)
     response = self.client_get(url)
     self.assertEqual(response.status_code, 302)
Esempio n. 14
0
 def test_email_change_when_not_logging_in(self):
     # type: () -> None
     key = generate_key()
     url = confirmation_url(key, 'testserver', Confirmation.EMAIL_CHANGE)
     response = self.client_get(url)
     self.assertEqual(response.status_code, 302)