From 7596ad201975d66cdaeaf2c3be2b260966287fd6 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Mon, 27 Oct 2025 10:30:38 +0000 Subject: [PATCH] Add rountripping test for database cbor serialization. Signed-off-by: Jason Volk --- src/database/tests.rs | 49 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) 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();