Pulse/cmd/pulse/auto_import_test.go
2025-12-17 13:28:17 +00:00

83 lines
2 KiB
Go

package main
import (
"os"
"path/filepath"
"testing"
"github.com/rcourtman/pulse-go-rewrite/internal/config"
)
func TestShouldAutoImport(t *testing.T) {
dir := t.TempDir()
t.Setenv("PULSE_DATA_DIR", dir)
// No env vars => false.
t.Setenv("PULSE_INIT_CONFIG_DATA", "")
t.Setenv("PULSE_INIT_CONFIG_FILE", "")
if shouldAutoImport() {
t.Fatalf("expected false when no env vars set")
}
// Env var set => true.
t.Setenv("PULSE_INIT_CONFIG_DATA", "anything")
if !shouldAutoImport() {
t.Fatalf("expected true when init config env var set")
}
// Existing config should disable auto-import.
if err := os.WriteFile(filepath.Join(dir, "nodes.enc"), []byte("exists"), 0o600); err != nil {
t.Fatalf("write nodes.enc: %v", err)
}
if shouldAutoImport() {
t.Fatalf("expected false when nodes.enc exists")
}
}
func TestPerformAutoImport_ValidPayload(t *testing.T) {
dir := t.TempDir()
t.Setenv("PULSE_DATA_DIR", dir)
pass := "test-passphrase"
cp := config.NewConfigPersistence(dir)
exported, err := cp.ExportConfig(pass)
if err != nil {
t.Fatalf("ExportConfig: %v", err)
}
t.Setenv("PULSE_INIT_CONFIG_PASSPHRASE", pass)
t.Setenv("PULSE_INIT_CONFIG_DATA", exported)
t.Setenv("PULSE_INIT_CONFIG_FILE", "")
if err := performAutoImport(); err != nil {
t.Fatalf("performAutoImport: %v", err)
}
if _, err := os.Stat(filepath.Join(dir, "nodes.enc")); err != nil {
t.Fatalf("expected nodes.enc to exist: %v", err)
}
}
func TestPerformAutoImport_MissingPassphrase(t *testing.T) {
dir := t.TempDir()
t.Setenv("PULSE_DATA_DIR", dir)
t.Setenv("PULSE_INIT_CONFIG_PASSPHRASE", "")
t.Setenv("PULSE_INIT_CONFIG_DATA", "data")
t.Setenv("PULSE_INIT_CONFIG_FILE", "")
if err := performAutoImport(); err == nil {
t.Fatalf("expected error")
}
}
func TestPerformAutoImport_MissingData(t *testing.T) {
dir := t.TempDir()
t.Setenv("PULSE_DATA_DIR", dir)
t.Setenv("PULSE_INIT_CONFIG_PASSPHRASE", "pass")
t.Setenv("PULSE_INIT_CONFIG_DATA", "")
t.Setenv("PULSE_INIT_CONFIG_FILE", "")
if err := performAutoImport(); err == nil {
t.Fatalf("expected error")
}
}