def test_unknow_username_forgot_password_form(self): data = { 'username': '******', 'email': '' } form = UsernameAndEmailForm(data=data) self.assertFalse(form.is_valid())
def test_unknow_email_forgot_password_form(self): data = { 'email': '*****@*****.**', 'username': '' } form = UsernameAndEmailForm(data=data) self.assertFalse(form.is_valid())
def test_full_forgot_password_form(self): data = { 'username': '******', 'email': '*****@*****.**' } form = UsernameAndEmailForm(data=data) self.assertFalse(form.is_valid())
def test_empty_name_forgot_password_form(self): data = { 'username': '', 'email': '' } form = UsernameAndEmailForm(data=data) self.assertFalse(form.is_valid())
def test_valid_email_forgot_password_form(self): data = { 'email': self.user1.user.email, 'username': '' } form = UsernameAndEmailForm(data=data) self.assertTrue(form.is_valid())
def test_non_valid_non_ascii_email_forgot_password_form(self): data = { 'username': '', 'email': self.userNonAscii.user.email } form = UsernameAndEmailForm(data=data) self.assertTrue(form.is_valid())
def forgot_password(request): """If the user forgot his password, he can have a new one.""" if request.method == "POST": form = UsernameAndEmailForm(request.POST) if form.is_valid(): # Get data from form data = form.data username = data["username"] email = data["email"] # Fetch the user, we need his email adress usr = None if username: usr = get_object_or_404(User, Q(username=username)) if email: usr = get_object_or_404(User, Q(email=email)) # Generate a valid token during one hour. uuid_token = str(uuid.uuid4()) date_end = datetime.now() + timedelta(days=0, hours=1, minutes=0, seconds=0) token = TokenForgotPassword(user=usr, token=uuid_token, date_end=date_end) token.save() # send email subject = _(u"{} - Mot de passe oublié").format(settings.APP_SITE['litteral_name']) from_email = "{} <{}>".format(settings.APP_SITE['litteral_name'], settings.APP_SITE['email_noreply']) current_site = Site.objects.get_current() context = { "username": usr.username, "site_name": settings.APP_SITE['litteral_name'], "site_url": current_site.domain, "url": current_site.domain + token.get_absolute_url() } message_html = render_to_string("email/member/confirm_forgot_password.html", context) message_txt = render_to_string("email/member/confirm_forgot_password.txt", context) msg = EmailMultiAlternatives(subject, message_txt, from_email, [usr.email]) msg.attach_alternative(message_html, "text/html") msg.send() return render(request, "member/forgot_password/success.html") else: return render(request, "member/forgot_password/index.html", {"form": form}) form = UsernameAndEmailForm() return render(request, "member/forgot_password/index.html", {"form": form})