feat: add remember me on login, server-side admin checks on member management

Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
2026-03-07 20:38:08 +01:00
parent d46c365112
commit 9fe1630986
7 changed files with 75 additions and 7 deletions

View File

@@ -386,6 +386,58 @@ async fn expired_session_with_failed_refresh_redirects_to_login() {
assert_eq!(sessions.session_count(), 0);
}
#[tokio::test]
async fn login_with_remember_me_sets_persistent_cookie() {
let response = test_app()
.oneshot(
Request::builder()
.method("POST")
.uri("/login")
.header("content-type", "application/x-www-form-urlencoded")
.body(Body::from(
"identifier=testuser&password=CorrectPass123&remember_me=on",
))
.unwrap(),
)
.await
.unwrap();
assert_eq!(response.status(), StatusCode::SEE_OTHER);
let cookie_str = response
.headers()
.get("set-cookie")
.unwrap()
.to_str()
.unwrap();
assert!(cookie_str.contains("forage_session="));
assert!(cookie_str.contains("Max-Age="));
}
#[tokio::test]
async fn login_without_remember_me_sets_session_cookie() {
let response = test_app()
.oneshot(
Request::builder()
.method("POST")
.uri("/login")
.header("content-type", "application/x-www-form-urlencoded")
.body(Body::from(
"identifier=testuser&password=CorrectPass123",
))
.unwrap(),
)
.await
.unwrap();
assert_eq!(response.status(), StatusCode::SEE_OTHER);
let cookie_str = response
.headers()
.get("set-cookie")
.unwrap()
.to_str()
.unwrap();
assert!(cookie_str.contains("forage_session="));
assert!(!cookie_str.contains("Max-Age="));
}
// ─── Logout ─────────────────────────────────────────────────────────
#[tokio::test]