1
0
Fork 0
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:
Hayden 2021-10-07 09:39:47 -08:00 committed by GitHub
parent d1f0441252
commit 2e9026f9ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
121 changed files with 1461 additions and 679 deletions

View file

@ -5,7 +5,9 @@ from pathlib import Path
import pytest
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
from tests.test_config import TEST_CHOWDOWN_DIR, TEST_NEXTCLOUD_DIR

View file

@ -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

View file

@ -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