Files
games/crates/common/game-assets-lib/unit_tests/resolver.rs
2026-09-16 10:01:13 +02:00

22 lines
1.0 KiB
Rust

// file: crates/common/game-assets-lib/unit_tests/resolver.rs
// version: 1
#[test]
fn logical_namespaces_resolve_to_separate_roots() {
game_logging_lib::with_test_tracing(|| {
let resolver = crate::AssetResolver::new("assets/common", "assets/game-reflex-poc");
assert_eq!(resolver.resolve("common://data/runtime.json"), Ok(std::path::PathBuf::from("assets/common/data/runtime.json")));
assert_eq!(resolver.resolve("game://data/game.json"), Ok(std::path::PathBuf::from("assets/game-reflex-poc/data/game.json")));
});
}
#[test]
fn traversal_and_unknown_schemes_are_rejected() {
game_logging_lib::with_test_tracing(|| {
let resolver = crate::AssetResolver::new("assets/common", "assets/game-reflex-poc");
assert_eq!(resolver.resolve("game://../secret"), Err(crate::AssetError::InvalidPath));
assert_eq!(resolver.resolve("file://data/game.json"), Err(crate::AssetError::UnsupportedScheme));
assert_eq!(resolver.resolve("common://"), Err(crate::AssetError::EmptyPath));
});
}