woodpecker-mcp/internal/config/config_test.go
2026-08-08 01:37:47 +03:00

61 lines
1.4 KiB
Go

package config
import (
"strings"
"testing"
)
func TestLoadValid(t *testing.T) {
t.Setenv("WOODPECKER_URL", "https://woodpecker.example.com/")
t.Setenv("WOODPECKER_TOKEN", "secret")
cfg, err := Load()
if err != nil {
t.Fatal(err)
}
if cfg.WoodpeckerURL != "https://woodpecker.example.com/" {
t.Errorf("URL = %q", cfg.WoodpeckerURL)
}
if got := cfg.APIBaseURL(); got != "https://woodpecker.example.com/api" {
t.Errorf("APIBaseURL = %q", got)
}
}
func TestLoadMissingEnv(t *testing.T) {
t.Setenv("WOODPECKER_URL", "")
t.Setenv("WOODPECKER_TOKEN", "")
if _, err := Load(); err == nil {
t.Fatal("expected error when env is empty")
}
}
func TestLoadInvalidURL(t *testing.T) {
t.Setenv("WOODPECKER_URL", "not a url ://")
t.Setenv("WOODPECKER_TOKEN", "secret")
if _, err := Load(); err == nil {
t.Fatal("expected error for invalid URL")
}
}
func TestLoadNonHTTPURL(t *testing.T) {
t.Setenv("WOODPECKER_URL", "ftp://woodpecker.example.com")
t.Setenv("WOODPECKER_TOKEN", "secret")
_, err := Load()
if err == nil || !strings.Contains(err.Error(), "http or https") {
t.Fatalf("expected scheme error, got %v", err)
}
}
func TestLoadMissingToken(t *testing.T) {
t.Setenv("WOODPECKER_URL", "https://woodpecker.example.com")
t.Setenv("WOODPECKER_TOKEN", "")
_, err := Load()
if err == nil || !strings.Contains(err.Error(), "WOODPECKER_TOKEN") {
t.Fatalf("expected token error, got %v", err)
}
}