Skip to content

Commit 5096e7f

Browse files
meta data serde test
1 parent 10d9c9a commit 5096e7f

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

rust-runtime/aws-smithy-types/src/error/metadata.rs

+34
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,23 @@ pub struct ErrorMetadata {
5656
}
5757

5858
/// Builder for [`ErrorMetadata`].
59+
#[cfg_attr(
60+
all(aws_sdk_unstable, feature = "serde-serialize"),
61+
derive(serde::Serialize)
62+
)]
63+
#[cfg_attr(
64+
all(aws_sdk_unstable, feature = "serde-deserialize"),
65+
derive(serde::Deserialize)
66+
)]
5967
#[derive(Debug, Default)]
6068
pub struct Builder {
69+
#[cfg_attr(
70+
any(
71+
all(aws_sdk_unstable, feature = "serde-deserialize"),
72+
all(aws_sdk_unstable, feature = "serde-serialize")
73+
),
74+
serde(flatten)
75+
)]
6176
inner: ErrorMetadata,
6277
}
6378

@@ -173,3 +188,22 @@ impl fmt::Display for ErrorMetadata {
173188
}
174189

175190
impl std::error::Error for ErrorMetadata {}
191+
192+
#[cfg(all(test, any(
193+
all(aws_sdk_unstable, feature = "serde-deserialize"),
194+
all(aws_sdk_unstable, feature = "serde-serialize")
195+
)))]
196+
mod test {
197+
use super::*;
198+
199+
#[test]
200+
/// tests de/ser on ErrorMetaData.
201+
fn test_error_meta_data() {
202+
let data = Builder::default().code("code").message("message").custom("hello", "world");
203+
let ok = serde_json::to_string_pretty(&EMPTY_ERROR_METADATA).unwrap();
204+
assert_eq!(&ok, include_str!("../../test-data/error_meta_data_empty.json"));
205+
assert_eq!(serde_json::from_str(include_str!("../../test-data/error_meta_data.json")).unwrap(), &data);
206+
assert_eq!(serde_json::from_str(include_str!("../../test-data/error_meta_data.json")).unwrap(), data.build());
207+
208+
}
209+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"code": "code",
3+
"message": "message",
4+
"extras": {
5+
"hello": "world"
6+
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"code": null,
3+
"message": null,
4+
"extras": null
5+
}

0 commit comments

Comments
 (0)