22 lines
1.1 KiB
Rust
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));
|
|
});
|
|
}
|