#![allow(
clippy::unwrap_used,
clippy::expect_used,
clippy::indexing_slicing,
clippy::panic
)]
use dsse::{pae, Envelope};
#[test]
fn spec_pae_vector() {
let got = pae("http://example.com/HelloWorld", b"hello world");
assert_eq!(
got,
b"DSSEv1 29 http://example.com/HelloWorld 11 hello world".to_vec()
);
}
#[test]
fn spec_envelope_vector() {
let json = br#"{"payload": "aGVsbG8gd29ybGQ=",
"payloadType": "http://example.com/HelloWorld",
"signatures": [{"sig": "A3JqsQGtVsJ2O2xqrI5IcnXip5GToJ3F+FnZ+O88SjtR6rDAajabZKciJTfUiHqJPcIAriEGAHTVeCUjW2JIZA=="}]}"#;
let env = Envelope::from_json(json).expect("the specification's own envelope must parse");
assert_eq!(env.payload_type, "http://example.com/HelloWorld");
assert_eq!(env.payload, "aGVsbG8gd29ybGQ=");
assert_eq!(env.signatures.len(), 1);
assert_eq!(env.signatures[0].keyid, None);
}
#[test]
fn spec_reference_envelope_with_keyid() {
let json = br#"{"payload": "aGVsbG8gd29ybGQ=", "payloadType": "http://example.com/HelloWorld", "signatures": [{"keyid": "66301bbf", "sig": "A3JqsQGtVsJ2O2xqrI5IcnXip5GToJ3F+FnZ+O88SjtR6rDAajabZKciJTfUiHqJPcIAriEGAHTVeCUjW2JIZA=="}]}"#;
let env = Envelope::from_json(json).expect("the reference envelope must parse");
assert_eq!(env.signatures[0].keyid.as_deref(), Some("66301bbf"));
}
#[test]
fn spec_unrecognised_members_are_ignored() {
let json = br#"{"payload": "aGVsbG8gd29ybGQ=", "payloadType": "t",
"signatures": [{"sig": "AAAA", "futureField": 1}], "envelopeExtension": {"x": [1,2]}}"#;
let env = Envelope::from_json(json).expect("an envelope with future members must parse");
assert_eq!(env.payload_type, "t");
}