65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoadExample(t *testing.T) {
|
|
dir := t.TempDir()
|
|
p := filepath.Join(dir, "cfg.yaml")
|
|
if err := os.WriteFile(p, []byte(`
|
|
listen: ":0"
|
|
allow_all: true
|
|
servers:
|
|
- alias: main_srv
|
|
base_url: http://127.0.0.1:9091
|
|
`), 0644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
c, err := Load(p)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if c.Listen != ":0" {
|
|
t.Fatalf("listen: %q", c.Listen)
|
|
}
|
|
_, err = c.Parse()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestParseCIDRorIP(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
in string
|
|
want string
|
|
}{
|
|
{"87.103.241.8", "87.103.241.8/32"},
|
|
{"87.103.241.8/32", "87.103.241.8/32"},
|
|
{"10.0.0.0/8", "10.0.0.0/8"},
|
|
{"2001:db8::1", "2001:db8::1/128"},
|
|
} {
|
|
p, err := parseCIDROrIP(tc.in)
|
|
if err != nil {
|
|
t.Fatalf("%q: %v", tc.in, err)
|
|
}
|
|
if p.String() != tc.want {
|
|
t.Fatalf("%q: got %s want %s", tc.in, p, tc.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestValidateDuplicateAlias(t *testing.T) {
|
|
c := &Config{
|
|
Servers: []Server{
|
|
{Alias: "a", BaseURL: "http://x:1"},
|
|
{Alias: "a", BaseURL: "http://y:2"},
|
|
},
|
|
}
|
|
if err := c.Validate(); err == nil {
|
|
t.Fatal("expected error")
|
|
}
|
|
}
|