check / check (push) Canceled after 0s
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. isKnownConfigKey, envVarNames, strictLoader, validate, validateAllowlistHostsValue and getStringSlice are gone, with the getStringSlice tests. The key constants move to the tests, their only users. README.md lists the settings one item each instead of in a table, with shorter sentences above the list. A new test checks that this list and configs/config.example.yml name exactly the keys of the table. Model: opus-5-5
40 lines
1.1 KiB
Go
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)
|
|
}
|