use std::collections::BTreeSet;
use serde::{Deserialize, Serialize};
use crate::config::AppConfig;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct DeclaredApp {
pub config: AppConfig,
pub declared: BTreeSet<String>,
pub declared_env: BTreeSet<String>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn debug_does_not_leak_an_env_value() {
let mut config = AppConfig::minimal("web", "./srv");
config
.env
.insert("DATABASE_URL".to_string(), "postgres://secret".to_string());
let app = DeclaredApp {
config,
declared: BTreeSet::from(["name".to_string(), "script".to_string()]),
declared_env: BTreeSet::from(["DATABASE_URL".to_string()]),
};
assert_eq!(
format!("{app:?}"),
"DeclaredApp { config: AppConfig { name: \"web\", script: \"./srv\", \
env: <1 vars>, .. }, declared: {\"name\", \"script\"}, \
declared_env: {\"DATABASE_URL\"} }"
);
}
}