Exemplo n.º 1
0
def test_send_reset_password_link_success(settings, user_account, mocker):
    user = user_account()
    domain_name = "test_send_reset_password_link_success.com"
    signature = "signature"
    site = Site.objects.create(domain=domain_name, name=domain_name)
    settings.SITE_ID = site.pk
    mocked_generate_reset_password_signature = mocker.patch(
        f"{PASSWORD_SERVICE_PATH}._generate_reset_password_signature",
        return_value=signature)
    mocked_send_notification = mocker.patch(
        f"{PASSWORD_SERVICE_PATH}._send_notification")

    PasswordService.send_reset_password_link(user.email)

    mocked_generate_reset_password_signature.assert_called_once_with(user)
    mocked_send_notification.assert_called_once_with(
        user.pk,
        {
            "user_notification_salutation":
            "Dear client",
            "domain_name":
            domain_name,
            "reset_password_link":
            f"https://{domain_name}/reset-password/{signature}",
        },
    )
Exemplo n.º 2
0
def test_send_reset_password_link_failure(mocker):
    assert UserAccount.objects.count() == 0
    mocked_generate_reset_password_signature = mocker.patch(
        f"{PASSWORD_SERVICE_PATH}._generate_reset_password_signature")
    mocked_send_notification = mocker.patch(
        f"{PASSWORD_SERVICE_PATH}._send_notification")

    PasswordService.send_reset_password_link("*****@*****.**")

    assert mocked_generate_reset_password_signature.call_count == 0
    assert mocked_send_notification.call_count == 0
Exemplo n.º 3
0
class ResetPasswordSerializer(serializers.Serializer):

    email = serializers.EmailField(max_length=128, write_only=True)

    def __init__(self, *args, **kwargs):
        super(ResetPasswordSerializer, self).__init__(*args, **kwargs)
        self.password_service = PasswordService()

    def save(self, **kwargs):
        email = self.validated_data["email"]
        self.password_service.send_reset_password_link(email)

    def create(self, validated_data):
        assert False, "Do not use update directly"

    def update(self, instance, validated_data):
        assert False, "Do not use update directly"