updatehub_package_schema/
ubifs.rs

1// Copyright (C) 2019 O.S. Systems Sofware LTDA
2//
3// SPDX-License-Identifier: Apache-2.0
4
5use crate::definitions::TargetType;
6use serde::Deserialize;
7
8#[derive(Clone, Deserialize, PartialEq, Eq, Debug)]
9#[serde(rename_all = "kebab-case")]
10pub struct Ubifs {
11    pub filename: String,
12    pub size: u64,
13    pub sha256sum: String,
14    #[serde(flatten)]
15    pub target: TargetType,
16
17    #[serde(default)]
18    pub compressed: bool,
19    #[serde(default)]
20    pub required_uncompressed_size: u64,
21}
22
23#[test]
24fn deserialize() {
25    use pretty_assertions::assert_eq;
26    use serde_json::json;
27
28    assert_eq!(
29        super::Object::Ubifs(Box::new(Ubifs {
30            filename: "ubifs".to_string(),
31            size: 1024,
32            sha256sum: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
33                .to_string(),
34            target: TargetType::UBIVolume("home".to_string()),
35
36            compressed: true,
37            required_uncompressed_size: 2048,
38        })),
39        serde_json::from_value::<super::Object>(json!({
40            "mode": "ubifs",
41            "filename": "ubifs",
42            "sha256sum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
43            "size": 1024,
44            "target-type": "ubivolume",
45            "target": "home",
46            "compressed": true,
47            "required-uncompressed-size": 2048
48        }))
49        .unwrap()
50    );
51}