Skip to content

Commit 31780e7

Browse files
meta data serde test
1 parent 10d9c9a commit 31780e7

File tree

4 files changed

+64
-2
lines changed

4 files changed

+64
-2
lines changed

aws/rust-runtime/aws-credential-types/Cargo.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ description = "Types for AWS SDK credentials."
66
edition = "2021"
77
license = "Apache-2.0"
88
repository = "https://github.com/awslabs/smithy-rs"
9-
[package.metadata.cargo-udeps]
10-
ignore = true
9+
[package.metadata.cargo-udeps.ignore]
10+
normal = ["regex"]
11+
development = ["regex"]
12+
build = ["regex"]
1113
[features]
1214
hardcoded-credentials = []
1315
test-util = []

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

Lines changed: 48 additions & 0 deletions
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,36 @@ impl fmt::Display for ErrorMetadata {
173188
}
174189

175190
impl std::error::Error for ErrorMetadata {}
191+
192+
#[cfg(all(
193+
test,
194+
any(
195+
all(aws_sdk_unstable, feature = "serde-deserialize"),
196+
all(aws_sdk_unstable, feature = "serde-serialize")
197+
)
198+
))]
199+
mod test {
200+
use super::*;
201+
202+
#[test]
203+
/// tests de/ser on ErrorMetaData.
204+
fn test_error_meta_data() {
205+
let mut data = Builder::default()
206+
.code("code")
207+
.message("message")
208+
.custom("hello", "world");
209+
let ok = serde_json::to_string_pretty(&EMPTY_ERROR_METADATA).unwrap();
210+
assert_eq!(
211+
&ok,
212+
include_str!("../../test-data/error_meta_data_empty.json")
213+
);
214+
assert_eq!(
215+
serde_json::from_str(include_str!("../../test-data/error_meta_data.json")).unwrap(),
216+
&data
217+
);
218+
assert_eq!(
219+
serde_json::from_str(include_str!("../../test-data/error_meta_data.json")).unwrap(),
220+
data.build()
221+
);
222+
}
223+
}
Lines changed: 7 additions & 0 deletions
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+
}
Lines changed: 5 additions & 0 deletions
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)