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