From 2d29978f5032cbd86e2851c1df36b58d81d3ba41 Mon Sep 17 00:00:00 2001 From: xgc1564 Date: Sat, 8 Nov 2025 10:34:09 +0100 Subject: [PATCH 1/3] Tests de la funcionalidad login --- essenza/user/tests.py | 63 +++++++++++++++++++++++++++++++++++++++++++ essenza/user/urls.py | 2 ++ 2 files changed, 65 insertions(+) diff --git a/essenza/user/tests.py b/essenza/user/tests.py index 7ce503c2..249542ca 100644 --- a/essenza/user/tests.py +++ b/essenza/user/tests.py @@ -1,3 +1,66 @@ from django.test import TestCase # Create your tests here. +# user/tests/test_login.py +from django.test import TestCase +from django.urls import reverse +from django.contrib.auth import get_user_model +from django.conf import settings + +User = get_user_model() + +class LoginViewTests(TestCase): + def setUp(self): + # usuario de prueba + self.username = "user1" + self.email = "user1@example.com" + self.password = "pass1234" + self.user = User.objects.create_user( + username=self.username, + email=self.email, + password=self.password + ) + self.login_url = reverse("user:login") + self.home_url = reverse("home") + + #1. comprueba que la pagina de login carga correctamente + def test_get_login_page_returns_200(self): + resp = self.client.get(self.login_url) + self.assertEqual(resp.status_code, 200) + self.assertContains(resp, "Iniciar sesión") + self.assertContains(resp, "ESSENZA") + + #2. si email y contraseña validas redirige a home + def test_login_with_valid_email_redirects_home(self): + data = {"email": self.email, "password": self.password} + resp = self.client.post(self.login_url, data, follow=False) + self.assertEqual(resp.status_code, 302, resp.content) + self.assertEqual(resp["Location"], self.home_url) + + #3. si email y contraseña no validas muestra error + def test_login_with_invalid_passwordAndEmail_shows_error(self): + data = {"email": "wrong", "password": "wrong"} + resp = self.client.post(self.login_url, data) + self.assertEqual(resp.status_code, 200) + self.assertContains(resp, "Usuario o contraseña incorrectos") + + #4. si email no es valido muestra error + def test_login_with_invalid_email_shows_error(self): + data = {"email": "wrong", "password": self.password} + resp = self.client.post(self.login_url, data) + self.assertEqual(resp.status_code, 200) + self.assertContains(resp, "Usuario o contraseña incorrectos") + + #5. si contraseña no es valida muestra error + def test_login_with_invalid_password_shows_error(self): + data = {"email": self.email, "password": "wrong"} + resp = self.client.post(self.login_url, data) + self.assertEqual(resp.status_code, 200) + self.assertContains(resp, "Usuario o contraseña incorrectos") + + #6. simula un usuario ya autenticado, no puede acceder a login y redirige a home, ya que ya esta logueado + def test_authenticated_user_visiting_login_redirects_home(self): + self.client.login(email=self.email, password=self.password) + resp = self.client.get(self.login_url, follow=False) + self.assertEqual(resp.status_code, 302, resp.content) + self.assertEqual(resp["Location"], self.home_url) \ No newline at end of file diff --git a/essenza/user/urls.py b/essenza/user/urls.py index 685a14dc..fce363f2 100644 --- a/essenza/user/urls.py +++ b/essenza/user/urls.py @@ -3,6 +3,8 @@ from django.http import HttpResponse from user import views +app_name = "user" + urlpatterns = [ path('login/', views.LoginView.as_view(), name='login'), path('logout/', views.LogoutView.as_view(), name='logout'), From 3fd28408097961f938da110f530bbdae818daa84 Mon Sep 17 00:00:00 2001 From: xgc1564 Date: Sat, 8 Nov 2025 10:59:29 +0100 Subject: [PATCH 2/3] Arreglos test funcionalidad login --- essenza/user/tests.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/essenza/user/tests.py b/essenza/user/tests.py index 249542ca..f6d5c175 100644 --- a/essenza/user/tests.py +++ b/essenza/user/tests.py @@ -22,6 +22,7 @@ def setUp(self): ) self.login_url = reverse("user:login") self.home_url = reverse("home") + self.escaparate_url = reverse("escaparate") #1. comprueba que la pagina de login carga correctamente def test_get_login_page_returns_200(self): @@ -30,12 +31,12 @@ def test_get_login_page_returns_200(self): self.assertContains(resp, "Iniciar sesión") self.assertContains(resp, "ESSENZA") - #2. si email y contraseña validas redirige a home - def test_login_with_valid_email_redirects_home(self): + #2. si email y contraseña validas redirige al escaparate + def test_login_with_valid_email_redirects_escaparate(self): data = {"email": self.email, "password": self.password} resp = self.client.post(self.login_url, data, follow=False) self.assertEqual(resp.status_code, 302, resp.content) - self.assertEqual(resp["Location"], self.home_url) + self.assertEqual(resp["Location"], self.escaparate_url) #3. si email y contraseña no validas muestra error def test_login_with_invalid_passwordAndEmail_shows_error(self): @@ -57,10 +58,3 @@ def test_login_with_invalid_password_shows_error(self): resp = self.client.post(self.login_url, data) self.assertEqual(resp.status_code, 200) self.assertContains(resp, "Usuario o contraseña incorrectos") - - #6. simula un usuario ya autenticado, no puede acceder a login y redirige a home, ya que ya esta logueado - def test_authenticated_user_visiting_login_redirects_home(self): - self.client.login(email=self.email, password=self.password) - resp = self.client.get(self.login_url, follow=False) - self.assertEqual(resp.status_code, 302, resp.content) - self.assertEqual(resp["Location"], self.home_url) \ No newline at end of file From b807ff4fca489fdef5edd668b9df3d91b8c8040f Mon Sep 17 00:00:00 2001 From: Celia Date: Sat, 8 Nov 2025 12:55:08 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Correcci=C3=B3n=20de=20redirecci=C3=B3n=20d?= =?UTF-8?q?e=20logout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- essenza/templates/product/escaparate.html | 2 +- essenza/user/forms.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/essenza/templates/product/escaparate.html b/essenza/templates/product/escaparate.html index 54a3052a..d76efeca 100644 --- a/essenza/templates/product/escaparate.html +++ b/essenza/templates/product/escaparate.html @@ -113,7 +113,7 @@ -
+ {% csrf_token %}
diff --git a/essenza/user/forms.py b/essenza/user/forms.py index 3943885f..ac41549d 100644 --- a/essenza/user/forms.py +++ b/essenza/user/forms.py @@ -4,7 +4,7 @@ class LoginForm(forms.Form): email = forms.CharField( label="Correo electrónico o usuario", - widget=forms.TextInput(attrs={"placeholder": "Introduce tu correo o usuario"}) + widget=forms.TextInput(attrs={"placeholder": "Introduce tu correo electrónico"}) ) password = forms.CharField( label="Contraseña",