test(sandbox): 完成 C-03 许可绑定验收

This commit is contained in:
2026-09-09 18:44:01 +08:00
parent f05a9e7a4d
commit 81e757dff1
4 changed files with 155 additions and 8 deletions
+20 -7
View File
@@ -230,7 +230,7 @@ impl Authority {
mac.update(&generation.to_be_bytes());
mac.update(&encoded);
mac.verify_slice(&permit.mac)
.map_err(|_| HostError::new("EXTENSION_PERMIT_MISMATCH"))?;
.map_err(|_| HostError::new("PERMISSION_CHANGED"))?;
if generation != self.generation.load(Ordering::SeqCst) {
return Err(HostError::new("EXTENSION_PERMIT_REVOKED"));
}
@@ -311,15 +311,28 @@ mod tests {
}
let changed: Claims = serde_json::from_value(changed).unwrap();
changed.encoded(100).unwrap();
assert!(
authority.verify(&token, &changed, 100).is_err(),
"unbound field {field}"
assert_eq!(
authority.verify(&token, &changed, 100).unwrap_err().code,
"PERMISSION_CHANGED",
"unbound field {field}",
);
}
assert!(authority.verify(&token, &original, 1000).is_err());
assert!(Authority::default().verify(&token, &original, 100).is_err());
assert_eq!(
authority.verify(&token, &original, 1000).unwrap_err().code,
"EXTENSION_PERMIT_EXPIRED"
);
assert_eq!(
Authority::default()
.verify(&token, &original, 100)
.unwrap_err()
.code,
"PERMISSION_CHANGED"
);
authority.invalidate_all();
assert!(authority.verify(&token, &original, 100).is_err());
assert_eq!(
authority.verify(&token, &original, 100).unwrap_err().code,
"EXTENSION_PERMIT_REVOKED"
);
}
#[test]
fn invalid_paths_environment_and_oversize_decisions_are_rejected() {