Files
egutierrez 621e8895c9 feat(infra): auto-commit con 86 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 19:38:15 +02:00

68 lines
2.0 KiB
Go

package infra
import (
"encoding/base64"
"os/exec"
"strings"
"testing"
)
func TestWGKeygen(t *testing.T) {
// Skip if wg binary is not present in PATH
if _, err := exec.LookPath("wg"); err != nil {
t.Skip("wg binary not found in PATH, skipping WireGuard keygen tests")
}
t.Run("genera par de claves sin PSK", func(t *testing.T) {
keys, err := WGKeygen(false)
if err != nil {
t.Fatalf("WGKeygen(false) error: %v", err)
}
if keys.PrivateKey == "" {
t.Error("PrivateKey vacia")
}
if keys.PublicKey == "" {
t.Error("PublicKey vacia")
}
if keys.PresharedKey != "" {
t.Errorf("PresharedKey debe estar vacia sin PSK, got %q", keys.PresharedKey)
}
// WireGuard keys are 32-byte Curve25519, base64-encoded → 44 chars with padding
if len(strings.TrimSpace(keys.PrivateKey)) != 44 {
t.Errorf("PrivateKey len esperado 44, got %d", len(keys.PrivateKey))
}
if len(strings.TrimSpace(keys.PublicKey)) != 44 {
t.Errorf("PublicKey len esperado 44, got %d", len(keys.PublicKey))
}
// Validate they are valid base64
if _, err := base64.StdEncoding.DecodeString(keys.PrivateKey); err != nil {
t.Errorf("PrivateKey no es base64 valido: %v", err)
}
if _, err := base64.StdEncoding.DecodeString(keys.PublicKey); err != nil {
t.Errorf("PublicKey no es base64 valido: %v", err)
}
})
t.Run("genera par de claves con PSK", func(t *testing.T) {
keys, err := WGKeygen(true)
if err != nil {
t.Fatalf("WGKeygen(true) error: %v", err)
}
if keys.PrivateKey == "" {
t.Error("PrivateKey vacia")
}
if keys.PublicKey == "" {
t.Error("PublicKey vacia")
}
if keys.PresharedKey == "" {
t.Error("PresharedKey debe estar presente con withPSK=true")
}
if len(strings.TrimSpace(keys.PresharedKey)) != 44 {
t.Errorf("PresharedKey len esperado 44, got %d", len(keys.PresharedKey))
}
if _, err := base64.StdEncoding.DecodeString(keys.PresharedKey); err != nil {
t.Errorf("PresharedKey no es base64 valido: %v", err)
}
})
}