test(sdk): Add handle_live_redacted_message_event

This commit is contained in:
Jonas Platte
2023-02-14 13:31:42 +01:00
committed by Jonas Platte
parent e246735866
commit 13ffadc32a
2 changed files with 29 additions and 20 deletions
@@ -9,7 +9,9 @@ use ruma::{
relation::{Annotation, Replacement},
room::{
member::{MembershipState, RedactedRoomMemberEventContent, RoomMemberEventContent},
message::{self, MessageType, RoomMessageEventContent},
message::{
self, MessageType, RedactedRoomMessageEventContent, RoomMessageEventContent,
},
name::RoomNameEventContent,
topic::RedactedRoomTopicEventContent,
},
@@ -76,25 +78,8 @@ async fn edit_redacted() {
let timeline = TestTimeline::new();
let mut stream = timeline.stream();
// Ruma currently fails to serialize most redacted events correctly
timeline
.handle_live_custom_event(json!({
"content": {},
"event_id": "$eeG0HA0FAZ37wP8kXlNkxx3I",
"origin_server_ts": 10,
"sender": "@alice:example.org",
"type": "m.room.message",
"unsigned": {
"redacted_because": {
"content": {},
"redacts": "$eeG0HA0FAZ37wP8kXlNkxx3K",
"event_id": "$N6eUCBc3vu58PL8TobGaVQzM",
"sender": "@alice:example.org",
"origin_server_ts": 5,
"type": "m.room.redaction",
},
},
}))
.handle_live_redacted_message_event(*ALICE, RedactedRoomMessageEventContent::new())
.await;
let _day_divider = assert_matches!(stream.next().await, Some(VecDiff::Push { value }) => value);
let item = assert_matches!(stream.next().await, Some(VecDiff::Push { value }) => value);
@@ -27,7 +27,8 @@ use once_cell::sync::Lazy;
use ruma::{
events::{
AnyMessageLikeEventContent, EmptyStateKey, MessageLikeEventContent,
RedactedStateEventContent, StateEventContent, StaticStateEventContent,
RedactedMessageLikeEventContent, RedactedStateEventContent, StateEventContent,
StaticStateEventContent,
},
serde::Raw,
server_name, user_id, EventId, MilliSecondsSinceUnixEpoch, OwnedTransactionId, TransactionId,
@@ -88,6 +89,15 @@ impl TestTimeline {
self.inner.handle_live_event(raw, None).await;
}
async fn handle_live_redacted_message_event<C>(&self, sender: &UserId, content: C)
where
C: RedactedMessageLikeEventContent,
{
let ev = make_redacted_message_event(sender, content);
let raw = Raw::new(&ev).unwrap().cast();
self.inner.handle_live_event(raw, None).await;
}
async fn handle_live_state_event<C>(&self, sender: &UserId, content: C, prev_content: Option<C>)
where
C: StaticStateEventContent<StateKey = EmptyStateKey>,
@@ -181,6 +191,20 @@ fn make_message_event<C: MessageLikeEventContent>(sender: &UserId, content: C) -
})
}
fn make_redacted_message_event<C: RedactedMessageLikeEventContent>(
sender: &UserId,
content: C,
) -> JsonValue {
json!({
"type": content.event_type(),
"content": content,
"event_id": EventId::new(server_name!("dummy.server")),
"sender": sender,
"origin_server_ts": next_server_ts(),
"unsigned": make_redacted_unsigned(sender),
})
}
fn make_state_event<C: StateEventContent>(
sender: &UserId,
state_key: &str,