Skip to content

Commit be84649

Browse files
committed
feat(sdk): Add assert_let_decrypted_state_event_content test utility macro
Signed-off-by: Skye Elliot <[email protected]>
1 parent 15e9cf8 commit be84649

File tree

1 file changed

+29
-0
lines changed
  • crates/matrix-sdk/src/test_utils

1 file changed

+29
-0
lines changed

crates/matrix-sdk/src/test_utils/mod.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,35 @@ macro_rules! assert_decrypted_message_eq {
266266
}};
267267
}
268268

269+
/// Given a [`TimelineEvent`], assert that the event is a decrypted state
270+
/// event, and that its content matches the given pattern via a let binding.
271+
#[macro_export]
272+
macro_rules! assert_let_decrypted_state_event_content {
273+
($pat:pat = $event:expr, $($msg:tt)*) => {
274+
assert_matches2::assert_let!(
275+
$crate::deserialized_responses::TimelineEventKind::Decrypted(decrypted_event) =
276+
$event.kind,
277+
"Event was not decrypted"
278+
);
279+
280+
let deserialized_event = decrypted_event
281+
.event
282+
.deserialize_as_unchecked::<$crate::ruma::events::AnyStateEvent>()
283+
.expect("We should be able to deserialize the decrypted event");
284+
285+
let content =
286+
deserialized_event.original_content().expect("The event should not have been redacted");
287+
288+
assert_matches2::assert_let!($pat = content);
289+
};
290+
($pat:pat = $event:expr) => {
291+
assert_let_decrypted_state_event_content!(
292+
$pat = $event,
293+
"The decrypted event did not match to the expected value"
294+
);
295+
};
296+
}
297+
269298
#[doc(hidden)]
270299
#[macro_export]
271300
macro_rules! assert_next_eq_with_timeout_impl {

0 commit comments

Comments
 (0)