events: Remove Serialize implementations for event enums

This commit is contained in:
Jonas Platte 2022-02-12 01:33:47 +01:00
parent 510b8485d8
commit f130d09daa
No known key found for this signature in database
GPG Key ID: CC154DE0E30B7C67
6 changed files with 10 additions and 103 deletions

View File

@ -63,8 +63,6 @@ fn expand_event_enum(
variants: &[EventEnumVariant], variants: &[EventEnumVariant],
ruma_events: &TokenStream, ruma_events: &TokenStream,
) -> TokenStream { ) -> TokenStream {
let serde = quote! { #ruma_events::exports::serde };
let event_struct = kind.to_event_ident(var); let event_struct = kind.to_event_ident(var);
let ident = kind.to_event_enum_ident(var); let ident = kind.to_event_enum_ident(var);
@ -78,8 +76,7 @@ fn expand_event_enum(
quote! { quote! {
#( #attrs )* #( #attrs )*
#[derive(Clone, Debug, #serde::Serialize)] #[derive(Clone, Debug)]
#[serde(untagged)]
#[allow(clippy::large_enum_variant)] #[allow(clippy::large_enum_variant)]
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)] #[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
pub enum #ident { pub enum #ident {
@ -377,8 +374,7 @@ fn expand_possibly_redacted_enum(
quote! { quote! {
/// An enum that holds either regular un-redacted events or redacted events. /// An enum that holds either regular un-redacted events or redacted events.
#[derive(Clone, Debug, #serde::Serialize)] #[derive(Clone, Debug)]
#[serde(untagged)]
#[allow(clippy::exhaustive_enums)] #[allow(clippy::exhaustive_enums)]
pub enum #ident { pub enum #ident {
/// An un-redacted event. /// An un-redacted event.

View File

@ -2,7 +2,7 @@ use ruma_common::MilliSecondsSinceUnixEpoch;
use ruma_events_macros::{event_enum, EventEnumFromEvent}; use ruma_events_macros::{event_enum, EventEnumFromEvent};
use ruma_identifiers::{EventId, RoomId, RoomVersionId, UserId}; use ruma_identifiers::{EventId, RoomId, RoomVersionId, UserId};
use ruma_serde::from_raw_json_value; use ruma_serde::from_raw_json_value;
use serde::{de, Deserialize, Serialize}; use serde::{de, Deserialize};
use serde_json::value::RawValue as RawJsonValue; use serde_json::value::RawValue as RawJsonValue;
use crate::{ use crate::{
@ -123,8 +123,7 @@ macro_rules! room_ev_accessor {
/// Any room event. /// Any room event.
#[allow(clippy::large_enum_variant, clippy::exhaustive_enums)] #[allow(clippy::large_enum_variant, clippy::exhaustive_enums)]
#[derive(Clone, Debug, Serialize, EventEnumFromEvent)] #[derive(Clone, Debug, EventEnumFromEvent)]
#[serde(untagged)]
pub enum AnyRoomEvent { pub enum AnyRoomEvent {
/// Any message event. /// Any message event.
Message(AnyMessageEvent), Message(AnyMessageEvent),
@ -150,8 +149,7 @@ impl AnyRoomEvent {
/// ///
/// Sync room events are room event without a `room_id`, as returned in `/sync` responses. /// Sync room events are room event without a `room_id`, as returned in `/sync` responses.
#[allow(clippy::large_enum_variant, clippy::exhaustive_enums)] #[allow(clippy::large_enum_variant, clippy::exhaustive_enums)]
#[derive(Clone, Debug, Serialize, EventEnumFromEvent)] #[derive(Clone, Debug, EventEnumFromEvent)]
#[serde(untagged)]
pub enum AnySyncRoomEvent { pub enum AnySyncRoomEvent {
/// Any sync message event. /// Any sync message event.
Message(AnySyncMessageEvent), Message(AnySyncMessageEvent),

View File

@ -1,15 +1,12 @@
use assign::assign;
use js_int::{uint, UInt}; use js_int::{uint, UInt};
use matches::assert_matches; use matches::assert_matches;
use ruma_common::MilliSecondsSinceUnixEpoch; use ruma_common::MilliSecondsSinceUnixEpoch;
use ruma_identifiers::{event_id, mxc_uri, room_id, user_id}; use ruma_identifiers::{event_id, room_id, user_id};
use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; use serde_json::{from_value as from_json_value, json};
use ruma_events::{ use ruma_events::{
call::{answer::CallAnswerEventContent, SessionDescription, SessionDescriptionType}, call::{answer::CallAnswerEventContent, SessionDescription, SessionDescriptionType},
room::{ImageInfo, ThumbnailInfo}, AnyMessageEvent, MessageEvent,
sticker::StickerEventContent,
AnyMessageEvent, MessageEvent, Unsigned,
}; };
#[test] #[test]
@ -65,59 +62,3 @@ fn deserialize_message_event() {
&& unsigned.is_empty() && unsigned.is_empty()
); );
} }
#[test]
fn serialize_message_event() {
let aliases_event = AnyMessageEvent::Sticker(MessageEvent {
content: StickerEventContent::new(
"Hello".into(),
assign!(ImageInfo::new(), {
height: UInt::new(423),
width: UInt::new(1011),
mimetype: Some("image/png".into()),
size: UInt::new(84242),
thumbnail_info: Some(Box::new(assign!(ThumbnailInfo::new(), {
width: UInt::new(800),
height: UInt::new(334),
mimetype: Some("image/png".into()),
size: UInt::new(82595),
}))),
thumbnail_url: Some(mxc_uri!("mxc://matrix.org/mnrsnsRRS787TSts").to_owned()),
}),
mxc_uri!("mxc://matrix.org/arsrns98rsRSR").to_owned(),
),
event_id: event_id!("$h29iv0s8:example.com").to_owned(),
origin_server_ts: MilliSecondsSinceUnixEpoch(uint!(1)),
room_id: room_id!("!roomid:room.com").to_owned(),
sender: user_id!("@carl:example.com").to_owned(),
unsigned: Unsigned::default(),
});
let actual = to_json_value(&aliases_event).unwrap();
let expected = json!({
"content": {
"body": "Hello",
"info": {
"h": 423,
"mimetype": "image/png",
"size": 84242,
"thumbnail_info": {
"h": 334,
"mimetype": "image/png",
"size": 82595,
"w": 800
},
"thumbnail_url": "mxc://matrix.org/mnrsnsRRS787TSts",
"w": 1011
},
"url": "mxc://matrix.org/arsrns98rsRSR"
},
"event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1,
"room_id": "!roomid:room.com",
"sender": "@carl:example.com",
"type": "m.sticker",
});
assert_eq!(actual, expected);
}

View File

@ -242,12 +242,8 @@ fn deserialize_message_then_convert_to_full() {
let sync_ev: AnySyncMessageEvent = from_json_value(json_data).unwrap(); let sync_ev: AnySyncMessageEvent = from_json_value(json_data).unwrap();
// Test conversion method
let full = sync_ev.into_full_event(rid.to_owned());
let full_json = to_json_value(full).unwrap();
assert_matches!( assert_matches!(
from_json_value::<AnyMessageEvent>(full_json).unwrap(), sync_ev.into_full_event(rid.to_owned()),
AnyMessageEvent::CallAnswer(MessageEvent { AnyMessageEvent::CallAnswer(MessageEvent {
content: CallAnswerEventContent { content: CallAnswerEventContent {
answer: SessionDescription { answer: SessionDescription {

View File

@ -287,12 +287,8 @@ fn deserialize_full_event_convert_to_sync() {
let full_ev: AnyStateEvent = from_json_value(json_data).unwrap(); let full_ev: AnyStateEvent = from_json_value(json_data).unwrap();
// Test conversion to sync event (without room_id field)
let sync: AnySyncStateEvent = full_ev.into();
let sync_json = to_json_value(sync).unwrap();
assert_matches!( assert_matches!(
from_json_value::<AnySyncStateEvent>(sync_json).unwrap(), AnySyncStateEvent::from(full_ev),
AnySyncStateEvent::RoomAliases(SyncStateEvent { AnySyncStateEvent::RoomAliases(SyncStateEvent {
content, content,
event_id, event_id,

View File

@ -28,26 +28,6 @@ fn serialize_stripped_state_event_any_content() {
assert_eq!(to_json_value(&event).unwrap(), json_data); assert_eq!(to_json_value(&event).unwrap(), json_data);
} }
#[test]
fn serialize_stripped_state_event_any_event() {
let event = AnyStrippedStateEvent::RoomTopic(StrippedStateEvent {
content: RoomTopicEventContent::new("Testing room".into()),
state_key: "".into(),
sender: user_id!("@example:localhost").to_owned(),
});
let json_data = json!({
"content": {
"topic": "Testing room"
},
"type": "m.room.topic",
"state_key": "",
"sender": "@example:localhost"
});
assert_eq!(to_json_value(&event).unwrap(), json_data);
}
#[test] #[test]
fn deserialize_stripped_state_events() { fn deserialize_stripped_state_events() {
let name_event = json!({ let name_event = json!({