diff --git a/src/database/tests.rs b/src/database/tests.rs index 9ae3aa5d..1b5f22c8 100644 --- a/src/database/tests.rs +++ b/src/database/tests.rs @@ -9,7 +9,7 @@ use tuwunel_core::{ }; use crate::{ - Ignore, Interfix, de, ser, + Cbor, Ignore, Interfix, de, ser, ser::{Json, serialize_to_vec}, }; @@ -204,6 +204,53 @@ fn ser_json_raw_json() { assert_eq!(&s, r#"{"event_fields":["content.body"]}"#); } +#[test] +fn ser_cbor() { + use tuwunel_core::ruma::api::client::filter::FilterDefinition; + + let filter = FilterDefinition { + event_fields: Some(vec!["content.body".to_owned()]), + ..Default::default() + }; + + let serialized = serialize_to_vec(Cbor(&filter)).expect("failed to serialize cbor"); + let deserialized: FilterDefinition = de::from_slice::>(&serialized) + .expect("failed to deserialize cbor") + .0; + + assert_eq!(filter.event_fields, deserialized.event_fields); +} + +#[test] +#[cfg(disable)] +fn ser_cbor_ruma_raw() { + use serde_json::value::RawValue; + use tuwunel_core::ruma::api::client::filter::FilterDefinition; + + struct Foo { + a: String, + b: Box, + } + + let filter = FilterDefinition { + event_fields: Some(vec!["content.body".to_owned()]), + ..Default::default() + }; + + let foo = Foo { + a: "test".into(), + b: serde_json::value::to_raw_value(&filter).expect("failed to serialize to raw value"), + }; + + let serialized = serialize_to_vec(Cbor(&foo)).expect("failed to serialize cbor"); + let deserialized: Foo = de::from_slice::>(&serialized) + .expect("failed to deserialize cbor") + .0; + + assert_eq!(foo.a, deserialized.a); + assert_eq!(foo.a.get(), deserialized.b.get()); +} + #[test] fn de_tuple() { let user_id: &UserId = "@user:example.com".try_into().unwrap();