ferripfs_config/
identity.rs1use serde::{Deserialize, Serialize};
12
13#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15#[serde(rename_all = "PascalCase")]
16pub struct Identity {
17 #[serde(default, rename = "PeerID")]
19 pub peer_id: String,
20
21 #[serde(default, skip_serializing_if = "Option::is_none")]
23 pub priv_key: Option<String>,
24}
25
26impl Identity {
27 pub fn new(peer_id: String) -> Self {
29 Self {
30 peer_id,
31 priv_key: None,
32 }
33 }
34
35 pub fn with_private_key(peer_id: String, priv_key: String) -> Self {
37 Self {
38 peer_id,
39 priv_key: Some(priv_key),
40 }
41 }
42
43 pub fn has_private_key(&self) -> bool {
45 self.priv_key.is_some()
46 }
47}
48
49#[cfg(test)]
50mod tests {
51 use super::*;
52
53 #[test]
54 fn test_identity_serialization() {
55 let id = Identity::new("QmTest123".to_string());
56 let json = serde_json::to_string(&id).unwrap();
57 assert!(json.contains("PeerID"));
58 assert!(json.contains("QmTest123"));
59 }
60
61 #[test]
62 fn test_identity_with_privkey() {
63 let id =
64 Identity::with_private_key("QmTest123".to_string(), "base64encodedkey".to_string());
65 assert!(id.has_private_key());
66 }
67}