From 9c102ac0f57a359ed7ee50b33c29f5b07413030f Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Fri, 30 Jan 2026 21:51:06 -0500 Subject: [PATCH] updated apps.lyric.views for simpler login authentication and error messaging; .tests.test_views have new test method to assert either authentication condition has properly occurred --- src/apps/lyric/tests/test_views.py | 11 +++++++++++ src/apps/lyric/views.py | 10 +++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/apps/lyric/tests/test_views.py b/src/apps/lyric/tests/test_views.py index d361521..1ceb3df 100644 --- a/src/apps/lyric/tests/test_views.py +++ b/src/apps/lyric/tests/test_views.py @@ -70,3 +70,14 @@ class LoginViewTest(TestCase): user = auth.get_user(self.client) self.assertEqual(user.is_authenticated, True) self.assertEqual(user.email, "discoman@example.com") + + def test_shows_login_error_if_token_invalid(self): + response = self.client.get("/apps/lyric/login?token=invalid-token", follow=True) + user = auth.get_user(self.client) + self.assertEqual(user.is_authenticated, False) + message = list(response.context["messages"])[0] + self.assertEqual( + message.message, + "Invalid login link!—please request a new one", + ) + self.assertEqual(message.tags, "error") diff --git a/src/apps/lyric/views.py b/src/apps/lyric/views.py index a2607f9..e16db59 100644 --- a/src/apps/lyric/views.py +++ b/src/apps/lyric/views.py @@ -1,10 +1,8 @@ from django.contrib import auth, messages -from django.core.exceptions import ValidationError from django.core.mail import send_mail from django.shortcuts import redirect from django.urls import reverse -from .models import Token, User -from ..dashboard.forms import ItemForm +from .models import Token def send_login_email(request): email = request.POST["email"] @@ -27,12 +25,10 @@ def send_login_email(request): def login(request): uid = request.GET.get("token") - if not uid: - return redirect("/") - user = auth.authenticate(request, uid=uid) if user is not None: user.backend = "apps.lyric.authentication.PasswordlessAuthenticationBackend" auth.login(request, user) - + else: + messages.error(request, "Invalid login link!—please request a new one") return redirect("/")