updatehub_package_schema/
flash.rs

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