48 lines
1.0 KiB
Rust
48 lines
1.0 KiB
Rust
use figment::Jail;
|
|
|
|
use config::load;
|
|
|
|
const CONFIG_FILE: &str = "config.toml";
|
|
|
|
#[test]
|
|
fn a_malformed_file_is_refused_rather_than_ignored() {
|
|
Jail::expect_with(|jail| {
|
|
jail.create_file(CONFIG_FILE, "[server\nport = ")?;
|
|
|
|
assert!(load().is_err());
|
|
Ok(())
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn a_value_of_the_wrong_type_is_refused() {
|
|
Jail::expect_with(|jail| {
|
|
jail.set_env("KMOOD_SERVER__PORT", "not-a-port");
|
|
|
|
assert!(load().is_err());
|
|
Ok(())
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn a_refusal_names_the_key_at_fault() {
|
|
Jail::expect_with(|jail| {
|
|
jail.set_env("KMOOD_SERVER__PORT", "not-a-port");
|
|
|
|
let message = load().unwrap_err().to_string().to_lowercase();
|
|
|
|
assert!(message.contains("port"), "unhelpful message: {message}");
|
|
Ok(())
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn a_named_file_that_is_missing_is_refused_rather_than_ignored() {
|
|
Jail::expect_with(|jail| {
|
|
jail.set_env("KMOOD_CONFIG_FILE", "nowhere.toml");
|
|
|
|
assert!(load().is_err());
|
|
Ok(())
|
|
});
|
|
}
|