mithril_common/messages/
cardano_database_digest_list.rs

1use serde::{Deserialize, Serialize};
2
3use crate::entities::{HexEncodedDigest, ImmutableFileName};
4
5/// Message structure of a Cardano database digests list
6pub type CardanoDatabaseDigestListMessage = Vec<CardanoDatabaseDigestListItemMessage>;
7
8/// Message structure of a Cardano database digest list item
9#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
10pub struct CardanoDatabaseDigestListItemMessage {
11    /// Immutable file name
12    pub immutable_file_name: ImmutableFileName,
13
14    /// Digest of an immutable file
15    pub digest: HexEncodedDigest,
16}
17
18#[cfg(test)]
19mod tests {
20    use super::*;
21
22    const CURRENT_JSON: &str = r#"
23    [
24        {
25            "immutable_file_name": "06685.chunk",
26            "digest": "0af556ab2620dd9363bf76963a231abe8948a500ea6be31b131d87907ab09b1e"
27        }
28    ]"#;
29
30    fn golden_current_message() -> CardanoDatabaseDigestListMessage {
31        vec![CardanoDatabaseDigestListItemMessage {
32            immutable_file_name: "06685.chunk".to_string(),
33            digest: "0af556ab2620dd9363bf76963a231abe8948a500ea6be31b131d87907ab09b1e".to_string(),
34        }]
35    }
36
37    #[test]
38    fn test_current_json_deserialized_into_current_message() {
39        let json = CURRENT_JSON;
40        let message: CardanoDatabaseDigestListMessage = serde_json::from_str(json).expect(
41            "This JSON is expected to be successfully parsed into a CardanoDatabaseDigestListMessage instance.",
42        );
43
44        assert_eq!(golden_current_message(), message);
45    }
46}