check / check (push) In progress
Every setting of discriminator and rproxy is read through viper, in place of the os.LookupEnv function Main passed down. NewViper turns AutomaticEnv and AllowEmptyEnv on, so a setting that is set but empty reads as set. A setting may also be given as a file, the _FILE form, which rproxy's settings now have too; rproxy still writes nothing to disk. The settings are renamed. Discriminator's take the prefix SWW_WAF_, rproxy's take SWW_RPROXY_, and the shared SWW_COMMAND keeps SWW_. The Core Rule Set's settings take SWW_WAF_CORE_RULE_SET_ rather than SWW_WAF_WAF_. Model: deepseek-v4-pro (first version); opus-5-5 (rework)
35 lines
814 B
Go
35 lines
814 B
Go
package config_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"sneak.berlin/go/smallwebwaf/internal/config"
|
|
)
|
|
|
|
// These tests set real environment variables, so none runs in parallel.
|
|
|
|
func TestTokenSetEmptyInTheEnvironmentStopsTheStart(t *testing.T) {
|
|
t.Setenv(adminToken, "")
|
|
|
|
_, err := config.FromEnvironment(config.NewViper())
|
|
|
|
want := adminToken + ": is shorter than 32 characters"
|
|
if err == nil || err.Error() != want {
|
|
t.Fatalf("error %v, want %s", err, want)
|
|
}
|
|
}
|
|
|
|
func TestListSetEmptyInTheEnvironmentReplacesItsDefault(t *testing.T) {
|
|
t.Setenv(wafBackend, backendURL)
|
|
t.Setenv(rproxyTrusted, "")
|
|
|
|
cfg, err := config.RProxyFromEnvironment(config.NewViper())
|
|
if err != nil {
|
|
t.Fatalf("settings: %v", err)
|
|
}
|
|
|
|
if len(cfg.TrustedProxies) != 0 {
|
|
t.Errorf("trusted proxies %v, want none", cfg.TrustedProxies)
|
|
}
|
|
}
|