Add rountripping test for database cbor serialization.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-10-27 10:30:38 +00:00
parent 384add9784
commit 7596ad2019

View File

@@ -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::<Cbor<_>>(&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<RawValue>,
}
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::<Cbor<_>>(&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();