...
1 package pq
2
3 import (
4 "testing"
5 )
6
7 func TestSimpleParseURL(t *testing.T) {
8 expected := "host='hostname.remote'"
9 str, err := ParseURL("postgres://hostname.remote")
10 if err != nil {
11 t.Fatal(err)
12 }
13
14 if str != expected {
15 t.Fatalf("unexpected result from ParseURL:\n+ %v\n- %v", str, expected)
16 }
17 }
18
19 func TestIPv6LoopbackParseURL(t *testing.T) {
20 expected := "host='::1' port='1234'"
21 str, err := ParseURL("postgres://[::1]:1234")
22 if err != nil {
23 t.Fatal(err)
24 }
25
26 if str != expected {
27 t.Fatalf("unexpected result from ParseURL:\n+ %v\n- %v", str, expected)
28 }
29 }
30
31 func TestFullParseURL(t *testing.T) {
32 expected := `dbname='database' host='hostname.remote' password='top secret' port='1234' user='username'`
33 str, err := ParseURL("postgres://username:top%20secret@hostname.remote:1234/database")
34 if err != nil {
35 t.Fatal(err)
36 }
37
38 if str != expected {
39 t.Fatalf("unexpected result from ParseURL:\n+ %s\n- %s", str, expected)
40 }
41 }
42
43 func TestInvalidProtocolParseURL(t *testing.T) {
44 _, err := ParseURL("http://hostname.remote")
45 switch err {
46 case nil:
47 t.Fatal("Expected an error from parsing invalid protocol")
48 default:
49 msg := "invalid connection protocol: http"
50 if err.Error() != msg {
51 t.Fatalf("Unexpected error message:\n+ %s\n- %s",
52 err.Error(), msg)
53 }
54 }
55 }
56
57 func TestMinimalURL(t *testing.T) {
58 cs, err := ParseURL("postgres://")
59 if err != nil {
60 t.Fatal(err)
61 }
62
63 if cs != "" {
64 t.Fatalf("expected blank connection string, got: %q", cs)
65 }
66 }
67
View as plain text