package payment import ( "strings" "testing" "github.com/Wei-Shaw/sub2api/internal/config" ) func TestProvideEncryptionKeySkipsAutoGeneratedTotpKey(t *testing.T) { t.Parallel() cfg := &config.Config{ Totp: config.TotpConfig{ EncryptionKey: strings.Repeat("a", 64), EncryptionKeyConfigured: false, }, } key, err := ProvideEncryptionKey(cfg) if err != nil { t.Fatalf("ProvideEncryptionKey returned error: %v", err) } if len(key) != 0 { t.Fatalf("encryption key len = %d, want 0", len(key)) } } func TestProvideEncryptionKeyUsesConfiguredTotpKey(t *testing.T) { t.Parallel() cfg := &config.Config{ Totp: config.TotpConfig{ EncryptionKey: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", EncryptionKeyConfigured: true, }, } key, err := ProvideEncryptionKey(cfg) if err != nil { t.Fatalf("ProvideEncryptionKey returned error: %v", err) } if len(key) != 32 { t.Fatalf("encryption key len = %d, want 32", len(key)) } } func TestProvideEncryptionKeyRejectsConfiguredInvalidLength(t *testing.T) { t.Parallel() cfg := &config.Config{ Totp: config.TotpConfig{ EncryptionKey: "abcd", EncryptionKeyConfigured: true, }, } _, err := ProvideEncryptionKey(cfg) if err == nil { t.Fatal("expected error for invalid key length") } }