Files
games/crates/common/game-assets-lib/unit_tests/resolver.rs

22 lines
1.1 KiB
Rust

// file: crates/common/game-assets-lib/unit_tests/resolver.rs
// version: 2
#[test]
fn logical_namespaces_resolve_to_separate_roots() {
game_logging_lib::with_test_tracing("logical_namespaces_resolve_to_separate_roots", || {
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("traversal_and_unknown_schemes_are_rejected", || {
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));
});
}