From 64247c1ceb04de65996c33a90791c4a337c5e7bf Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Mon, 23 Jan 2023 12:58:41 -0500 Subject: [PATCH] Add more tests for resource serialization --- crates/rdsys-backend/src/lib.rs | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/crates/rdsys-backend/src/lib.rs b/crates/rdsys-backend/src/lib.rs index 459eb46..1887bea 100644 --- a/crates/rdsys-backend/src/lib.rs +++ b/crates/rdsys-backend/src/lib.rs @@ -23,7 +23,7 @@ pub struct Resource { params: Option>, } -#[derive(Deserialize)] +#[derive(Deserialize, PartialEq, Debug)] pub struct ResourceDiff { new: Option>>, changed: Option>>, @@ -102,6 +102,7 @@ mod tests { { "type": "obfs2", "blocked_in": {}, + "Location": null, "protocol": "tcp", "address": "176.247.216.207", "port": 42810, @@ -158,6 +159,32 @@ mod tests { "gone": null, "full_update": true }"#; - let _diff: ResourceDiff = serde_json::from_str(data).unwrap(); + let diff: ResourceDiff = serde_json::from_str(data).unwrap(); + assert_ne!(diff.new, None); + assert_eq!(diff.changed, None); + assert_eq!(diff.gone, None); + assert_eq!(diff.full_update, true); + if let Some(new) = diff.new { + assert_eq!(new["obfs2"][0].r#type, "obfs2"); + } + } + + #[test] + fn deserialize_empty_resource_diff() { + let data = r#" + { + "new": null, + "changed": null, + "gone": null, + "full_update": true + }"#; + let diff: ResourceDiff = serde_json::from_str(data).unwrap(); + let empty_diff = ResourceDiff { + new: None, + changed: None, + gone: None, + full_update: true, + }; + assert_eq!(diff, empty_diff); } }