I can login test is now working

This commit is contained in:
2025-10-27 21:47:07 +01:00
parent 09d012d065
commit 3f3e3a6ae5
2 changed files with 21 additions and 9 deletions

View File

@@ -33,6 +33,8 @@ DEFAULT_SKIP_PATTERNS = [
'/logout', '/logout',
] ]
http_client = httpx
def create_auth_beforeware(additional_patterns: Optional[List[str]] = None) -> Beforeware: def create_auth_beforeware(additional_patterns: Optional[List[str]] = None) -> Beforeware:
""" """
@@ -174,7 +176,7 @@ def login_user(email: str, password: str) -> Optional[Dict[str, Any]]:
None if authentication fails None if authentication fails
""" """
try: try:
response = httpx.post( response = http_client.post(
f"{API_BASE_URL}/auth/login", f"{API_BASE_URL}/auth/login",
data={"username": email, "password": password}, data={"username": email, "password": password},
headers={"Content-Type": "application/x-www-form-urlencoded"}, headers={"Content-Type": "application/x-www-form-urlencoded"},
@@ -200,6 +202,7 @@ def register_user(email: str, username: str, password: str) -> Optional[Dict[str
Args: Args:
email: User email address email: User email address
username: User name
password: User password password: User password
Returns: Returns:
@@ -207,9 +210,9 @@ def register_user(email: str, username: str, password: str) -> Optional[Dict[str
None if registration fails None if registration fails
""" """
try: try:
response = httpx.post( response = http_client.post(
f"{API_BASE_URL}/auth/register", f"{API_BASE_URL}/auth/register",
json={"email": email, "username": username, "password": password}, json={"email": email, "username": username, "password": password},
timeout=10.0 timeout=10.0
) )
@@ -233,7 +236,7 @@ def refresh_access_token(refresh_token: str) -> Optional[Dict[str, Any]]:
None if refresh fails None if refresh fails
""" """
try: try:
response = httpx.post( response = http_client.post(
f"{API_BASE_URL}/auth/refresh", f"{API_BASE_URL}/auth/refresh",
json={"refresh_token": refresh_token}, json={"refresh_token": refresh_token},
timeout=10.0 timeout=10.0
@@ -263,7 +266,7 @@ def get_user_info(access_token: str) -> Optional[Dict[str, Any]]:
None if request fails None if request fails
""" """
try: try:
response = httpx.get( response = http_client.get(
f"{API_BASE_URL}/auth/me", f"{API_BASE_URL}/auth/me",
headers={"Authorization": f"Bearer {access_token}"}, headers={"Authorization": f"Bearer {access_token}"},
timeout=10.0 timeout=10.0
@@ -288,7 +291,7 @@ def logout_user(refresh_token: str) -> bool:
True if logout successful, False otherwise True if logout successful, False otherwise
""" """
try: try:
response = httpx.post( response = http_client.post(
f"{API_BASE_URL}/auth/logout", f"{API_BASE_URL}/auth/logout",
json={"refresh_token": refresh_token}, json={"refresh_token": refresh_token},
timeout=10.0 timeout=10.0

View File

@@ -3,6 +3,7 @@ import os
import pytest import pytest
from fasthtml.fastapp import fast_app from fasthtml.fastapp import fast_app
import myfasthtml.auth.utils
from myfasthtml.auth.routes import setup_auth_routes from myfasthtml.auth.routes import setup_auth_routes
from myfasthtml.auth.utils import create_auth_beforeware, register_user from myfasthtml.auth.utils import create_auth_beforeware, register_user
from myfasthtml.core.testclient import MyTestClient from myfasthtml.core.testclient import MyTestClient
@@ -24,7 +25,12 @@ def rt(app):
@pytest.fixture() @pytest.fixture()
def user(app): def user(app):
user = MyTestClient(app) user = MyTestClient(app)
return user previous = myfasthtml.auth.utils.http_client
myfasthtml.auth.utils.http_client = user.client
yield user
myfasthtml.auth.utils.http_client = previous
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
@@ -48,12 +54,15 @@ def test_i_cannot_login_with_wrong_credentials(user):
user.should_see("Invalid email or password. Please try again.") user.should_see("Invalid email or password. Please try again.")
def test_i_can_login_with_correct_credentials(user): def test_i_can_login_with_correct_credentials(user, rt):
# create user # create user
register_user("user@email.com", "user", "#Passw0rd") register_user("user@email.com", "user", "#Passw0rd")
@rt('/')
def index(): return "You are now logged in !"
user.open("/login") user.open("/login")
form = user.find_form(fields=["Email", "Password"]) form = user.find_form(fields=["Email", "Password"])
form.fill(Email="user@email.com", Password="#Passw0rd") form.fill(Email="user@email.com", Password="#Passw0rd")
form.submit() form.submit()
user.should_see("You are now logged in") user.should_see("You are now logged in !")