61 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|