I can register, login, and logout
This commit is contained in:
9
Makefile
9
Makefile
@@ -15,8 +15,13 @@ clean-build: clean-package
|
|||||||
find . -name "*.pyo" -exec rm -f {} +
|
find . -name "*.pyo" -exec rm -f {} +
|
||||||
|
|
||||||
clean-tests:
|
clean-tests:
|
||||||
|
rm -rf .sesskey
|
||||||
rm -rf tests/.sesskey
|
rm -rf tests/.sesskey
|
||||||
rm -rf tests/Users.db
|
rm -rf tests/*.db
|
||||||
|
|
||||||
# Alias to clean everything
|
# Alias to clean everything
|
||||||
clean: clean-build clean-tests
|
clean: clean-build clean-tests
|
||||||
|
|
||||||
|
clean-all : clean
|
||||||
|
rm -rf src/.sesskey
|
||||||
|
rm -rf src/Users.db
|
||||||
|
|||||||
@@ -216,11 +216,11 @@ def register_user(email: str, username: str, password: str) -> Optional[Dict[str
|
|||||||
timeout=10.0
|
timeout=10.0
|
||||||
)
|
)
|
||||||
|
|
||||||
if response.status_code == 200:
|
if response.status_code in (200, 201):
|
||||||
return response.json()
|
return response.json()
|
||||||
|
|
||||||
return None
|
return None
|
||||||
except httpx.HTTPError:
|
except httpx.HTTPError as ex:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from fasthtml.fastapp import fast_app
|
from fasthtml.fastapp import fast_app
|
||||||
@@ -9,11 +10,29 @@ from myfasthtml.auth.utils import create_auth_beforeware, register_user
|
|||||||
from myfasthtml.core.testclient import MyTestClient
|
from myfasthtml.core.testclient import MyTestClient
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class DummyUser:
|
||||||
|
email: str
|
||||||
|
username: str
|
||||||
|
password: str
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture()
|
||||||
|
def registered_user():
|
||||||
|
user = DummyUser("user@email.com", "user", "#Passw0rd")
|
||||||
|
register_user(user.email, user.username, user.password)
|
||||||
|
return user
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def app():
|
def app():
|
||||||
beforeware = create_auth_beforeware()
|
beforeware = create_auth_beforeware()
|
||||||
test_app, test_rt = fast_app(before=beforeware)
|
test_app, test_rt = fast_app(before=beforeware)
|
||||||
setup_auth_routes(test_app, test_rt, mount_auth_app=True, sqlite_db_path="TestUsers.db")
|
setup_auth_routes(test_app, test_rt, mount_auth_app=True, sqlite_db_path="TestUsers.db")
|
||||||
|
|
||||||
|
@test_rt('/')
|
||||||
|
def index(): return "You are now logged in !"
|
||||||
|
|
||||||
return test_app
|
return test_app
|
||||||
|
|
||||||
|
|
||||||
@@ -54,15 +73,43 @@ 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, rt):
|
def test_i_can_login_with_correct_credentials(user, registered_user):
|
||||||
# create user
|
|
||||||
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=registered_user.email, Password=registered_user.password)
|
||||||
form.submit()
|
form.submit()
|
||||||
user.should_see("You are now logged in !")
|
user.should_see("You are now logged in !")
|
||||||
|
|
||||||
|
|
||||||
|
def test_i_can_can_navigate_once_logged_in(user, registered_user):
|
||||||
|
user.open("/welcome") # not logged in, redirects to login
|
||||||
|
user.should_see("Sign In")
|
||||||
|
|
||||||
|
form = user.find_form(fields=["Email", "Password"])
|
||||||
|
form.fill(Email=registered_user.email, Password=registered_user.password)
|
||||||
|
form.submit()
|
||||||
|
|
||||||
|
user.open("/welcome") # once logged in, welcome page is accessible
|
||||||
|
user.should_see("Welcome back, user@email.com!") # welcome page is predefined
|
||||||
|
|
||||||
|
|
||||||
|
def test_i_can_register(user):
|
||||||
|
user.open("/register")
|
||||||
|
form = user.find_form(fields=["Email", "Username", "Password"])
|
||||||
|
form.fill(Email="user@email.com", Username="username", Password="#Passw0rd", confirm_password="#Passw0rd")
|
||||||
|
form.submit()
|
||||||
|
|
||||||
|
user.should_see("You are now logged in !")
|
||||||
|
|
||||||
|
|
||||||
|
def test_i_can_logout(user, registered_user):
|
||||||
|
user.open("/login")
|
||||||
|
form = user.find_form(fields=["Email", "Password"])
|
||||||
|
form.fill(Email=registered_user.email, Password=registered_user.password)
|
||||||
|
form.submit()
|
||||||
|
|
||||||
|
user.open("/logout")
|
||||||
|
user.should_see("Sign In")
|
||||||
|
|
||||||
|
user.open("/welcome")
|
||||||
|
user.should_see("Sign In")
|
||||||
|
|||||||
Reference in New Issue
Block a user