mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-08-05 13:35:23 +02:00
feat(frontend): ✨ Fix scheduler, forgot password flow, and minor bug fixes (#725)
* feat(frontend): 💄 add recipe title * fix(frontend): 🐛 fixes #722 side-bar issue * feat(frontend): ✨ Add page titles to all pages * minor cleanup * refactor(backend): ♻️ rewrite scheduler to be more modulare and work * feat(frontend): ✨ start password reset functionality * refactor(backend): ♻️ refactor application settings to facilitate dependency injection * refactor(backend): 🔥 remove RECIPE_SETTINGS env variables in favor of group settings * formatting * refactor(backend): ♻️ align naming convention * feat(backend): ✨ password reset * test(backend): ✅ password reset * feat(frontend): ✨ self-service password reset * purge password schedule * update user creation for tests Co-authored-by: Hayden <hay-kot@pm.me>
This commit is contained in:
parent
d1f0441252
commit
2e9026f9ea
121 changed files with 1461 additions and 679 deletions
|
@ -2,7 +2,9 @@ from pathlib import Path
|
|||
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from mealie.core.config import app_dirs
|
||||
from mealie.core.config import get_app_dirs
|
||||
|
||||
app_dirs = get_app_dirs()
|
||||
from tests.app_routes import AppRoutes
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
import json
|
||||
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from mealie.db.db_setup import create_session
|
||||
from mealie.services.user_services.password_reset_service import PasswordResetService
|
||||
from tests.utils.factories import random_string
|
||||
from tests.utils.fixture_schemas import TestUser
|
||||
|
||||
|
||||
class Routes:
|
||||
base = "/api/users/reset-password"
|
||||
|
||||
login = "/api/auth/token"
|
||||
self = "/api/users/self"
|
||||
|
||||
|
||||
def test_password_reset(api_client: TestClient, unique_user: TestUser):
|
||||
session = create_session()
|
||||
|
||||
service = PasswordResetService(session)
|
||||
token = service.generate_reset_token(unique_user.email)
|
||||
|
||||
new_password = random_string(15)
|
||||
|
||||
payload = {
|
||||
"token": token.token,
|
||||
"email": unique_user.email,
|
||||
"password": new_password,
|
||||
"passwordConfirm": new_password,
|
||||
}
|
||||
|
||||
# Test successful password reset
|
||||
response = api_client.post(Routes.base, json=payload)
|
||||
assert response.status_code == 200
|
||||
|
||||
# Test Login
|
||||
form_data = {"username": unique_user.email, "password": new_password}
|
||||
response = api_client.post(Routes.login, form_data)
|
||||
assert response.status_code == 200
|
||||
|
||||
# Test Token
|
||||
new_token = json.loads(response.text).get("access_token")
|
||||
token = {"Authorization": f"Bearer {new_token}"}
|
||||
response = api_client.get(Routes.self, headers=token)
|
||||
assert response.status_code == 200
|
||||
|
||||
session.close()
|
||||
|
||||
# Test successful password reset
|
||||
response = api_client.post(Routes.base, json=payload)
|
||||
assert response.status_code == 400
|
Loading…
Add table
Add a link
Reference in a new issue