17 lines
1.1 KiB
Rust
17 lines
1.1 KiB
Rust
//! Approval text exposes public policy and rejects deceptive display controls.
|
|
use sausage::cred::{edits::Operation, items::Item, summary::operation_summary};
|
|
#[test]
|
|
fn summaries_show_public_values_rules_free_use_and_wildcard_risk() {
|
|
let item: Item = serde_json::from_value(serde_json::json!({"name":"test","free_use":true,"rules":[{"scheme":"https","hosts":["*.com","api.example"],"port":8443,"path_prefixes":["/"],"methods":null}],"validate_js":null,"transform_js":"","fields":[]})).unwrap();
|
|
let text = operation_summary(&Operation::CreateItem { config:item });
|
|
for part in ["without a grant","*.com","api.example","8443","wildcard"] { assert!(text.contains(part)); }
|
|
let text = operation_summary(&Operation::SetFieldValue { field:"public-id".into(), value:"public-value".into() });
|
|
assert!(text.contains("public-id"));
|
|
assert!(text.contains("public-value"));
|
|
}
|
|
#[test]
|
|
fn summaries_remove_bidi_and_zero_width_controls() {
|
|
let text = operation_summary(&Operation::SetName { name:"a\u{202e}b\u{2066}c\u{200b}d\u{200d}e\u{feff}".into() });
|
|
for c in ['\u{202e}','\u{2066}','\u{200b}','\u{200d}','\u{feff}'] { assert!(!text.contains(c)); }
|
|
}
|