forked from Nixius/authelia
104 lines
2.8 KiB
Go
104 lines
2.8 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestEnvOrDefault(t *testing.T) {
|
|
key := "SSATLAS_TEST_ENV_VAR"
|
|
defer os.Unsetenv(key)
|
|
|
|
if got := envOrDefault(key, "default"); got != "default" {
|
|
t.Errorf("unset env: got %q, want default", got)
|
|
}
|
|
os.Setenv(key, "custom")
|
|
if got := envOrDefault(key, "default"); got != "custom" {
|
|
t.Errorf("set env: got %q, want custom", got)
|
|
}
|
|
os.Setenv(key, "")
|
|
if got := envOrDefault(key, "default"); got != "default" {
|
|
t.Errorf("empty env: got %q, want default", got)
|
|
}
|
|
}
|
|
|
|
func TestLoadDefaults(t *testing.T) {
|
|
// Clear env vars that Load uses
|
|
envKeys := []string{
|
|
"PORT", "APP_URL", "AUTHELIA_URL", "STRIPE_SECRET_KEY",
|
|
"STRIPE_WEBHOOK_SECRET", "STRIPE_PRICE_ID", "STRIPE_PAYMENT_LINK", "MAX_SIGNUPS", "LLDAP_URL",
|
|
"LLDAP_ADMIN_DN", "LLDAP_ADMIN_PASSWORD", "LLDAP_BASE_DN",
|
|
"DOCKER_HOST", "TRAEFIK_DOMAIN", "TRAEFIK_NETWORK", "TEMPLATE_PATH", "CUSTOMER_DOMAIN",
|
|
}
|
|
for _, k := range envKeys {
|
|
os.Unsetenv(k)
|
|
}
|
|
defer func() {
|
|
for _, k := range envKeys {
|
|
os.Unsetenv(k)
|
|
}
|
|
}()
|
|
|
|
cfg := Load()
|
|
|
|
tests := []struct {
|
|
field string
|
|
got string
|
|
want string
|
|
}{
|
|
{"Port", cfg.Port, "8080"},
|
|
{"AppURL", cfg.AppURL, "https://bc.a250.ca"},
|
|
{"AutheliaURL", cfg.AutheliaURL, "https://bc.a250.ca/login"},
|
|
{"LDAPUrl", cfg.LDAPUrl, "ldap://lldap_lldap:3890"},
|
|
{"LDAPAdminDN", cfg.LDAPAdminDN, "uid=admin,ou=people,dc=a250,dc=ca"},
|
|
{"LDAPBaseDN", cfg.LDAPBaseDN, "dc=a250,dc=ca"},
|
|
{"DockerHost", cfg.DockerHost, "unix:///var/run/docker.sock"},
|
|
{ "TraefikDomain", cfg.TraefikDomain, "bc.a250.ca"},
|
|
{"TraefikNetwork", cfg.TraefikNetwork, "authelia_dev"},
|
|
{"TemplatePath", cfg.TemplatePath, "/app/templates"},
|
|
{"CustomerDomain", cfg.CustomerDomain, "bc.a250.ca"},
|
|
}
|
|
for _, tt := range tests {
|
|
if tt.got != tt.want {
|
|
t.Errorf("Load().%s = %q, want %q", tt.field, tt.got, tt.want)
|
|
}
|
|
}
|
|
if cfg.MaxSignups != 0 {
|
|
t.Errorf("Load().MaxSignups = %d, want 0", cfg.MaxSignups)
|
|
}
|
|
if cfg.FreeTierLimit != 10 {
|
|
t.Errorf("Load().FreeTierLimit = %d, want 10", cfg.FreeTierLimit)
|
|
}
|
|
if cfg.YearTierLimit != 50 {
|
|
t.Errorf("Load().YearTierLimit = %d, want 50", cfg.YearTierLimit)
|
|
}
|
|
}
|
|
|
|
func TestLoadFromEnv(t *testing.T) {
|
|
os.Setenv("PORT", "9000")
|
|
os.Setenv("TEMPLATE_PATH", "/custom/templates")
|
|
defer os.Unsetenv("PORT")
|
|
defer os.Unsetenv("TEMPLATE_PATH")
|
|
|
|
cfg := Load()
|
|
if cfg.Port != "9000" {
|
|
t.Errorf("Port = %q, want 9000", cfg.Port)
|
|
}
|
|
if cfg.TemplatePath != "/custom/templates" {
|
|
t.Errorf("TemplatePath = %q, want /custom/templates", cfg.TemplatePath)
|
|
}
|
|
}
|
|
|
|
func TestLoadTemplatePathRelative(t *testing.T) {
|
|
wd, _ := os.Getwd()
|
|
relPath := filepath.Join(wd, "..", "..", "templates")
|
|
os.Setenv("TEMPLATE_PATH", relPath)
|
|
defer os.Unsetenv("TEMPLATE_PATH")
|
|
|
|
cfg := Load()
|
|
if cfg.TemplatePath != relPath {
|
|
t.Errorf("TemplatePath = %q, want %q", cfg.TemplatePath, relPath)
|
|
}
|
|
}
|