Files
pixa/internal/config/config_internal_test.go
T
sneak fdcf1a3c61
check / check (push) Canceled after 0s
Load every setting from one table in internal/config (closes #320)
Config.settings lists each setting once: its key, its environment
variable and the function that loads it. Most rows load through field,
whose arguments give the type, the default and the check. db_url and
cache_max_bytes keep their own load functions. Loading, the unknown-key
and unknown-variable checks and the names in error messages all read
the table. allowlist_hosts now loads through parseHostList, as
referer_blocklist does. isKnownConfigKey, envVarNames, strictLoader,
validate, validateAllowlistHostsValue and getStringSlice are gone, with
the getStringSlice tests. The key constants move to the tests, their
only users. A new test checks that README.md and
configs/config.example.yml name the keys of the table.

Model: opus-5-5
2026-10-26 20:49:38 +00:00

40 lines
1.1 KiB
Go

package config
import (
"path/filepath"
"testing"
"git.eeqj.de/sneak/smartconfig"
)
// TestExampleConfigAllowlistsNoHost loads configs/config.example.yml
// with a real signing key, as Getting Started in README.md has it copied
// and edited, and checks that it allowlists no host: every image on an
// allowlisted host is served to anyone without a signature.
func TestExampleConfigAllowlistsNoHost(t *testing.T) {
t.Setenv("PIXA_SIGNING_KEY", validTestSigningKey)
examplePath := filepath.Join("..", "..", "configs", "config.example.yml")
sc, err := loadTestConfig(examplePath)
if err != nil {
t.Fatalf("failed to load %s: %v", examplePath, err)
}
c, err := newFromSmartConfig(sc)
if err != nil {
t.Fatalf("%s is not a valid config: %v", examplePath, err)
}
t.Logf("allowlist_hosts in %s: %v", examplePath, c.AllowlistHosts)
if len(c.AllowlistHosts) != 0 {
t.Errorf("%s allowlists %v, want no host", examplePath, c.AllowlistHosts)
}
}
// loadTestConfig is a helper to load a config file for testing.
func loadTestConfig(path string) (*smartconfig.Config, error) {
return smartconfig.NewFromConfigPath(path)
}