This commit is contained in:
2025-11-09 18:20:29 +01:00
parent 81571e4c64
commit da0f2ae8ab
10 changed files with 147 additions and 63 deletions
+12 -12
View File
@@ -3,7 +3,7 @@ mod common;
use anyhow::{anyhow, Context, Result};
use axum::http::{header::SET_COOKIE, StatusCode};
use chrono::{Duration as ChronoDuration, Utc};
use common::{acquire_db_lock, body_to_vec, TestApp};
use common::{acquire_db_lock, body_to_vec, TestApp, TestUserRole};
use diesel::prelude::*;
use papercrate::auth::capability_sets::{ensure_capability_set, owner_capabilities};
use papercrate::auth::jwt::{AccessTokenContext, PrincipalKind};
@@ -80,7 +80,7 @@ async fn login_and_me_roundtrip() -> Result<()> {
let app = TestApp::new().await?;
let password = "s3cret";
app.insert_user("alice", password, "admin").await?;
app.insert_user("alice", TestUserRole::Owner).await?;
let (login, _) = login_with_session(&app, "alice", password).await?;
@@ -156,7 +156,7 @@ async fn passkey_register_start_creates_challenge() -> Result<()> {
let app = TestApp::new().await?;
let password = "secret";
app.insert_user("passkey-user", password, "admin").await?;
app.insert_user("passkey-user", TestUserRole::Owner).await?;
let (login, _) = login_with_session(&app, "passkey-user", password).await?;
@@ -197,7 +197,7 @@ async fn passkey_register_finish_rejects_unknown_challenge() -> Result<()> {
let app = TestApp::new().await?;
let password = "secret";
app.insert_user("passkey-register", password, "admin")
app.insert_user("passkey-register", TestUserRole::Owner)
.await?;
let (login, _) = login_with_session(&app, "passkey-register", password).await?;
@@ -227,7 +227,7 @@ async fn passkey_login_start_requires_passkey() -> Result<()> {
let app = TestApp::new().await?;
let password = "secret";
app.insert_user("passkey-login", password, "admin").await?;
app.insert_user("passkey-login", TestUserRole::Owner).await?;
let payload = PasskeyLoginStartPayload {
username: "passkey-login".to_string(),
@@ -288,7 +288,7 @@ async fn list_passkeys_returns_entries() -> Result<()> {
let app = TestApp::new().await?;
let password = "secret";
let user_id = app.insert_user("passkey-owner", password, "admin").await?;
let user_id = app.insert_user("passkey-owner", TestUserRole::Owner).await?;
app.insert_passkey(user_id, Some("Laptop")).await?;
let (session, _) = login_with_session(&app, "passkey-owner", password).await?;
@@ -314,7 +314,7 @@ async fn delete_passkey_soft_revokes() -> Result<()> {
let app = TestApp::new().await?;
let password = "secret";
let user_id = app.insert_user("passkey-delete", password, "admin").await?;
let user_id = app.insert_user("passkey-delete", TestUserRole::Owner).await?;
let passkey_id = app.insert_passkey(user_id, Some("Phone")).await?;
app.insert_passkey(user_id, Some("Backup")).await?;
let (session, _) = login_with_session(&app, "passkey-delete", password).await?;
@@ -349,7 +349,7 @@ async fn delete_passkey_prevents_last() -> Result<()> {
let app = TestApp::new().await?;
let password = "secret";
let user_id = app.insert_user("passkey-guard", password, "admin").await?;
let user_id = app.insert_user("passkey-guard", TestUserRole::Owner).await?;
let first_id = app.insert_passkey(user_id, Some("Key A")).await?;
let last_id = app.insert_passkey(user_id, Some("Key B")).await?;
let (session, _) = login_with_session(&app, "passkey-guard", password).await?;
@@ -409,7 +409,7 @@ async fn login_rejects_invalid_password() -> Result<()> {
let app = TestApp::new().await?;
let password = "valid";
app.insert_user("robin", password, "admin").await?;
app.insert_user("robin", TestUserRole::Owner).await?;
let payload = json!({ "username": "robin", "password": "wrong" });
let response = app.post_json("/api/auth/login", &payload, None).await?;
@@ -428,7 +428,7 @@ async fn refresh_rotates_refresh_token() -> Result<()> {
let app = TestApp::new().await?;
let password = "rotate";
app.insert_user("rita", password, "admin").await?;
app.insert_user("rita", TestUserRole::Owner).await?;
let (login, refresh_cookie) = login_with_session(&app, "rita", password).await?;
@@ -464,7 +464,7 @@ async fn logout_revokes_refresh_token() -> Result<()> {
let app = TestApp::new().await?;
let password = "logout";
app.insert_user("logan", password, "admin").await?;
app.insert_user("logan", TestUserRole::Owner).await?;
let (login, refresh_cookie) = login_with_session(&app, "logan", password).await?;
@@ -510,7 +510,7 @@ async fn login_returns_tenant_selection_when_multiple_memberships() -> Result<()
let app = TestApp::new().await?;
let password = "multipass";
let user_id = app.insert_user("multipass", password, "admin").await?;
let user_id = app.insert_user("multipass", TestUserRole::Owner).await?;
let secondary_name = "secondary".to_string();
let name_for_insert = secondary_name.clone();