forked from Nixius/authelia
1
0
Fork 0
ATLAS/docker/ss-atlas/internal/config/config_test.go

95 lines
2.5 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", "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, "http://app.bc.a250.ca"},
{"AutheliaURL", cfg.AutheliaURL, "http://login.bc.a250.ca"},
{"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, "app.a250.ca"},
}
for _, tt := range tests {
if tt.got != tt.want {
t.Errorf("Load().%s = %q, want %q", tt.field, tt.got, tt.want)
}
}
}
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)
}
}