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 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) } }