⎇ 53dbdf0f1deea10d6fc567ea2b43e1e75d6d60cd
crates/modules/semantic_dht/minga-store/tests/keypair_file_persistence.rs
History
Who touched what
raw
chore: monorepo inicial con arje + minga + yahweh absorbidos
1//! Tests de persistencia del keypair cifrado en disco.
2
3use minga_core::Keypair;
4use minga_store::keypair_file;
5use tempfile::TempDir;
6
7#[test]
8fn save_then_load_preserves_identity() {
9 let dir = TempDir::new().unwrap();
10 let path = dir.path().join("keypair");
11
12 let original = Keypair::from_seed(&[7; 32]);
13 keypair_file::save(&original, &path, "secreto42").unwrap();
14
15 let loaded = keypair_file::load(&path, "secreto42").unwrap();
16 assert_eq!(loaded.did(), original.did());
17
18 let msg = b"el peer sigue siendo el mismo";
19 let sig = loaded.sign(msg);
20 assert!(original.did().verify(msg, &sig));
21}
22
23#[test]
24fn load_with_wrong_passphrase_errors() {
25 let dir = TempDir::new().unwrap();
26 let path = dir.path().join("keypair");
27
28 let kp = Keypair::from_seed(&[3; 32]);
29 keypair_file::save(&kp, &path, "correcta").unwrap();
30
31 let r = keypair_file::load(&path, "incorrecta");
32 assert!(r.is_err());
33}
34
35#[test]
36fn load_missing_file_errors() {
37 let dir = TempDir::new().unwrap();
38 let path = dir.path().join("no-existe");
39 let r = keypair_file::load(&path, "x");
40 assert!(r.is_err());
41}
42
43#[test]
44fn save_overwrites_existing() {
45 let dir = TempDir::new().unwrap();
46 let path = dir.path().join("keypair");
47
48 let first = Keypair::from_seed(&[1; 32]);
49 keypair_file::save(&first, &path, "pass").unwrap();
50
51 let second = Keypair::from_seed(&[2; 32]);
52 keypair_file::save(&second, &path, "pass").unwrap();
53
54 let loaded = keypair_file::load(&path, "pass").unwrap();
55 assert_eq!(loaded.did(), second.did());
56 assert_ne!(loaded.did(), first.did());
57}
58
59#[test]
60fn file_size_is_compact() {
61 let dir = TempDir::new().unwrap();
62 let path = dir.path().join("keypair");
63 keypair_file::save(&Keypair::from_seed(&[5; 32]), &path, "p").unwrap();
64 let size = std::fs::metadata(&path).unwrap().len();
65 // 8 magic + 1 version + 16 salt + 12 nonce + 32 secret + 16 tag = 85.
66 assert_eq!(size, 85);
67}