diff --git a/biscuit-auth/src/token/unverified.rs b/biscuit-auth/src/token/unverified.rs index fe707b66..6f45143d 100644 --- a/biscuit-auth/src/token/unverified.rs +++ b/biscuit-auth/src/token/unverified.rs @@ -374,3 +374,44 @@ impl UnverifiedBiscuit { self.append_third_party(&decoded) } } + +#[cfg(test)] +mod tests { + use crate::{BiscuitBuilder, BlockBuilder, KeyPair}; + + use super::UnverifiedBiscuit; + + #[test] + fn consistent_with_biscuit() { + let root_key = KeyPair::new(); + let external_key = KeyPair::new(); + let biscuit = BiscuitBuilder::new() + .fact("test(true)") + .unwrap() + .build(&root_key) + .unwrap() + .append(BlockBuilder::new().fact("test(false)").unwrap()) + .unwrap(); + let req = biscuit.third_party_request().unwrap(); + let res = req + .create_block( + &external_key.private(), + BlockBuilder::new().fact("third_party(true)").unwrap(), + ) + .unwrap(); + let biscuit = biscuit + .append_third_party(external_key.public(), res) + .unwrap(); + + let unverified = UnverifiedBiscuit::from_base64(biscuit.to_base64().unwrap()).unwrap(); + + unverified.clone().verify(root_key.public()).unwrap(); + + assert_eq!(unverified.blocks, biscuit.blocks); + + assert_eq!( + unverified.external_public_keys(), + biscuit.external_public_keys() + ); + } +}