updatehub_package_schema/
flash.rs1use 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}