65 lines
2.1 KiB
Go
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)
|
|
}
|
|
}
|