Add back all commented-out room events

This commit is contained in:
Jonas Platte 2020-06-04 11:12:51 +02:00
parent 7d303fff7e
commit 74f680f8ed
No known key found for this signature in database
GPG Key ID: 7D261D771D915378
7 changed files with 73 additions and 57 deletions

View File

@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize};
pub mod aliases; pub mod aliases;
pub mod avatar; pub mod avatar;
// pub mod canonical_alias; pub mod canonical_alias;
pub mod create; pub mod create;
pub mod encrypted; pub mod encrypted;
pub mod encryption; pub mod encryption;
@ -17,12 +17,12 @@ pub mod guest_access;
pub mod history_visibility; pub mod history_visibility;
pub mod join_rules; pub mod join_rules;
pub mod member; pub mod member;
// pub mod message; pub mod message;
// pub mod name; pub mod name;
// pub mod pinned_events; pub mod pinned_events;
// pub mod power_levels; pub mod power_levels;
pub mod redaction; pub mod redaction;
// pub mod server_acl; pub mod server_acl;
pub mod third_party_invite; pub mod third_party_invite;
pub mod tombstone; pub mod tombstone;
pub mod topic; pub mod topic;

View File

@ -31,15 +31,15 @@ mod tests {
time::{Duration, UNIX_EPOCH}, time::{Duration, UNIX_EPOCH},
}; };
use ruma_identifiers::{EventId, RoomAliasId, UserId}; use ruma_identifiers::{EventId, RoomAliasId, RoomId, UserId};
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, to_value as to_json_value};
use super::{CanonicalAliasEvent, CanonicalAliasEventContent}; use super::CanonicalAliasEventContent;
use crate::{EventJson, UnsignedData}; use crate::{EventJson, StateEvent, UnsignedData};
#[test] #[test]
fn serialization_with_optional_fields_as_none() { fn serialization_with_optional_fields_as_none() {
let canonical_alias_event = CanonicalAliasEvent { let canonical_alias_event = StateEvent {
content: CanonicalAliasEventContent { content: CanonicalAliasEventContent {
alias: Some(RoomAliasId::try_from("#somewhere:localhost").unwrap()), alias: Some(RoomAliasId::try_from("#somewhere:localhost").unwrap()),
alt_aliases: Vec::new(), alt_aliases: Vec::new(),
@ -47,7 +47,7 @@ mod tests {
event_id: EventId::try_from("$h29iv0s8:example.com").unwrap(), event_id: EventId::try_from("$h29iv0s8:example.com").unwrap(),
origin_server_ts: UNIX_EPOCH + Duration::from_millis(1), origin_server_ts: UNIX_EPOCH + Duration::from_millis(1),
prev_content: None, prev_content: None,
room_id: None, room_id: RoomId::try_from("!dummy:example.com").unwrap(),
sender: UserId::try_from("@carl:example.com").unwrap(), sender: UserId::try_from("@carl:example.com").unwrap(),
state_key: "".to_string(), state_key: "".to_string(),
unsigned: UnsignedData::default(), unsigned: UnsignedData::default(),
@ -60,6 +60,7 @@ mod tests {
}, },
"event_id": "$h29iv0s8:example.com", "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1, "origin_server_ts": 1,
"room_id": "!dummy:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.canonical_alias" "type": "m.room.canonical_alias"
@ -74,13 +75,14 @@ mod tests {
"content": {}, "content": {},
"event_id": "$h29iv0s8:example.com", "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1, "origin_server_ts": 1,
"room_id": "!dummy:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.canonical_alias" "type": "m.room.canonical_alias"
}); });
assert_eq!( assert_eq!(
from_json_value::<EventJson<CanonicalAliasEvent>>(json_data) from_json_value::<EventJson<StateEvent<CanonicalAliasEventContent>>>(json_data)
.unwrap() .unwrap()
.deserialize() .deserialize()
.unwrap() .unwrap()
@ -98,12 +100,13 @@ mod tests {
}, },
"event_id": "$h29iv0s8:example.com", "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1, "origin_server_ts": 1,
"room_id": "!dummy:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.canonical_alias" "type": "m.room.canonical_alias"
}); });
assert_eq!( assert_eq!(
from_json_value::<EventJson<CanonicalAliasEvent>>(json_data) from_json_value::<EventJson<StateEvent<CanonicalAliasEventContent>>>(json_data)
.unwrap() .unwrap()
.deserialize() .deserialize()
.unwrap() .unwrap()
@ -121,12 +124,13 @@ mod tests {
}, },
"event_id": "$h29iv0s8:example.com", "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1, "origin_server_ts": 1,
"room_id": "!dummy:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.canonical_alias" "type": "m.room.canonical_alias"
}); });
assert_eq!( assert_eq!(
from_json_value::<EventJson<CanonicalAliasEvent>>(json_data) from_json_value::<EventJson<StateEvent<CanonicalAliasEventContent>>>(json_data)
.unwrap() .unwrap()
.deserialize() .deserialize()
.unwrap() .unwrap()
@ -145,12 +149,13 @@ mod tests {
}, },
"event_id": "$h29iv0s8:example.com", "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1, "origin_server_ts": 1,
"room_id": "!dummy:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.canonical_alias" "type": "m.room.canonical_alias"
}); });
assert_eq!( assert_eq!(
from_json_value::<EventJson<CanonicalAliasEvent>>(json_data) from_json_value::<EventJson<StateEvent<CanonicalAliasEventContent>>>(json_data)
.unwrap() .unwrap()
.deserialize() .deserialize()
.unwrap() .unwrap()

View File

@ -3,6 +3,7 @@
use std::time::SystemTime; use std::time::SystemTime;
use js_int::UInt; use js_int::UInt;
use ruma_events_macros::MessageEventContent;
use ruma_identifiers::{EventId, RoomId, UserId}; use ruma_identifiers::{EventId, RoomId, UserId};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@ -12,7 +13,8 @@ use crate::{FromRaw, UnsignedData};
pub mod feedback; pub mod feedback;
/// The payload for `MessageEvent`. /// The payload for `MessageEvent`.
#[derive(Clone, Debug, Serialize)] #[derive(Clone, Debug, Serialize, MessageEventContent)]
#[ruma_event(type = "m.room.message")]
#[serde(tag = "msgtype")] #[serde(tag = "msgtype")]
pub enum MessageEventContent { pub enum MessageEventContent {
/// An audio message. /// An audio message.
@ -473,11 +475,11 @@ mod tests {
use ruma_identifiers::{EventId, RoomId, UserId}; use ruma_identifiers::{EventId, RoomId, UserId};
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, to_value as to_json_value};
use super::{ use super::{AudioMessageEventContent, FormattedBody, MessageEventContent, MessageFormat};
AudioMessageEventContent, FormattedBody, MessageEvent, MessageEventContent, MessageFormat, use crate::{
room::message::{InReplyTo, RelatesTo, TextMessageEventContent},
EventJson, MessageEvent, UnsignedData,
}; };
use crate::room::message::{InReplyTo, RelatesTo, TextMessageEventContent};
use crate::{EventJson, UnsignedData};
#[test] #[test]
fn serialization() { fn serialization() {
@ -490,7 +492,7 @@ mod tests {
}), }),
event_id: EventId::try_from("$143273582443PhrSn:example.org").unwrap(), event_id: EventId::try_from("$143273582443PhrSn:example.org").unwrap(),
origin_server_ts: UNIX_EPOCH + Duration::from_millis(10_000), origin_server_ts: UNIX_EPOCH + Duration::from_millis(10_000),
room_id: Some(RoomId::try_from("!testroomid:example.org").unwrap()), room_id: RoomId::try_from("!testroomid:example.org").unwrap(),
sender: UserId::try_from("@user:example.org").unwrap(), sender: UserId::try_from("@user:example.org").unwrap(),
unsigned: UnsignedData::default(), unsigned: UnsignedData::default(),
}; };

View File

@ -2,13 +2,15 @@
use std::time::SystemTime; use std::time::SystemTime;
use ruma_events_macros::StateEventContent;
use ruma_identifiers::{EventId, RoomId, UserId}; use ruma_identifiers::{EventId, RoomId, UserId};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::{InvalidInput, TryFromRaw, UnsignedData}; use crate::{InvalidInput, TryFromRaw, UnsignedData};
/// The payload for `NameEvent`. /// The payload for `NameEvent`.
#[derive(Clone, Debug, Serialize)] #[derive(Clone, Debug, Serialize, StateEventContent)]
#[ruma_event(type = "m.room.name")]
pub struct NameEventContent { pub struct NameEventContent {
/// The name of the room. This MUST NOT exceed 255 bytes. /// The name of the room. This MUST NOT exceed 255 bytes.
pub(crate) name: Option<String>, pub(crate) name: Option<String>,
@ -76,20 +78,20 @@ mod tests {
use ruma_identifiers::{EventId, RoomId, UserId}; use ruma_identifiers::{EventId, RoomId, UserId};
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, to_value as to_json_value};
use crate::{EventJson, UnsignedData}; use crate::{EventJson, StateEvent, UnsignedData};
use super::NameEventContent; use super::NameEventContent;
#[test] #[test]
fn serialization_with_optional_fields_as_none() { fn serialization_with_optional_fields_as_none() {
let name_event = NameEvent { let name_event = StateEvent {
content: NameEventContent { content: NameEventContent {
name: Some("The room name".to_string()), name: Some("The room name".to_string()),
}, },
event_id: EventId::try_from("$h29iv0s8:example.com").unwrap(), event_id: EventId::try_from("$h29iv0s8:example.com").unwrap(),
origin_server_ts: UNIX_EPOCH + Duration::from_millis(1), origin_server_ts: UNIX_EPOCH + Duration::from_millis(1),
prev_content: None, prev_content: None,
room_id: None, room_id: RoomId::try_from("!n8f893n9:example.com").unwrap(),
sender: UserId::try_from("@carl:example.com").unwrap(), sender: UserId::try_from("@carl:example.com").unwrap(),
state_key: "".to_string(), state_key: "".to_string(),
unsigned: UnsignedData::default(), unsigned: UnsignedData::default(),
@ -102,6 +104,7 @@ mod tests {
}, },
"event_id": "$h29iv0s8:example.com", "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1, "origin_server_ts": 1,
"room_id": "!n8f893n9:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.name" "type": "m.room.name"
@ -112,7 +115,7 @@ mod tests {
#[test] #[test]
fn serialization_with_all_fields() { fn serialization_with_all_fields() {
let name_event = NameEvent { let name_event = StateEvent {
content: NameEventContent { content: NameEventContent {
name: Some("The room name".to_string()), name: Some("The room name".to_string()),
}, },
@ -121,7 +124,7 @@ mod tests {
prev_content: Some(NameEventContent { prev_content: Some(NameEventContent {
name: Some("The old name".to_string()), name: Some("The old name".to_string()),
}), }),
room_id: Some(RoomId::try_from("!n8f893n9:example.com").unwrap()), room_id: RoomId::try_from("!n8f893n9:example.com").unwrap(),
sender: UserId::try_from("@carl:example.com").unwrap(), sender: UserId::try_from("@carl:example.com").unwrap(),
state_key: "".to_string(), state_key: "".to_string(),
unsigned: UnsignedData { unsigned: UnsignedData {
@ -156,12 +159,13 @@ mod tests {
"content": {}, "content": {},
"event_id": "$h29iv0s8:example.com", "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1, "origin_server_ts": 1,
"room_id": "!n8f893n9:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.name" "type": "m.room.name"
}); });
assert_eq!( assert_eq!(
from_json_value::<EventJson<NameEvent>>(json_data) from_json_value::<EventJson<StateEvent<NameEventContent>>>(json_data)
.unwrap() .unwrap()
.deserialize() .deserialize()
.unwrap() .unwrap()
@ -210,12 +214,13 @@ mod tests {
}, },
"event_id": "$h29iv0s8:example.com", "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1, "origin_server_ts": 1,
"room_id": "!n8f893n9:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.name" "type": "m.room.name"
}); });
assert_eq!( assert_eq!(
from_json_value::<EventJson<NameEvent>>(json_data) from_json_value::<EventJson<StateEvent<NameEventContent>>>(json_data)
.unwrap() .unwrap()
.deserialize() .deserialize()
.unwrap() .unwrap()
@ -233,12 +238,13 @@ mod tests {
}, },
"event_id": "$h29iv0s8:example.com", "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1, "origin_server_ts": 1,
"room_id": "!n8f893n9:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.name" "type": "m.room.name"
}); });
assert_eq!( assert_eq!(
from_json_value::<EventJson<NameEvent>>(json_data) from_json_value::<EventJson<StateEvent<NameEventContent>>>(json_data)
.unwrap() .unwrap()
.deserialize() .deserialize()
.unwrap() .unwrap()
@ -257,13 +263,14 @@ mod tests {
}, },
"event_id": "$h29iv0s8:example.com", "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1, "origin_server_ts": 1,
"room_id": "!n8f893n9:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.name" "type": "m.room.name"
}); });
assert_eq!( assert_eq!(
from_json_value::<EventJson<NameEvent>>(json_data) from_json_value::<EventJson<StateEvent<NameEventContent>>>(json_data)
.unwrap() .unwrap()
.deserialize() .deserialize()
.unwrap() .unwrap()

View File

@ -22,10 +22,8 @@ mod tests {
use ruma_identifiers::{EventId, RoomId, UserId}; use ruma_identifiers::{EventId, RoomId, UserId};
use serde_json::to_string; use serde_json::to_string;
use crate::{ use super::PinnedEventsEventContent;
room::pinned_events::{PinnedEventsEvent, PinnedEventsEventContent}, use crate::{EventJson, StateEvent, UnsignedData};
EventJson, UnsignedData,
};
#[test] #[test]
fn serialization_deserialization() { fn serialization_deserialization() {
@ -34,23 +32,24 @@ mod tests {
content.pinned.push(EventId::new("example.com").unwrap()); content.pinned.push(EventId::new("example.com").unwrap());
content.pinned.push(EventId::new("example.com").unwrap()); content.pinned.push(EventId::new("example.com").unwrap());
let event = PinnedEventsEvent { let event = StateEvent {
content: content.clone(), content: content.clone(),
event_id: EventId::new("example.com").unwrap(), event_id: EventId::new("example.com").unwrap(),
origin_server_ts: UNIX_EPOCH + Duration::from_millis(1_432_804_485_886u64), origin_server_ts: UNIX_EPOCH + Duration::from_millis(1_432_804_485_886u64),
prev_content: None, prev_content: None,
room_id: Some(RoomId::new("example.com").unwrap()), room_id: RoomId::new("example.com").unwrap(),
sender: UserId::new("example.com").unwrap(), sender: UserId::new("example.com").unwrap(),
state_key: "".to_string(), state_key: "".to_string(),
unsigned: UnsignedData::default(), unsigned: UnsignedData::default(),
}; };
let serialized_event = to_string(&event).unwrap(); let serialized_event = to_string(&event).unwrap();
let parsed_event: PinnedEventsEvent = let parsed_event = serde_json::from_str::<EventJson<StateEvent<PinnedEventsEventContent>>>(
serde_json::from_str::<EventJson<_>>(&serialized_event) &serialized_event,
.unwrap() )
.deserialize() .unwrap()
.unwrap(); .deserialize()
.unwrap();
assert_eq!(parsed_event.event_id, event.event_id); assert_eq!(parsed_event.event_id, event.event_id);
assert_eq!(parsed_event.room_id, event.room_id); assert_eq!(parsed_event.room_id, event.room_id);

View File

@ -138,16 +138,14 @@ mod tests {
use ruma_identifiers::{EventId, RoomId, UserId}; use ruma_identifiers::{EventId, RoomId, UserId};
use serde_json::{json, to_value as to_json_value}; use serde_json::{json, to_value as to_json_value};
use super::{ use super::{default_power_level, NotificationPowerLevels, PowerLevelsEventContent};
default_power_level, NotificationPowerLevels, PowerLevelsEvent, PowerLevelsEventContent, use crate::{EventType, StateEvent, UnsignedData};
};
use crate::{EventType, UnsignedData};
#[test] #[test]
fn serialization_with_optional_fields_as_none() { fn serialization_with_optional_fields_as_none() {
let default = default_power_level(); let default = default_power_level();
let power_levels_event = PowerLevelsEvent { let power_levels_event = StateEvent {
content: PowerLevelsEventContent { content: PowerLevelsEventContent {
ban: default, ban: default,
events: BTreeMap::new(), events: BTreeMap::new(),
@ -163,7 +161,7 @@ mod tests {
event_id: EventId::try_from("$h29iv0s8:example.com").unwrap(), event_id: EventId::try_from("$h29iv0s8:example.com").unwrap(),
origin_server_ts: UNIX_EPOCH + Duration::from_millis(1), origin_server_ts: UNIX_EPOCH + Duration::from_millis(1),
prev_content: None, prev_content: None,
room_id: None, room_id: RoomId::try_from("!n8f893n9:example.com").unwrap(),
unsigned: UnsignedData::default(), unsigned: UnsignedData::default(),
sender: UserId::try_from("@carl:example.com").unwrap(), sender: UserId::try_from("@carl:example.com").unwrap(),
state_key: "".to_string(), state_key: "".to_string(),
@ -174,6 +172,7 @@ mod tests {
"content": {}, "content": {},
"event_id": "$h29iv0s8:example.com", "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1, "origin_server_ts": 1,
"room_id": "!n8f893n9:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.power_levels" "type": "m.room.power_levels"
@ -185,7 +184,7 @@ mod tests {
#[test] #[test]
fn serialization_with_all_fields() { fn serialization_with_all_fields() {
let user = UserId::try_from("@carl:example.com").unwrap(); let user = UserId::try_from("@carl:example.com").unwrap();
let power_levels_event = PowerLevelsEvent { let power_levels_event = StateEvent {
content: PowerLevelsEventContent { content: PowerLevelsEventContent {
ban: Int::from(23), ban: Int::from(23),
events: btreemap! { events: btreemap! {
@ -225,7 +224,7 @@ mod tests {
room: Int::from(42), room: Int::from(42),
}, },
}), }),
room_id: Some(RoomId::try_from("!n8f893n9:example.com").unwrap()), room_id: RoomId::try_from("!n8f893n9:example.com").unwrap(),
unsigned: UnsignedData { unsigned: UnsignedData {
age: Some(Int::from(100)), age: Some(Int::from(100)),
..UnsignedData::default() ..UnsignedData::default()

View File

@ -43,22 +43,26 @@ ruma_event! {
mod tests { mod tests {
use serde_json::{from_value as from_json_value, json}; use serde_json::{from_value as from_json_value, json};
use super::ServerAclEvent; use super::ServerAclEventContent;
use crate::EventJson; use crate::{EventJson, StateEvent};
#[test] #[test]
fn default_values() { fn default_values() {
let json_data = json!({ let json_data = json!({
"content": {}, "content": {},
"event_id": "$h29iv0s8:example.com","origin_server_ts":1, "event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1,
"room_id": "!n8f893n9:example.com",
"sender": "@carl:example.com", "sender": "@carl:example.com",
"state_key": "", "state_key": "",
"type": "m.room.server_acl" "type": "m.room.server_acl"
}); });
let server_acl_event: ServerAclEvent = from_json_value::<EventJson<_>>(json_data)
.unwrap() let server_acl_event =
.deserialize() from_json_value::<EventJson<StateEvent<ServerAclEventContent>>>(json_data)
.unwrap(); .unwrap()
.deserialize()
.unwrap();
assert_eq!(server_acl_event.content.allow_ip_literals, true); assert_eq!(server_acl_event.content.allow_ip_literals, true);
assert!(server_acl_event.content.allow.is_empty()); assert!(server_acl_event.content.allow.is_empty());