Files
telemt-api/internal/config/config_test.go
T
Denozordec 54306ec6c4
Publish telemt-api gateway Docker image / test (push) Failing after 27s
Publish telemt-api gateway Docker image / build-and-push (push) Has been skipped
Add aggregate configuration support and update documentation
- Introduced AggregateConfig to manage aggregation settings in the gateway configuration.
- Added validation for reserved alias 'agg' and included tests for aggregate alias handling.
- Updated config.example.yaml to demonstrate aggregate configuration options.
- Enhanced README.md to include information about the new aggregation endpoint and its usage.
- Modified gateway.go to integrate the new aggregate handler for processing aggregation requests.
2026-03-30 00:51:19 +07:00

101 lines
1.9 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")
}
}
func TestValidateReservedAggAlias(t *testing.T) {
c := &Config{
Servers: []Server{
{Alias: "agg", BaseURL: "http://x:1"},
},
}
if err := c.Validate(); err == nil {
t.Fatal("expected error for reserved alias agg")
}
}
func TestValidateAggregateIncludeAliases(t *testing.T) {
c := &Config{
Servers: []Server{
{Alias: "a", BaseURL: "http://x:1"},
},
Aggregate: &AggregateConfig{
IncludeAliases: []string{"a"},
},
}
if err := c.Validate(); err != nil {
t.Fatal(err)
}
c2 := &Config{
Servers: []Server{
{Alias: "a", BaseURL: "http://x:1"},
},
Aggregate: &AggregateConfig{
IncludeAliases: []string{"nope"},
},
}
if err := c2.Validate(); err == nil {
t.Fatal("expected error for unknown include alias")
}
}