test(server): isolate config tests from ambient env via temp-env

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-02 00:50:12 +02:00
parent 08e5f797f8
commit 67057e2ee3
3 changed files with 27 additions and 6 deletions
Generated
+10
View File
@@ -1614,6 +1614,7 @@ dependencies = [
"reqwest", "reqwest",
"serde_json", "serde_json",
"sqlx", "sqlx",
"temp-env",
"tokio", "tokio",
"tracing", "tracing",
"tracing-subscriber", "tracing-subscriber",
@@ -1974,6 +1975,15 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "temp-env"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96374855068f47402c3121c6eed88d29cb1de8f3ab27090e273e420bdabcf050"
dependencies = [
"parking_lot",
]
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "2.0.18" version = "2.0.18"
+1
View File
@@ -27,3 +27,4 @@ serde_json.workspace = true
api = { path = "../api" } api = { path = "../api" }
db = { path = "../db" } db = { path = "../db" }
sqlx.workspace = true sqlx.workspace = true
temp-env = "0.3"
+10
View File
@@ -1,17 +1,27 @@
use clap::Parser; use clap::Parser;
use server::Config; use server::Config;
const CLEARED: [(&str, Option<&str>); 3] = [
("DATABASE_URL", None),
("BIND_ADDR", None),
("APP_NAME", None),
];
#[test] #[test]
fn parses_from_args_with_defaults() { fn parses_from_args_with_defaults() {
temp_env::with_vars(CLEARED, || {
let cfg = Config::try_parse_from(["server", "--database-url", "postgres://localhost/test"]) let cfg = Config::try_parse_from(["server", "--database-url", "postgres://localhost/test"])
.expect("should parse"); .expect("should parse");
assert_eq!(cfg.database_url, "postgres://localhost/test"); assert_eq!(cfg.database_url, "postgres://localhost/test");
assert_eq!(cfg.bind_addr, "0.0.0.0:8080"); assert_eq!(cfg.bind_addr, "0.0.0.0:8080");
assert_eq!(cfg.app_name, "Collection Management System"); assert_eq!(cfg.app_name, "Collection Management System");
});
} }
#[test] #[test]
fn database_url_is_required() { fn database_url_is_required() {
temp_env::with_vars(CLEARED, || {
assert!(Config::try_parse_from(["server"]).is_err()); assert!(Config::try_parse_from(["server"]).is_err());
});
} }