Files
pawsql/internal/router/routes_test.go
Shaun Campbell 89db38417d
Some checks failed
Build and Push Image / docker-build-and-push (push) Failing after 1m22s
Test and Release PawSQL / test (push) Failing after 32s
Test and Release PawSQL / release (push) Has been skipped
feat: use shared Barkfile parser
2026-09-15 19:52:13 -04:00

65 lines
2.1 KiB
Go

package router
import (
"context"
"errors"
"testing"
config "cloud.campbellwireless.net/git/barkstack/barkfile-parser"
)
func TestStaticResolverRoutesCaseInsensitiveHostnames(t *testing.T) {
resolver, err := NewStaticResolver([]config.DatabaseConfig{
{Name: "foo", Hostname: "foo.pawsql.barkstack.dev", Upstream: "postgres-foo:5432"},
{Name: "bar", Hostname: "bar.pawsql.barkstack.dev", Upstream: "postgres-bar:5432"},
})
if err != nil {
t.Fatalf("NewStaticResolver() error = %v", err)
}
for _, test := range []struct{ hostname, name, address string }{
{"FOO.pawsql.barkstack.dev", "foo", "postgres-foo:5432"},
{"bar.pawsql.barkstack.dev", "bar", "postgres-bar:5432"},
} {
backend, err := resolver.Resolve(context.Background(), test.hostname)
if err != nil {
t.Errorf("Resolve(%q) error = %v", test.hostname, err)
continue
}
if backend.DatabaseName != test.name || backend.Address != test.address {
t.Errorf("Resolve(%q) = %#v", test.hostname, backend)
}
}
}
func TestStaticResolverRejectsUnknownHostname(t *testing.T) {
resolver, err := NewStaticResolver([]config.DatabaseConfig{{Name: "foo", Hostname: "foo.pawsql.barkstack.dev", Upstream: "postgres-foo:5432"}})
if err != nil {
t.Fatal(err)
}
_, err = resolver.Resolve(context.Background(), "unknown.pawsql.barkstack.dev")
if !errors.Is(err, ErrUnknownHostname) {
t.Errorf("Resolve() error = %v, want ErrUnknownHostname", err)
}
}
func TestStaticResolverRoutesConfiguredDatabase(t *testing.T) {
resolver, err := NewStaticResolver([]config.DatabaseConfig{
{Name: "analytics", Upstream: "postgres-shared:5432"},
{Name: "app", Hostname: "app.pawsql.barkstack.dev", Upstream: "postgres-shared:5432"},
})
if err != nil {
t.Fatal(err)
}
backend, err := resolver.ResolveDatabase(context.Background(), "analytics")
if err != nil {
t.Fatal(err)
}
if backend.DatabaseName != "analytics" || backend.Address != "postgres-shared:5432" {
t.Errorf("ResolveDatabase() = %#v", backend)
}
_, err = resolver.ResolveDatabase(context.Background(), "unknown")
if !errors.Is(err, ErrUnknownDatabase) {
t.Errorf("ResolveDatabase() error = %v, want ErrUnknownDatabase", err)
}
}