From adb4428a69432eca3845ef2fb2dabad4d8dcfdf1 Mon Sep 17 00:00:00 2001 From: Valere Date: Fri, 20 Dec 2024 19:03:06 +0100 Subject: [PATCH] test(crypto): Add some basic snapshot testing in crypto crate --- Cargo.lock | 1 + crates/matrix-sdk-crypto/Cargo.toml | 1 + crates/matrix-sdk-crypto/src/lib.rs | 21 +++++ .../src/olm/group_sessions/sender_data.rs | 57 +++++++++++++- ...r_data__tests__snapshot_sender_data-2.snap | 9 +++ ...r_data__tests__snapshot_sender_data-3.snap | 21 +++++ ...r_data__tests__snapshot_sender_data-4.snap | 44 +++++++++++ ...r_data__tests__snapshot_sender_data-5.snap | 44 +++++++++++ ...r_data__tests__snapshot_sender_data-6.snap | 44 +++++++++++ ...der_data__tests__snapshot_sender_data.snap | 10 +++ ...o__test__snapshot_decryption_settings.snap | 7 ++ ...o__test__snapshot_trust_requirement-2.snap | 5 ++ ...o__test__snapshot_trust_requirement-3.snap | 5 ++ ...pto__test__snapshot_trust_requirement.snap | 5 ++ crates/matrix-sdk-crypto/src/types/backup.rs | 36 ++++++++- crates/matrix-sdk-crypto/src/types/mod.rs | 77 +++++++++++++++++++ ...ests__snapshot_room_key_backup_info-2.snap | 10 +++ ..._tests__snapshot_room_key_backup_info.snap | 16 ++++ ...est__snapshot_backup_decryption_key-2.snap | 7 ++ ..._test__snapshot_backup_decryption_key.snap | 38 +++++++++ ...types__test__snapshot_secret_bundle-2.snap | 12 +++ ...__types__test__snapshot_secret_bundle.snap | 16 ++++ ...pto__types__test__snapshot_signatures.snap | 13 ++++ 23 files changed, 495 insertions(+), 4 deletions(-) create mode 100644 crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-2.snap create mode 100644 crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-3.snap create mode 100644 crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-4.snap create mode 100644 crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-5.snap create mode 100644 crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-6.snap create mode 100644 crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data.snap create mode 100644 crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_decryption_settings.snap create mode 100644 crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement-2.snap create mode 100644 crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement-3.snap create mode 100644 crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement.snap create mode 100644 crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__backup__tests__snapshot_room_key_backup_info-2.snap create mode 100644 crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__backup__tests__snapshot_room_key_backup_info.snap create mode 100644 crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_backup_decryption_key-2.snap create mode 100644 crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_backup_decryption_key.snap create mode 100644 crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_secret_bundle-2.snap create mode 100644 crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_secret_bundle.snap create mode 100644 crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_signatures.snap diff --git a/Cargo.lock b/Cargo.lock index f8d57bef3..9ae5eb6e0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3230,6 +3230,7 @@ dependencies = [ "hmac", "http", "indoc", + "insta", "itertools 0.13.0", "js_option", "matrix-sdk-common", diff --git a/crates/matrix-sdk-crypto/Cargo.toml b/crates/matrix-sdk-crypto/Cargo.toml index b3e3ccd11..551c89a9b 100644 --- a/crates/matrix-sdk-crypto/Cargo.toml +++ b/crates/matrix-sdk-crypto/Cargo.toml @@ -85,6 +85,7 @@ assert_matches2 = { workspace = true } futures-executor = { workspace = true } http = { workspace = true } indoc = "2.0.5" +insta = { workspace = true } matrix-sdk-test = { workspace = true } proptest = { workspace = true } similar-asserts = { workspace = true } diff --git a/crates/matrix-sdk-crypto/src/lib.rs b/crates/matrix-sdk-crypto/src/lib.rs index 04079868a..611cadcb1 100644 --- a/crates/matrix-sdk-crypto/src/lib.rs +++ b/crates/matrix-sdk-crypto/src/lib.rs @@ -1093,3 +1093,24 @@ pub enum RoomEventDecryptionResult { /// /// [1]: https://spec.matrix.org/unstable/client-server-api/#server-behaviour-4 pub mod tutorial {} + +#[cfg(test)] +mod test { + use insta::assert_json_snapshot; + + use crate::{DecryptionSettings, TrustRequirement}; + + #[test] + fn snapshot_trust_requirement() { + assert_json_snapshot!(TrustRequirement::Untrusted); + assert_json_snapshot!(TrustRequirement::CrossSignedOrLegacy); + assert_json_snapshot!(TrustRequirement::CrossSigned); + } + + #[test] + fn snapshot_decryption_settings() { + assert_json_snapshot!(DecryptionSettings { + sender_device_trust_requirement: TrustRequirement::Untrusted, + }); + } +} diff --git a/crates/matrix-sdk-crypto/src/olm/group_sessions/sender_data.rs b/crates/matrix-sdk-crypto/src/olm/group_sessions/sender_data.rs index 0be07403e..d10758546 100644 --- a/crates/matrix-sdk-crypto/src/olm/group_sessions/sender_data.rs +++ b/crates/matrix-sdk-crypto/src/olm/group_sessions/sender_data.rs @@ -283,13 +283,16 @@ mod tests { use std::{cmp::Ordering, collections::BTreeMap}; use assert_matches2::assert_let; - use ruma::{device_id, owned_device_id, owned_user_id, user_id}; - use vodozemac::Ed25519PublicKey; + use insta::assert_json_snapshot; + use ruma::{ + device_id, owned_device_id, owned_user_id, user_id, DeviceKeyAlgorithm, DeviceKeyId, + }; + use vodozemac::{Curve25519PublicKey, Ed25519PublicKey}; use super::SenderData; use crate::{ olm::KnownSenderData, - types::{DeviceKeys, Signatures}, + types::{DeviceKey, DeviceKeys, EventEncryptionAlgorithm, Signatures}, }; #[test] @@ -479,4 +482,52 @@ mod tests { assert_eq!(sender_unverified.compare_trust_level(&sender_verified), Ordering::Less); assert_eq!(sender_verified.compare_trust_level(&sender_unverified), Ordering::Greater); } + + #[test] + fn snapshot_sender_data() { + assert_json_snapshot!(SenderData::UnknownDevice { + legacy_session: false, + owner_check_failed: true, + }); + + assert_json_snapshot!(SenderData::UnknownDevice { + legacy_session: true, + owner_check_failed: false, + }); + + assert_json_snapshot!(SenderData::DeviceInfo { + device_keys: DeviceKeys::new( + owned_user_id!("@foo:bar.baz"), + owned_device_id!("DEV"), + vec![ + EventEncryptionAlgorithm::MegolmV1AesSha2, + EventEncryptionAlgorithm::OlmV1Curve25519AesSha2 + ], + BTreeMap::from_iter(vec![( + DeviceKeyId::from_parts(DeviceKeyAlgorithm::Ed25519, device_id!("ABCDEFGH")), + DeviceKey::Curve25519(Curve25519PublicKey::from_bytes([0u8; 32])), + )]), + Default::default(), + ), + legacy_session: false, + }); + + assert_json_snapshot!(SenderData::VerificationViolation(KnownSenderData { + user_id: owned_user_id!("@foo:bar.baz"), + device_id: Some(owned_device_id!("DEV")), + master_key: Box::new(Ed25519PublicKey::from_slice(&[0u8; 32]).unwrap()), + })); + + assert_json_snapshot!(SenderData::SenderUnverified(KnownSenderData { + user_id: owned_user_id!("@foo:bar.baz"), + device_id: None, + master_key: Box::new(Ed25519PublicKey::from_slice(&[1u8; 32]).unwrap()), + })); + + assert_json_snapshot!(SenderData::SenderVerified(KnownSenderData { + user_id: owned_user_id!("@foo:bar.baz"), + device_id: None, + master_key: Box::new(Ed25519PublicKey::from_slice(&[1u8; 32]).unwrap()), + })); + } } diff --git a/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-2.snap b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-2.snap new file mode 100644 index 000000000..ffb7eccfa --- /dev/null +++ b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-2.snap @@ -0,0 +1,9 @@ +--- +source: crates/matrix-sdk-crypto/src/olm/group_sessions/sender_data.rs +expression: "SenderData::UnknownDevice { legacy_session: true, owner_check_failed: false, }" +--- +{ + "UnknownDevice": { + "legacy_session": true + } +} diff --git a/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-3.snap b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-3.snap new file mode 100644 index 000000000..e1671d4e2 --- /dev/null +++ b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-3.snap @@ -0,0 +1,21 @@ +--- +source: crates/matrix-sdk-crypto/src/olm/group_sessions/sender_data.rs +expression: "SenderData::DeviceInfo\n{\n device_keys:\n DeviceKeys::new(owned_user_id!(\"@foo:bar.baz\"), owned_device_id!(\"DEV\"),\n vec!(EventEncryptionAlgorithm::MegolmV1AesSha2,\n EventEncryptionAlgorithm::OlmV1Curve25519AesSha2),\n BTreeMap::from_iter(vec![(DeviceKeyId::from_parts(DeviceKeyAlgorithm::Ed25519,\n device_id!(\"ABCDEFGH\")),\n DeviceKey::Curve25519(Curve25519PublicKey::from_bytes([0u8; 32])),)]),\n Default::default(),), legacy_session: false,\n}" +--- +{ + "DeviceInfo": { + "device_keys": { + "user_id": "@foo:bar.baz", + "device_id": "DEV", + "algorithms": [ + "m.megolm.v1.aes-sha2", + "m.olm.v1.curve25519-aes-sha2" + ], + "keys": { + "ed25519:ABCDEFGH": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + "signatures": {} + }, + "legacy_session": false + } +} diff --git a/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-4.snap b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-4.snap new file mode 100644 index 000000000..da1c8e4c4 --- /dev/null +++ b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-4.snap @@ -0,0 +1,44 @@ +--- +source: crates/matrix-sdk-crypto/src/olm/group_sessions/sender_data.rs +expression: "SenderData::VerificationViolation(KnownSenderData\n{\n user_id: owned_user_id!(\"@foo:bar.baz\"), device_id:\n Some(owned_device_id!(\"DEV\")), master_key:\n Box::new(Ed25519PublicKey::from_slice(&[0u8; 32]).unwrap()),\n})" +--- +{ + "VerificationViolation": { + "user_id": "@foo:bar.baz", + "device_id": "DEV", + "master_key": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } +} diff --git a/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-5.snap b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-5.snap new file mode 100644 index 000000000..36f6beb3d --- /dev/null +++ b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-5.snap @@ -0,0 +1,44 @@ +--- +source: crates/matrix-sdk-crypto/src/olm/group_sessions/sender_data.rs +expression: "SenderData::SenderUnverified(KnownSenderData\n{\n user_id: owned_user_id!(\"@foo:bar.baz\"), device_id: None, master_key:\n Box::new(Ed25519PublicKey::from_slice(&[1u8; 32]).unwrap()),\n})" +--- +{ + "SenderUnverified": { + "user_id": "@foo:bar.baz", + "device_id": null, + "master_key": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + } +} diff --git a/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-6.snap b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-6.snap new file mode 100644 index 000000000..62e7b8e7c --- /dev/null +++ b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data-6.snap @@ -0,0 +1,44 @@ +--- +source: crates/matrix-sdk-crypto/src/olm/group_sessions/sender_data.rs +expression: "SenderData::SenderVerified(KnownSenderData\n{\n user_id: owned_user_id!(\"@foo:bar.baz\"), device_id: None, master_key:\n Box::new(Ed25519PublicKey::from_slice(&[1u8; 32]).unwrap()),\n})" +--- +{ + "SenderVerified": { + "user_id": "@foo:bar.baz", + "device_id": null, + "master_key": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + } +} diff --git a/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data.snap b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data.snap new file mode 100644 index 000000000..44cf973f6 --- /dev/null +++ b/crates/matrix-sdk-crypto/src/olm/group_sessions/snapshots/matrix_sdk_crypto__olm__group_sessions__sender_data__tests__snapshot_sender_data.snap @@ -0,0 +1,10 @@ +--- +source: crates/matrix-sdk-crypto/src/olm/group_sessions/sender_data.rs +expression: "SenderData::UnknownDevice { legacy_session: false, owner_check_failed: true, }" +--- +{ + "UnknownDevice": { + "legacy_session": false, + "owner_check_failed": true + } +} diff --git a/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_decryption_settings.snap b/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_decryption_settings.snap new file mode 100644 index 000000000..6beabaeac --- /dev/null +++ b/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_decryption_settings.snap @@ -0,0 +1,7 @@ +--- +source: crates/matrix-sdk-crypto/src/lib.rs +expression: "DecryptionSettings\n{ sender_device_trust_requirement: TrustRequirement::Untrusted, }" +--- +{ + "sender_device_trust_requirement": "Untrusted" +} diff --git a/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement-2.snap b/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement-2.snap new file mode 100644 index 000000000..bf435f10d --- /dev/null +++ b/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement-2.snap @@ -0,0 +1,5 @@ +--- +source: crates/matrix-sdk-crypto/src/lib.rs +expression: "TrustRequirement::CrossSignedOrLegacy" +--- +"CrossSignedOrLegacy" diff --git a/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement-3.snap b/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement-3.snap new file mode 100644 index 000000000..ed4cf2201 --- /dev/null +++ b/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement-3.snap @@ -0,0 +1,5 @@ +--- +source: crates/matrix-sdk-crypto/src/lib.rs +expression: "TrustRequirement::CrossSigned" +--- +"CrossSigned" diff --git a/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement.snap b/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement.snap new file mode 100644 index 000000000..1cf676489 --- /dev/null +++ b/crates/matrix-sdk-crypto/src/snapshots/matrix_sdk_crypto__test__snapshot_trust_requirement.snap @@ -0,0 +1,5 @@ +--- +source: crates/matrix-sdk-crypto/src/lib.rs +expression: "TrustRequirement::Untrusted" +--- +"Untrusted" diff --git a/crates/matrix-sdk-crypto/src/types/backup.rs b/crates/matrix-sdk-crypto/src/types/backup.rs index 45443c2b7..313a5d6cc 100644 --- a/crates/matrix-sdk-crypto/src/types/backup.rs +++ b/crates/matrix-sdk-crypto/src/types/backup.rs @@ -108,10 +108,16 @@ impl Serialize for RoomKeyBackupInfo { #[cfg(test)] mod tests { + use std::collections::BTreeMap; + use assert_matches::assert_matches; - use serde_json::json; + use insta::{assert_json_snapshot, with_settings}; + use ruma::{user_id, DeviceKeyAlgorithm, KeyId}; + use serde_json::{json, Value}; + use vodozemac::{Curve25519PublicKey, Ed25519Signature}; use super::RoomKeyBackupInfo; + use crate::types::{MegolmV1AuthData, Signature, Signatures}; #[test] fn serialization() { @@ -146,4 +152,32 @@ mod tests { let serialized = serde_json::to_value(deserialized).unwrap(); assert_eq!(json, serialized); } + + #[test] + fn snapshot_room_key_backup_info() { + let info = RoomKeyBackupInfo::MegolmBackupV1Curve25519AesSha2(MegolmV1AuthData { + public_key: Curve25519PublicKey::from_bytes([2u8; 32]), + signatures: Signatures(BTreeMap::from([( + user_id!("@alice:localhost").to_owned(), + BTreeMap::from([( + KeyId::from_parts(DeviceKeyAlgorithm::Ed25519, "ABCDEFG".into()), + Ok(Signature::from(Ed25519Signature::from_slice(&[0u8; 64]).unwrap())), + )]), + )])), + extra: BTreeMap::from([("foo".to_owned(), Value::from("bar"))]), + }); + + with_settings!({sort_maps =>true}, { + assert_json_snapshot!(info) + }); + + let info = RoomKeyBackupInfo::Other { + algorithm: "caesar.cipher".to_owned(), + auth_data: BTreeMap::from([("foo".to_owned(), Value::from("bar"))]), + }; + + with_settings!({sort_maps =>true}, { + assert_json_snapshot!(info); + }) + } } diff --git a/crates/matrix-sdk-crypto/src/types/mod.rs b/crates/matrix-sdk-crypto/src/types/mod.rs index 8bb3f3245..a10c7d705 100644 --- a/crates/matrix-sdk-crypto/src/types/mod.rs +++ b/crates/matrix-sdk-crypto/src/types/mod.rs @@ -519,6 +519,8 @@ where #[cfg(test)] mod test { + use insta::{assert_debug_snapshot, assert_json_snapshot, with_settings}; + use ruma::{device_id, user_id}; use serde_json::json; use similar_asserts::assert_eq; @@ -547,4 +549,79 @@ mod test { assert_eq!(json, serialized, "A serialization cycle should yield the same result"); } + + #[test] + fn snapshot_backup_decryption_key() { + let decryption_key = BackupDecryptionKey { inner: Box::new([1u8; 32]) }; + assert_json_snapshot!(decryption_key); + + // should not log the key ! + assert_debug_snapshot!(decryption_key); + } + + #[test] + fn snapshot_signatures() { + let signatures = Signatures(BTreeMap::from([ + ( + user_id!("@alice:localhost").to_owned(), + BTreeMap::from([ + ( + DeviceKeyId::from_parts( + DeviceKeyAlgorithm::Ed25519, + device_id!("ABCDEFGH"), + ), + Ok(Signature::from(Ed25519Signature::from_slice(&[0u8; 64]).unwrap())), + ), + ( + DeviceKeyId::from_parts( + DeviceKeyAlgorithm::Curve25519, + device_id!("IJKLMNOP"), + ), + Ok(Signature::from(Ed25519Signature::from_slice(&[1u8; 64]).unwrap())), + ), + ]), + ), + ( + user_id!("@bob:localhost").to_owned(), + BTreeMap::from([( + DeviceKeyId::from_parts(DeviceKeyAlgorithm::Ed25519, device_id!("ABCDEFGH")), + Err(InvalidSignature { source: "SOME+B64+SOME+B64+SOME+B64+==".to_owned() }), + )]), + ), + ])); + + with_settings!({sort_maps =>true}, { + assert_json_snapshot!(signatures) + }); + } + + #[test] + fn snapshot_secret_bundle() { + let secret_bundle = SecretsBundle { + cross_signing: CrossSigningSecrets { + master_key: "MSKMSKMSKMSKMSKMSKMSKMSKMSKMSKMSKMSK".to_owned(), + user_signing_key: "USKUSKUSKUSKUSKUSKUSKUSKUSKUSKUSKUSK".to_owned(), + self_signing_key: "SSKSSKSSKSSKSSKSSKSSKSSKSSKSSKSSK".to_owned(), + }, + backup: Some(BackupSecrets::MegolmBackupV1Curve25519AesSha2( + MegolmBackupV1Curve25519AesSha2Secrets { + key: BackupDecryptionKey::from_bytes(&[0u8; 32]), + backup_version: "v1.1".to_owned(), + }, + )), + }; + + assert_json_snapshot!(secret_bundle); + + let secret_bundle = SecretsBundle { + cross_signing: CrossSigningSecrets { + master_key: "MSKMSKMSKMSKMSKMSKMSKMSKMSKMSKMSKMSK".to_owned(), + user_signing_key: "USKUSKUSKUSKUSKUSKUSKUSKUSKUSKUSKUSK".to_owned(), + self_signing_key: "SSKSSKSSKSSKSSKSSKSSKSSKSSKSSKSSK".to_owned(), + }, + backup: None, + }; + + assert_json_snapshot!(secret_bundle); + } } diff --git a/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__backup__tests__snapshot_room_key_backup_info-2.snap b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__backup__tests__snapshot_room_key_backup_info-2.snap new file mode 100644 index 000000000..e83f1a24e --- /dev/null +++ b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__backup__tests__snapshot_room_key_backup_info-2.snap @@ -0,0 +1,10 @@ +--- +source: crates/matrix-sdk-crypto/src/types/backup.rs +expression: info +--- +{ + "algorithm": "caesar.cipher", + "auth_data": { + "foo": "bar" + } +} diff --git a/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__backup__tests__snapshot_room_key_backup_info.snap b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__backup__tests__snapshot_room_key_backup_info.snap new file mode 100644 index 000000000..f8e7084d0 --- /dev/null +++ b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__backup__tests__snapshot_room_key_backup_info.snap @@ -0,0 +1,16 @@ +--- +source: crates/matrix-sdk-crypto/src/types/backup.rs +expression: info +--- +{ + "algorithm": "m.megolm_backup.v1.curve25519-aes-sha2", + "auth_data": { + "foo": "bar", + "public_key": "AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI", + "signatures": { + "@alice:localhost": { + "ed25519:ABCDEFG": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + } + } + } +} diff --git a/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_backup_decryption_key-2.snap b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_backup_decryption_key-2.snap new file mode 100644 index 000000000..f144f74d2 --- /dev/null +++ b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_backup_decryption_key-2.snap @@ -0,0 +1,7 @@ +--- +source: crates/matrix-sdk-crypto/src/types/mod.rs +expression: decryption_key +--- +BackupDecryptionKey( + "...", +) diff --git a/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_backup_decryption_key.snap b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_backup_decryption_key.snap new file mode 100644 index 000000000..3e84e7de8 --- /dev/null +++ b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_backup_decryption_key.snap @@ -0,0 +1,38 @@ +--- +source: crates/matrix-sdk-crypto/src/types/mod.rs +expression: "BackupDecryptionKey { inner: Box::new([1u8;32]) }" +--- +[ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 +] diff --git a/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_secret_bundle-2.snap b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_secret_bundle-2.snap new file mode 100644 index 000000000..b4d49cdbd --- /dev/null +++ b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_secret_bundle-2.snap @@ -0,0 +1,12 @@ +--- +source: crates/matrix-sdk-crypto/src/types/mod.rs +expression: secret_bundle +--- +{ + "cross_signing": { + "master_key": "MSKMSKMSKMSKMSKMSKMSKMSKMSKMSKMSKMSK", + "user_signing_key": "USKUSKUSKUSKUSKUSKUSKUSKUSKUSKUSKUSK", + "self_signing_key": "SSKSSKSSKSSKSSKSSKSSKSSKSSKSSKSSK" + }, + "backup": null +} diff --git a/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_secret_bundle.snap b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_secret_bundle.snap new file mode 100644 index 000000000..20a6b2377 --- /dev/null +++ b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_secret_bundle.snap @@ -0,0 +1,16 @@ +--- +source: crates/matrix-sdk-crypto/src/types/mod.rs +expression: secret_bundle +--- +{ + "cross_signing": { + "master_key": "MSKMSKMSKMSKMSKMSKMSKMSKMSKMSKMSKMSK", + "user_signing_key": "USKUSKUSKUSKUSKUSKUSKUSKUSKUSKUSKUSK", + "self_signing_key": "SSKSSKSSKSSKSSKSSKSSKSSKSSKSSKSSK" + }, + "backup": { + "algorithm": "m.megolm_backup.v1.curve25519-aes-sha2", + "key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "backup_version": "v1.1" + } +} diff --git a/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_signatures.snap b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_signatures.snap new file mode 100644 index 000000000..c0fc0e651 --- /dev/null +++ b/crates/matrix-sdk-crypto/src/types/snapshots/matrix_sdk_crypto__types__test__snapshot_signatures.snap @@ -0,0 +1,13 @@ +--- +source: crates/matrix-sdk-crypto/src/types/mod.rs +expression: signatures +--- +{ + "@alice:localhost": { + "curve25519:IJKLMNOP": "AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ", + "ed25519:ABCDEFGH": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + "@bob:localhost": { + "ed25519:ABCDEFGH": "SOME+B64+SOME+B64+SOME+B64+==" + } +}