tawasuyu

tawasuyu/brahman

Rust 582TOML 222Markdown 73JSON 198629 Definitions

⎇ 53dbdf0f1deea10d6fc567ea2b43e1e75d6d60cd crates/modules/semantic_dht/minga-store/tests/keypair_file_persistence.rs Rust · 67 lines · 1.9 KB History Who touched what raw

chore: monorepo inicial con arje + minga + yahweh absorbidos 53dbdf0f1 · Sergio ·

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}