signatures: Make some test assertions more helpful

This commit is contained in:
Kévin Commaille 2022-06-11 22:39:29 +02:00 committed by Kévin Commaille
parent 2e4e8d82ce
commit 75cf634413
4 changed files with 39 additions and 39 deletions

View File

@ -31,3 +31,6 @@ sha2 = "0.9.5"
subslice = { version = "0.2.3", optional = true } subslice = { version = "0.2.3", optional = true }
thiserror = "1.0.26" thiserror = "1.0.26"
tracing = { version = "0.1.25", optional = true } tracing = { version = "0.1.25", optional = true }
[dev-dependencies]
assert_matches = "1.5.0"

View File

@ -877,6 +877,7 @@ fn is_third_party_invite(object: &CanonicalJsonObject) -> Result<bool, Error> {
mod tests { mod tests {
use std::collections::BTreeMap; use std::collections::BTreeMap;
use assert_matches::assert_matches;
use ruma_common::{ use ruma_common::{
serde::{Base64, CanonicalJsonValue}, serde::{Base64, CanonicalJsonValue},
RoomVersionId, ServerSigningKeyId, SigningKeyAlgorithm, RoomVersionId, ServerSigningKeyId, SigningKeyAlgorithm,
@ -949,11 +950,10 @@ mod tests {
).unwrap(); ).unwrap();
let public_key_map = BTreeMap::new(); let public_key_map = BTreeMap::new();
let verification_result = verify_event(&public_key_map, &signed_event, &RoomVersionId::V6); let verification =
verify_event(&public_key_map, &signed_event, &RoomVersionId::V6).unwrap();
assert!(verification_result.is_ok()); assert_eq!(verification, Verified::Signatures);
let verification = verification_result.unwrap();
assert!(matches!(verification, Verified::Signatures));
} }
#[test] #[test]
@ -988,11 +988,10 @@ mod tests {
add_key_to_map(&mut public_key_map, "domain-sender", &key_pair_sender); add_key_to_map(&mut public_key_map, "domain-sender", &key_pair_sender);
add_key_to_map(&mut public_key_map, "domain-event", &key_pair_event); add_key_to_map(&mut public_key_map, "domain-event", &key_pair_event);
let verification_result = verify_event(&public_key_map, &signed_event, &RoomVersionId::V1); let verification =
verify_event(&public_key_map, &signed_event, &RoomVersionId::V1).unwrap();
assert!(verification_result.is_ok()); assert_eq!(verification, Verified::Signatures);
let verification = verification_result.unwrap();
assert!(matches!(verification, Verified::Signatures));
} }
#[test] #[test]
@ -1027,11 +1026,10 @@ mod tests {
add_key_to_map(&mut public_key_map, "domain-sender", &key_pair_sender); add_key_to_map(&mut public_key_map, "domain-sender", &key_pair_sender);
add_key_to_map(&mut public_key_map, "domain-authorized", &key_pair_authorized); add_key_to_map(&mut public_key_map, "domain-authorized", &key_pair_authorized);
let verification_result = verify_event(&public_key_map, &signed_event, &RoomVersionId::V9); let verification =
verify_event(&public_key_map, &signed_event, &RoomVersionId::V9).unwrap();
assert!(verification_result.is_ok()); assert_eq!(verification, Verified::Signatures);
let verification = verification_result.unwrap();
assert!(matches!(verification, Verified::Signatures));
} }
#[test] #[test]
@ -1065,8 +1063,11 @@ mod tests {
let verification_result = verify_event(&public_key_map, &signed_event, &RoomVersionId::V9); let verification_result = verify_event(&public_key_map, &signed_event, &RoomVersionId::V9);
// Should be Err(VerificationError::signature_not_found("domain-authorized"))); let server = assert_matches!(
assert!(verification_result.is_err()); verification_result,
Err(Error::Verification(VerificationError::SignatureNotFound(server))) => server
);
assert_eq!(server, "domain-authorized");
} }
#[test] #[test]
@ -1099,13 +1100,11 @@ mod tests {
let public_key_map = BTreeMap::new(); let public_key_map = BTreeMap::new();
let verification_result = verify_event(&public_key_map, &signed_event, &RoomVersionId::V6); let verification_result = verify_event(&public_key_map, &signed_event, &RoomVersionId::V6);
assert!(verification_result.is_err()); let entity = assert_matches!(
let error_msg = verification_result.err().unwrap(); verification_result,
if let Error::Verification(VerificationError::PublicKeyNotFound(entity)) = error_msg { Err(Error::Verification(VerificationError::PublicKeyNotFound(entity))) => entity
);
assert_eq!(entity, "domain-sender"); assert_eq!(entity, "domain-sender");
} else {
panic!("Error was not VerificationError::UnknownPublicKeysForEvent: {error_msg:?}");
};
} }
#[test] #[test]
@ -1147,15 +1146,13 @@ mod tests {
let verification_result = verify_event(&public_key_map, &signed_event, &RoomVersionId::V6); let verification_result = verify_event(&public_key_map, &signed_event, &RoomVersionId::V6);
assert!(verification_result.is_err()); let error = assert_matches!(
let error_msg = verification_result.err().unwrap(); verification_result,
if let Error::Verification(VerificationError::Signature(error)) = error_msg { Err(Error::Verification(VerificationError::Signature(error))) => error
);
// dalek doesn't expose InternalError :( // dalek doesn't expose InternalError :(
// https://github.com/dalek-cryptography/ed25519-dalek/issues/174 // https://github.com/dalek-cryptography/ed25519-dalek/issues/174
assert!(format!("{error:?}").contains("Some(Verification equation was not satisfied)")); assert!(format!("{error:?}").contains("Some(Verification equation was not satisfied)"));
} else {
panic!("Error was not VerificationError::Signature: {error_msg:?}");
};
} }
fn generate_key_pair() -> Ed25519KeyPair { fn generate_key_pair() -> Ed25519KeyPair {

View File

@ -252,7 +252,7 @@ mod tests {
let mut public_key_map = BTreeMap::new(); let mut public_key_map = BTreeMap::new();
public_key_map.insert("domain".into(), signature_set); public_key_map.insert("domain".into(), signature_set);
assert!(verify_json(&public_key_map, &value).is_ok()); verify_json(&public_key_map, &value).unwrap();
} }
#[test] #[test]
@ -293,13 +293,13 @@ mod tests {
let mut public_key_map = BTreeMap::new(); let mut public_key_map = BTreeMap::new();
public_key_map.insert("domain".into(), signature_set); public_key_map.insert("domain".into(), signature_set);
assert!(verify_json(&public_key_map, &value).is_ok()); verify_json(&public_key_map, &value).unwrap();
let reverse_value = from_json_str( let reverse_value = from_json_str(
r#"{"two":"Two","signatures":{"domain":{"ed25519:1":"t6Ehmh6XTDz7qNWI0QI5tNPSliWLPQP/+Fzz3LpdCS7q1k2G2/5b5Embs2j4uG3ZeivejrzqSVoBcdocRpa+AQ"}},"one":1}"# r#"{"two":"Two","signatures":{"domain":{"ed25519:1":"t6Ehmh6XTDz7qNWI0QI5tNPSliWLPQP/+Fzz3LpdCS7q1k2G2/5b5Embs2j4uG3ZeivejrzqSVoBcdocRpa+AQ"}},"one":1}"#
).unwrap(); ).unwrap();
assert!(verify_json(&public_key_map, &reverse_value).is_ok()); verify_json(&public_key_map, &reverse_value).unwrap();
} }
#[test] #[test]
@ -312,7 +312,7 @@ mod tests {
let mut public_key_map = BTreeMap::new(); let mut public_key_map = BTreeMap::new();
public_key_map.insert("domain".into(), signature_set); public_key_map.insert("domain".into(), signature_set);
assert!(verify_json(&public_key_map, &value).is_err()); verify_json(&public_key_map, &value).unwrap_err();
} }
#[test] #[test]
@ -415,6 +415,6 @@ mod tests {
}"# }"#
).unwrap(); ).unwrap();
assert!(verify_event(&public_key_map, &value, &RoomVersionId::V5).is_ok()); verify_event(&public_key_map, &value, &RoomVersionId::V5).unwrap();
} }
} }

View File

@ -85,21 +85,21 @@ mod tests {
#[test] #[test]
fn valid_key_id() { fn valid_key_id() {
assert!(Signature::new("ed25519:abcdef", &[]).is_ok()); Signature::new("ed25519:abcdef", &[]).unwrap();
} }
#[test] #[test]
fn invalid_valid_key_id_length() { fn invalid_valid_key_id_length() {
assert!(Signature::new("ed25519:abcdef:123456", &[]).is_err()); Signature::new("ed25519:abcdef:123456", &[]).unwrap_err();
} }
#[test] #[test]
fn invalid_key_id_version() { fn invalid_key_id_version() {
assert!(Signature::new("ed25519:abc!def", &[]).is_err()); Signature::new("ed25519:abc!def", &[]).unwrap_err();
} }
#[test] #[test]
fn invalid_key_id_algorithm() { fn invalid_key_id_algorithm() {
assert!(Signature::new("foobar:abcdef", &[]).is_err()); Signature::new("foobar:abcdef", &[]).unwrap_err();
} }
} }