package relay import ( "encoding/hex" "os" "path/filepath" "testing" "git.smesh.lol/torly/pkg/config" ) func TestLoadRelayKeyPersists(t *testing.T) { cfg := &config.Config{DataDir: t.TempDir()} sk1, err := loadRelayKey(cfg) if err != nil { t.Fatal(err) } if cfg.RelayPubKey == "" { t.Fatal("relay pubkey was not derived") } info, err := os.Stat(filepath.Join(cfg.DataDir, "relay.key")) if err != nil { t.Fatal(err) } if info.Mode().Perm() != 0o600 { t.Fatalf("relay key mode = %o", info.Mode().Perm()) } cfg2 := &config.Config{DataDir: cfg.DataDir} sk2, err := loadRelayKey(cfg2) if err != nil { t.Fatal(err) } if sk1 != sk2 || cfg2.RelayPubKey != cfg.RelayPubKey { t.Fatal("relay identity did not persist across loads") } } func TestLoadRelayKeyEnvOverride(t *testing.T) { var sk [32]byte sk[31] = 7 cfg := &config.Config{DataDir: t.TempDir(), SecretKey: hex.EncodeToString(sk[:])} got, err := loadRelayKey(cfg) if err != nil { t.Fatal(err) } if got != sk { t.Fatal("env key was not used") } if _, err := os.Stat(filepath.Join(cfg.DataDir, "relay.key")); !os.IsNotExist(err) { t.Fatalf("env key unexpectedly created a key file: %v", err) } cfg = &config.Config{DataDir: t.TempDir(), SecretKey: "not-a-key"} if _, err := loadRelayKey(cfg); err == nil { t.Fatal("malformed env key was accepted") } }