Unverified Commit 0caf7982 authored by Nugine's avatar Nugine Committed by GitHub
Browse files

fix(s3s/dto): fix GetNotificationConfigurationOutput (#193)

parent f073bdfc
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -328,8 +328,13 @@ fn unify_operation_types(ops: &Operations, space: &mut RustTypes) {
            if op.smithy_output == op.output {
                continue;
            }
            let rust::Type::Struct(mut ty) = space[&op.smithy_output].clone() else { panic!() };
            assert_eq!(op.name, "GetBucketNotificationConfiguration");
            assert_eq!(op.output, "GetBucketNotificationConfigurationOutput");
            let rust::Type::Struct(ref origin) = space[&op.smithy_output] else { panic!() };
            let mut ty = origin.clone();
            ty.name.clone_from(&op.output); // duplicate type
            assert!(origin.xml_name.is_none());
            ty.xml_name = Some(origin.name.clone());
            ty
        };
        assert!(space.insert(op.output.clone(), rust::Type::Struct(output_ty)).is_none());
+2 −2
Original line number Diff line number Diff line
@@ -944,13 +944,13 @@ impl<'xml> Deserialize<'xml> for GetBucketLoggingOutput {

impl Serialize for GetBucketNotificationConfigurationOutput {
    fn serialize<W: Write>(&self, s: &mut Serializer<W>) -> SerResult {
        s.content("GetBucketNotificationConfigurationOutput", self)
        s.content("NotificationConfiguration", self)
    }
}

impl<'xml> Deserialize<'xml> for GetBucketNotificationConfigurationOutput {
    fn deserialize(d: &mut Deserializer<'xml>) -> DeResult<Self> {
        d.named_element("GetBucketNotificationConfigurationOutput", Deserializer::content)
        d.named_element("NotificationConfiguration", Deserializer::content)
    }
}

+15 −0
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@ use s3s::xml;

use std::fmt;

use rust_utils::default::default;

fn deserialize_content<T>(input: &[u8]) -> xml::DeResult<T>
where
    T: for<'xml> xml::DeserializeContent<'xml>,
@@ -229,3 +231,16 @@ fn get_bucket_location_output() {
        test_serde(&val);
    }
}

#[test]
fn get_bucket_notification_configuration_output() {
    let xml = "<NotificationConfiguration></NotificationConfiguration>";

    let val = deserialize::<s3s::dto::NotificationConfiguration>(xml.as_bytes()).unwrap();
    assert_eq!(val, default());
    test_serde(&val);

    let val = deserialize::<s3s::dto::GetBucketNotificationConfigurationOutput>(xml.as_bytes()).unwrap();
    assert_eq!(val, default());
    test_serde(&val);
}