opentalk_roomserver_types_e2ee/
event.rs1use serde::{Deserialize, Serialize};
5
6use crate::{E2eeError, MlsMessages, WelcomeMessage};
7
8#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9#[serde(tag = "message", rename_all = "snake_case")]
10pub enum E2eeEvent {
11 Welcome(WelcomeMessage),
12 MlsMessages(MlsMessages),
13 Error(E2eeError),
14}
15
16impl From<E2eeError> for E2eeEvent {
17 fn from(err: E2eeError) -> Self {
18 Self::Error(err)
19 }
20}
21
22#[cfg(test)]
23mod tests {
24 use bytes::Bytes;
25 use pretty_assertions::assert_eq;
26 use serde_json::json;
27
28 use super::*;
29 use crate::{E2eeError, MlsMessages, WelcomeMessage};
30
31 fn sample_welcome_message() -> WelcomeMessage {
32 WelcomeMessage {
33 welcome: Bytes::from_static(b"welcome-bytes"),
34 ratchet_tree: Bytes::from_static(b"ratchet-tree-bytes"),
35 }
36 }
37
38 fn sample_mls_messages() -> MlsMessages {
39 MlsMessages {
40 payload: vec![Bytes::from_static(b"mls1"), Bytes::from_static(b"mls2")],
41 }
42 }
43
44 #[test]
45 fn welcome() {
46 let event = E2eeEvent::Welcome(sample_welcome_message());
47 let json_value = json!({
48 "message": "welcome",
49 "welcome": b"welcome-bytes",
50 "ratchet_tree": b"ratchet-tree-bytes",
51 });
52 assert_eq!(serde_json::to_value(&event).unwrap(), json_value);
53 assert_eq!(
54 serde_json::from_value::<E2eeEvent>(json_value).unwrap(),
55 event
56 );
57 }
58
59 #[test]
60 fn mls_messages() {
61 let event = E2eeEvent::MlsMessages(sample_mls_messages());
62 let json_value = json!({
63 "message": "mls_messages",
64 "payload": [
65 b"mls1",
66 b"mls2",
67 ]
68 });
69 assert_eq!(serde_json::to_value(&event).unwrap(), json_value);
70 assert_eq!(
71 serde_json::from_value::<E2eeEvent>(json_value).unwrap(),
72 event
73 );
74 }
75
76 #[test]
77 fn error() {
78 let event = E2eeEvent::Error(E2eeError::InvalidInvite);
79 let json_value = json!({
80 "message": "error",
81 "error": "invalid_invite"
82 });
83 assert_eq!(serde_json::to_value(&event).unwrap(), json_value);
84 assert_eq!(
85 serde_json::from_value::<E2eeEvent>(json_value).unwrap(),
86 event
87 );
88 }
89}