mirror of
https://github.com/DeBrosOfficial/orama.git
synced 2026-03-17 16:26:57 +00:00
93 lines
2.4 KiB
Go
93 lines
2.4 KiB
Go
package client
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/DeBrosOfficial/network/pkg/encryption"
|
|
)
|
|
|
|
func TestPersistentIdentity_NoPath(t *testing.T) {
|
|
// Without IdentityPath, Connect() generates a random ID each time.
|
|
// We can't easily test Connect() (needs network), so verify config defaults.
|
|
cfg := DefaultClientConfig("test-app")
|
|
if cfg.IdentityPath != "" {
|
|
t.Fatalf("expected empty IdentityPath by default, got %q", cfg.IdentityPath)
|
|
}
|
|
}
|
|
|
|
func TestPersistentIdentity_GenerateAndReload(t *testing.T) {
|
|
dir := t.TempDir()
|
|
keyPath := filepath.Join(dir, "identity.key")
|
|
|
|
// 1. No file exists — generate + save
|
|
id1, err := encryption.GenerateIdentity()
|
|
if err != nil {
|
|
t.Fatalf("GenerateIdentity: %v", err)
|
|
}
|
|
if err := encryption.SaveIdentity(id1, keyPath); err != nil {
|
|
t.Fatalf("SaveIdentity: %v", err)
|
|
}
|
|
|
|
// File should exist
|
|
if _, err := os.Stat(keyPath); os.IsNotExist(err) {
|
|
t.Fatal("identity key file was not created")
|
|
}
|
|
|
|
// 2. Load it back — same PeerID
|
|
id2, err := encryption.LoadIdentity(keyPath)
|
|
if err != nil {
|
|
t.Fatalf("LoadIdentity: %v", err)
|
|
}
|
|
if id1.PeerID != id2.PeerID {
|
|
t.Fatalf("PeerID mismatch: generated %s, loaded %s", id1.PeerID, id2.PeerID)
|
|
}
|
|
|
|
// 3. Load again — still the same
|
|
id3, err := encryption.LoadIdentity(keyPath)
|
|
if err != nil {
|
|
t.Fatalf("LoadIdentity (second): %v", err)
|
|
}
|
|
if id2.PeerID != id3.PeerID {
|
|
t.Fatalf("PeerID changed across loads: %s vs %s", id2.PeerID, id3.PeerID)
|
|
}
|
|
}
|
|
|
|
func TestPersistentIdentity_DifferentFromRandom(t *testing.T) {
|
|
// A persistent identity should be different from a freshly generated one
|
|
id1, err := encryption.GenerateIdentity()
|
|
if err != nil {
|
|
t.Fatalf("GenerateIdentity: %v", err)
|
|
}
|
|
id2, err := encryption.GenerateIdentity()
|
|
if err != nil {
|
|
t.Fatalf("GenerateIdentity: %v", err)
|
|
}
|
|
if id1.PeerID == id2.PeerID {
|
|
t.Fatal("two independently generated identities should have different PeerIDs")
|
|
}
|
|
}
|
|
|
|
func TestPersistentIdentity_FilePermissions(t *testing.T) {
|
|
dir := t.TempDir()
|
|
keyPath := filepath.Join(dir, "subdir", "identity.key")
|
|
|
|
id, err := encryption.GenerateIdentity()
|
|
if err != nil {
|
|
t.Fatalf("GenerateIdentity: %v", err)
|
|
}
|
|
if err := encryption.SaveIdentity(id, keyPath); err != nil {
|
|
t.Fatalf("SaveIdentity: %v", err)
|
|
}
|
|
|
|
info, err := os.Stat(keyPath)
|
|
if err != nil {
|
|
t.Fatalf("Stat: %v", err)
|
|
}
|
|
perm := info.Mode().Perm()
|
|
if perm != 0600 {
|
|
t.Fatalf("expected file permissions 0600, got %o", perm)
|
|
}
|
|
}
|