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:
Generated
+10
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user