Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/monetize

crates/monetize-server/tests/serving_word.rs

//! ★ **A32-4: monetize says what it serves** (`<data_dir>/serving.json`, [`monetize_server::serving`]):
//! every product its config declares, the ones served (their guest loaded) and the ones refused
//! by name — what the ONE box's self-update confirms on, never a bare TCP connect.

use monetize_server::registry::Registry;
use monetize_server::serving::{self, Serving};

#[test]
fn the_serving_word_names_every_declared_product_served_or_refused() {
    let reg = Registry::new().pulled_product(monetize_server::testing::products::TestProduct::gunnar(), "gunnar.rs");
    let declared = vec!["gunnar".to_string(), "holger".to_string()];
    let s = serving::of(&reg, &declared, 1_900_000_000_000);
    assert_eq!(s.served, vec!["gunnar".to_string()]);
    assert_eq!(s.refused.len(), 1, "{s:?}");
    assert!(s.refused[0].starts_with("holger"), "{s:?}");
    assert_eq!((s.at_unix_ms, s.pid), (1_900_000_000_000, std::process::id()));

    let dir = std::env::temp_dir().join(format!("monetize-serving-{}", std::process::id()));
    let _ = std::fs::remove_dir_all(&dir);
    let path = dir.join(serving::SERVING_FILE);
    serving::write(&path, &s).expect("written");
    let back: Serving = serde_json::from_str(&std::fs::read_to_string(&path).unwrap()).unwrap();
    assert_eq!(back, s, "read back as written");
}