fix(drive): correct integration test

This commit is contained in:
Edouard Vanbelle
2026-06-24 02:44:25 +02:00
parent 338915a912
commit 754e6239da
4 changed files with 28 additions and 4 deletions
@@ -563,7 +563,15 @@ mod integration_tests {
let pool = Arc::new(pool); let pool = Arc::new(pool);
let repo = Arc::new(SubjectGroupPgRepository::new(pool.clone())); let repo = Arc::new(SubjectGroupPgRepository::new(pool.clone()));
let user_storage = Arc::new(UserPgRepository::new(pool.clone())); let user_storage = Arc::new(UserPgRepository::new(pool.clone()));
SubjectGroupService::new(repo, pool, user_storage) // The engine is wired so `add_member` / `remove_member` can invalidate
// their stale `user_groups_cache` entries (the production path).
// A stub engine is enough — these tests never trigger an authz SQL
// round-trip, only the in-memory cache invalidation calls. The stub's
// lazy invalid pool would panic if reached, surfacing any drift if a
// future test starts exercising real authz lookups.
let engine =
Arc::new(crate::infrastructure::services::pg_acl_engine::PgAclEngine::new_stub());
SubjectGroupService::new(repo, pool, user_storage, engine)
} }
async fn first_admin(pool: &sqlx::PgPool) -> Uuid { async fn first_admin(pool: &sqlx::PgPool) -> Uuid {
@@ -345,7 +345,11 @@ impl FileBlobReadRepository {
} }
/// Creates a stub instance for testing — never hits PG. /// Creates a stub instance for testing — never hits PG.
#[cfg(test)] /// Available in both standard unit-test (`cfg(test)`) and integration
/// (`cfg(integration_tests)`) builds; `PgAclEngine::new_stub` chains
/// into this stub and is needed from the integration-test module of
/// `subject_group_service`.
#[cfg(any(test, integration_tests))]
pub fn new_stub() -> Self { pub fn new_stub() -> Self {
use crate::infrastructure::services::dedup_service::DedupService; use crate::infrastructure::services::dedup_service::DedupService;
Self { Self {
+7 -1
View File
@@ -291,7 +291,13 @@ impl DedupService {
} }
/// Creates a stub instance for testing — never hits PG or the filesystem. /// Creates a stub instance for testing — never hits PG or the filesystem.
#[cfg(any(test, feature = "integration_tests"))] ///
/// Gated for both build modes integration tests are reachable from:
/// the raw `cfg(integration_tests)` flag used by CI / justfile
/// (`RUSTFLAGS='--cfg integration_tests'`) and the
/// `feature = "integration_tests"` form for callers that flip the
/// cargo feature instead. Standard `cfg(test)` keeps unit-test use.
#[cfg(any(test, integration_tests, feature = "integration_tests"))]
pub fn new_stub() -> Self { pub fn new_stub() -> Self {
use crate::infrastructure::services::local_blob_backend::LocalBlobBackend; use crate::infrastructure::services::local_blob_backend::LocalBlobBackend;
let stub_pool = Arc::new( let stub_pool = Arc::new(
+7 -1
View File
@@ -201,7 +201,13 @@ impl PgAclEngine {
/// without a real PostgreSQL pool. Connecting to the lazy pool will /// without a real PostgreSQL pool. Connecting to the lazy pool will
/// fail at runtime — only safe in tests that exercise types, not actual /// fail at runtime — only safe in tests that exercise types, not actual
/// authz queries. /// authz queries.
#[cfg(test)] ///
/// Visible under both `cfg(test)` (the standard unit-test build) and
/// `cfg(integration_tests)` (the gated-by-RUSTFLAGS integration
/// build). The `SubjectGroupService` integration tests construct the
/// service with a stub engine, since they only exercise the engine's
/// in-memory cache invalidation calls — never its SQL paths.
#[cfg(any(test, integration_tests))]
pub fn new_stub() -> Self { pub fn new_stub() -> Self {
let pool = sqlx::pool::PoolOptions::<sqlx::Postgres>::new() let pool = sqlx::pool::PoolOptions::<sqlx::Postgres>::new()
.max_connections(1) .max_connections(1)