mirror of
https://github.com/telemt/telemt.git
synced 2026-10-10 11:25:57 +03:00
76 lines
2.2 KiB
Rust
76 lines
2.2 KiB
Rust
use base64::Engine as _;
|
|
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn capability_matches_reference_vectors() {
|
|
let secret = hex::decode("000102030405060708090a0b0c0d0e0f").unwrap();
|
|
let mut dd_secret = vec![0xdd];
|
|
dd_secret.extend_from_slice(&secret);
|
|
for (client_secret, base_path, expected) in [
|
|
(
|
|
secret.as_slice(),
|
|
b"".as_slice(),
|
|
"MHLEY5PmW1GWqJkSrlmJpvJUiLhBH_QKy6yKg8a0JPk",
|
|
),
|
|
(
|
|
dd_secret.as_slice(),
|
|
b"".as_slice(),
|
|
"IpJrt3e7sKtzPyoXy6w-Zj6GGEvsvclN66JzQEfPYLA",
|
|
),
|
|
(
|
|
secret.as_slice(),
|
|
b"dobry-cola-super-app".as_slice(),
|
|
"hHz99Xs93EN1j91G9gpNepXwGNNt5YdAFkEVk_LlqdQ",
|
|
),
|
|
(
|
|
dd_secret.as_slice(),
|
|
b"dobry-cola-super-app".as_slice(),
|
|
"TGUkZaevsavLbHvlNWipnRoYxgzZ51ioWvbxgGT3wHo",
|
|
),
|
|
] {
|
|
let capability =
|
|
derive_web_capability(client_secret, b"proxy.example.com", base_path).unwrap();
|
|
assert_eq!(
|
|
base64::engine::general_purpose::URL_SAFE_NO_PAD.encode(capability),
|
|
expected
|
|
);
|
|
}
|
|
}
|
|
|
|
#[cfg(unix)]
|
|
#[test]
|
|
fn static_snapshot_remains_anchored_after_root_path_replacement() {
|
|
use std::os::unix::fs::symlink;
|
|
|
|
let temp = tempfile::tempdir().unwrap();
|
|
let root = temp.path().join("site");
|
|
let detached = temp.path().join("detached");
|
|
let replacement = temp.path().join("replacement");
|
|
fs::create_dir(&root).unwrap();
|
|
fs::write(root.join("index.html"), b"original").unwrap();
|
|
fs::create_dir(&replacement).unwrap();
|
|
fs::write(replacement.join("index.html"), b"replacement").unwrap();
|
|
|
|
let directory = open_static_root(&root).unwrap();
|
|
fs::rename(&root, &detached).unwrap();
|
|
symlink(&replacement, &root).unwrap();
|
|
|
|
let mut assets = BTreeMap::new();
|
|
let mut total_files = 0;
|
|
let mut total_bytes = 0;
|
|
load_static_directory(
|
|
directory,
|
|
Path::new(""),
|
|
&root,
|
|
&mut assets,
|
|
&mut total_files,
|
|
&mut total_bytes,
|
|
&WebLimitsConfig::default(),
|
|
0,
|
|
)
|
|
.unwrap();
|
|
|
|
assert_eq!(assets["/index.html"].body.as_ref(), b"original");
|
|
}
|