Unverified Commit 6e3ee844 authored by Nugine's avatar Nugine
Browse files

s3s: tests: xml: d001

parent c9ee4552
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -516,6 +516,8 @@ fn codegen_xml_de(ops: &Operations, rust_types: &RustTypes, g: &mut Codegen) {
        g.ln(f!("impl<'xml> xml::Deserialize<'xml> for {} {{", ty.name));
        g.ln("fn deserialize(d: &mut xml::Deserializer<'xml>) -> xml::DeResult<Self> {");

        assert!(ty.xml_name.is_none()); // canary for <https://github.com/Nugine/s3s/issues/2>

        let xml_name = xml_name.or(ty.xml_name.as_deref()).unwrap_or(&ty.name);
        g.ln(f!("d.named_element(\"{xml_name}\", |d|d.content())"));

+1 −0
Original line number Diff line number Diff line
@@ -35,4 +35,5 @@ transform-stream = "0.2.0"
urlencoding = "2.1.2"

[dev-dependencies]
const-str = "0.5.3"
tokio = { version = "1.24.1", features = ["full"] }
+5 −0
Original line number Diff line number Diff line
@@ -21,3 +21,8 @@ pub mod service;
pub use self::auth::*;
pub use self::error::*;
pub use self::ops::S3;

#[cfg(test)]
mod tests {
    mod xml;
}
+42 −0
Original line number Diff line number Diff line
// TODO: auto-generated tests

use crate::xml;

use const_str::concat;

const DATA_DIR: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/src/tests/xml");

fn read(path: &str) -> Vec<u8> {
    std::fs::read(path).unwrap()
}

fn deserialize<T>(input: &[u8]) -> xml::DeResult<T>
where
    T: for<'xml> xml::Deserialize<'xml>,
{
    let mut d = xml::Deserializer::new(input);
    let ans = T::deserialize(&mut d)?;
    d.expect_eof()?;
    Ok(ans)
}

/// See <https://github.com/Nugine/s3s/issues/2>
#[test]
fn d001() {
    use crate::dto::CompletedMultipartUpload;

    let input = read(concat!(DATA_DIR, "/d001.xml"));
    let ans = deserialize::<CompletedMultipartUpload>(&input).unwrap();

    let parts = ans.parts.as_deref().unwrap();
    assert_eq!(parts.len(), 3);

    assert_eq!(parts[0].part_number, 1);
    assert_eq!(parts[0].e_tag.as_deref(), Some("\"a54357aff0632cce46d942af68356b38\""));

    assert_eq!(parts[1].part_number, 2);
    assert_eq!(parts[1].e_tag.as_deref(), Some("\"0c78aef83f66abc1fa1e8477f296d394\""));

    assert_eq!(parts[2].part_number, 3);
    assert_eq!(parts[2].e_tag.as_deref(), Some("\"acbd18db4cc2f85cedef654fccc4a4d8\""));
}
+15 −0
Original line number Diff line number Diff line
<CompleteMultipartUpload>
    <Part>
        <PartNumber>1</PartNumber>
        <ETag>"a54357aff0632cce46d942af68356b38"</ETag>
    </Part>
    <Part>
        <PartNumber>2</PartNumber>
        <ETag>"0c78aef83f66abc1fa1e8477f296d394"</ETag>
    </Part>
    <Part>
        <PartNumber>3</PartNumber>
        <ETag>"acbd18db4cc2f85cedef654fccc4a4d8"</ETag>
    </Part>
</CompleteMultipartUpload>
    
 No newline at end of file