mirror of
https://github.com/rjNemo/payit
synced 2026-06-06 02:16:40 +00:00
77 lines
2.1 KiB
Go
77 lines
2.1 KiB
Go
package config
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoadSuccess(t *testing.T) {
|
|
t.Setenv("PAYIT_STRIPE_SECRET_KEY", "sk_test")
|
|
t.Setenv("PAYIT_STRIPE_PUBLISHABLE_KEY", "pk_test")
|
|
t.Setenv("PAYIT_PRODUCT_NAME", "Demo product")
|
|
t.Setenv("PAYIT_PRODUCT_DESCRIPTION", "Great product")
|
|
t.Setenv("PAYIT_PRODUCT_PRICE_CENTS", "2500")
|
|
t.Setenv("PAYIT_PRODUCT_CURRENCY", "usd")
|
|
t.Setenv("PAYIT_PRODUCT_SUCCESS_URL", "https://example.com/success")
|
|
t.Setenv("PAYIT_PRODUCT_CANCEL_URL", "https://example.com/cancel")
|
|
|
|
cfg, err := Load()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
|
|
if cfg.Product.PriceCents != 2500 {
|
|
t.Fatalf("expected price 2500, got %d", cfg.Product.PriceCents)
|
|
}
|
|
if cfg.Product.Name != "Demo product" {
|
|
t.Fatalf("unexpected product name: %s", cfg.Product.Name)
|
|
}
|
|
}
|
|
|
|
func TestLoadMissingMandatoryVariables(t *testing.T) {
|
|
clearAllEnv(t)
|
|
|
|
_, err := Load()
|
|
if err == nil {
|
|
t.Fatal("expected error when required variables are missing")
|
|
}
|
|
if !strings.Contains(err.Error(), "missing required environment variables") {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestLoadInvalidPrice(t *testing.T) {
|
|
t.Setenv("PAYIT_STRIPE_SECRET_KEY", "sk_test")
|
|
t.Setenv("PAYIT_STRIPE_PUBLISHABLE_KEY", "pk_test")
|
|
t.Setenv("PAYIT_PRODUCT_NAME", "Demo product")
|
|
t.Setenv("PAYIT_PRODUCT_DESCRIPTION", "Great product")
|
|
t.Setenv("PAYIT_PRODUCT_PRICE_CENTS", "-1")
|
|
t.Setenv("PAYIT_PRODUCT_CURRENCY", "usd")
|
|
t.Setenv("PAYIT_PRODUCT_SUCCESS_URL", "https://example.com/success")
|
|
t.Setenv("PAYIT_PRODUCT_CANCEL_URL", "https://example.com/cancel")
|
|
|
|
_, err := Load()
|
|
if err == nil {
|
|
t.Fatal("expected error for invalid price")
|
|
}
|
|
if !strings.Contains(err.Error(), "PAYIT_PRODUCT_PRICE_CENTS") {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
}
|
|
|
|
func clearAllEnv(t *testing.T) {
|
|
t.Helper()
|
|
envs := []string{
|
|
"PAYIT_STRIPE_SECRET_KEY",
|
|
"PAYIT_STRIPE_PUBLISHABLE_KEY",
|
|
"PAYIT_PRODUCT_NAME",
|
|
"PAYIT_PRODUCT_DESCRIPTION",
|
|
"PAYIT_PRODUCT_PRICE_CENTS",
|
|
"PAYIT_PRODUCT_CURRENCY",
|
|
"PAYIT_PRODUCT_SUCCESS_URL",
|
|
"PAYIT_PRODUCT_CANCEL_URL",
|
|
}
|
|
for _, env := range envs {
|
|
t.Setenv(env, "")
|
|
}
|
|
}
|