Skip to main content

updatehub_package_schema/
raw_delta.rs

1// Copyright (C) 2021 O.S. Systems Sofware LTDA
2//
3// SPDX-License-Identifier: Apache-2.0
4
5use crate::definitions::{ChunkSize, TargetType};
6use serde::Deserialize;
7
8#[derive(Clone, Deserialize, PartialEq, Eq, Debug)]
9#[serde(rename_all = "kebab-case")]
10pub struct RawDelta {
11    pub filename: String,
12    pub sha256sum: String,
13    #[serde(flatten)]
14    pub target: TargetType,
15    pub size: u64,
16    #[serde(default)]
17    pub chunk_size: ChunkSize,
18    #[serde(default)]
19    pub seek: u64,
20}
21
22#[test]
23fn deserialize() {
24    use pretty_assertions::assert_eq;
25    use serde_json::json;
26
27    assert_eq!(
28        RawDelta {
29            filename: "etc/passwd".to_string(),
30            sha256sum: "cfe2be1c64b0387500853de0f48303e3de7b1c6f1508dc719eeafa0d41c36722"
31                .to_string(),
32            target: TargetType::Device(std::path::PathBuf::from("/dev/sda1")),
33            chunk_size: ChunkSize::default(),
34            seek: 0,
35            size: 1024,
36        },
37        serde_json::from_value::<RawDelta>(json!({
38            "filename": "etc/passwd",
39            "sha256sum": "cfe2be1c64b0387500853de0f48303e3de7b1c6f1508dc719eeafa0d41c36722",
40            "target-type": "device",
41            "target": "/dev/sda1",
42            "size": 1024,
43        }))
44        .unwrap()
45    );
46}