mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-06 20:03:05 +08:00
- 引入 third_party/highgo-pq 作为 HighGo 专用驱动实现 - 调整驱动注册与连接入口,避免覆盖 postgres 驱动 - 保持 PG 数据源行为不变并补充接入文档
67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
package pq
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestSimpleParseURL(t *testing.T) {
|
|
expected := "host='hostname.remote'"
|
|
str, err := ParseURL("postgres://hostname.remote")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if str != expected {
|
|
t.Fatalf("unexpected result from ParseURL:\n+ %v\n- %v", str, expected)
|
|
}
|
|
}
|
|
|
|
func TestIPv6LoopbackParseURL(t *testing.T) {
|
|
expected := "host='::1' port='1234'"
|
|
str, err := ParseURL("postgres://[::1]:1234")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if str != expected {
|
|
t.Fatalf("unexpected result from ParseURL:\n+ %v\n- %v", str, expected)
|
|
}
|
|
}
|
|
|
|
func TestFullParseURL(t *testing.T) {
|
|
expected := `dbname='database' host='hostname.remote' password='top secret' port='1234' user='username'`
|
|
str, err := ParseURL("postgres://username:top%20secret@hostname.remote:1234/database")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if str != expected {
|
|
t.Fatalf("unexpected result from ParseURL:\n+ %s\n- %s", str, expected)
|
|
}
|
|
}
|
|
|
|
func TestInvalidProtocolParseURL(t *testing.T) {
|
|
_, err := ParseURL("http://hostname.remote")
|
|
switch err {
|
|
case nil:
|
|
t.Fatal("Expected an error from parsing invalid protocol")
|
|
default:
|
|
msg := "invalid connection protocol: http"
|
|
if err.Error() != msg {
|
|
t.Fatalf("Unexpected error message:\n+ %s\n- %s",
|
|
err.Error(), msg)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestMinimalURL(t *testing.T) {
|
|
cs, err := ParseURL("postgres://")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if cs != "" {
|
|
t.Fatalf("expected blank connection string, got: %q", cs)
|
|
}
|
|
}
|