63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
package postgres
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestOpenLocalReturnsStoreWithoutPool(t *testing.T) {
|
|
module, err := Open(context.Background(), Config{Backend: BackendLocal})
|
|
if err != nil {
|
|
t.Fatalf("Open() error = %v", err)
|
|
}
|
|
if module.Store == nil {
|
|
t.Fatal("Store = nil")
|
|
}
|
|
module.Close()
|
|
if err := module.Store.Readiness(context.Background()); err != nil {
|
|
t.Fatalf("Readiness() error = %v", err)
|
|
}
|
|
}
|
|
|
|
func TestOpenPostgresDoesNotProbeBeforeReadiness(t *testing.T) {
|
|
module, err := Open(context.Background(), Config{
|
|
Backend: BackendPostgres,
|
|
DatabaseURL: "postgresql://app:secret@127.0.0.1:1/app",
|
|
SSLMode: SSLDisable,
|
|
PoolMax: 1,
|
|
ApplicationName: "zhinian-go-test",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Open() error = %v; connection failures belong to readiness", err)
|
|
}
|
|
module.Close()
|
|
}
|
|
|
|
func TestParseConfigIgnoresPostgresTLSSettingsForLocalBackend(t *testing.T) {
|
|
cfg, err := ParseConfig(env(map[string]string{
|
|
"ZHINIAN_DATA_BACKEND": "local",
|
|
"DATABASE_SSL_MODE": "verify-full",
|
|
"DATABASE_CA_CERT_PATH": "/missing/ca.pem",
|
|
"DATABASE_POOL_MAX": "0",
|
|
"DATABASE_CONNECTION_TIMEOUT_MS": "invalid",
|
|
}), nil)
|
|
if err != nil {
|
|
t.Fatalf("ParseConfig() error = %v", err)
|
|
}
|
|
if cfg.Backend != BackendLocal || cfg.TLSConfig != nil {
|
|
t.Fatalf("config = %+v", cfg)
|
|
}
|
|
}
|
|
|
|
func TestOpenPostgresRejectsInvalidConfiguredTLSMode(t *testing.T) {
|
|
_, err := Open(context.Background(), Config{
|
|
Backend: BackendPostgres,
|
|
DatabaseURL: "postgresql://app:secret@db.example/app",
|
|
SSLMode: SSLMode("prefer"),
|
|
})
|
|
if err == nil || !strings.Contains(err.Error(), "DATABASE_SSL_MODE") {
|
|
t.Fatalf("Open() error = %v", err)
|
|
}
|
|
}
|