From 57d7b9b0426b69351d030ffe967ed596f6e81a11 Mon Sep 17 00:00:00 2001 From: DrWrong Date: Tue, 5 Jun 2018 15:14:53 +0800 Subject: [PATCH] Add test case --- dialect_postgres_test.go | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/dialect_postgres_test.go b/dialect_postgres_test.go index 2ee1e2f3..f2723ccb 100644 --- a/dialect_postgres_test.go +++ b/dialect_postgres_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/go-xorm/core" + "github.com/jackc/pgx/stdlib" ) func TestParsePostgres(t *testing.T) { @@ -38,3 +39,48 @@ func TestParsePostgres(t *testing.T) { } } } + +func TestParsePgx(t *testing.T) { + tests := []struct { + in string + expected string + valid bool + }{ + {"postgres://auser:password@localhost:5432/db?sslmode=disable", "db", true}, + {"postgresql://auser:password@localhost:5432/db?sslmode=disable", "db", true}, + {"postg://auser:password@localhost:5432/db?sslmode=disable", "db", false}, + //{"postgres://auser:pass with space@localhost:5432/db?sslmode=disable", "db", true}, + //{"postgres:// auser : password@localhost:5432/db?sslmode=disable", "db", true}, + {"postgres://%20auser%20:pass%20with%20space@localhost:5432/db?sslmode=disable", "db", true}, + //{"postgres://auser:パスワード@localhost:5432/データベース?sslmode=disable", "データベース", true}, + {"dbname=db sslmode=disable", "db", true}, + {"user=auser password=password dbname=db sslmode=disable", "db", true}, + {"", "db", false}, + {"dbname=db =disable", "db", false}, + } + + driver := core.QueryDriver("pgx") + + for _, test := range tests { + uri, err := driver.Parse("pgx", test.in) + + if err != nil && test.valid { + t.Errorf("%q got unexpected error: %s", test.in, err) + } else if err == nil && !reflect.DeepEqual(test.expected, uri.DbName) { + t.Errorf("%q got: %#v want: %#v", test.in, uri.DbName, test.expected) + } + + // Register DriverConfig + drvierConfig := stdlib.DriverConfig{} + stdlib.RegisterDriverConfig(drvierConfig) + uri, err = driver.Parse("pgx", + drvierConfig.ConnectionString(test.in)) + if err != nil && test.valid { + t.Errorf("%q got unexpected error: %s", test.in, err) + } else if err == nil && !reflect.DeepEqual(test.expected, uri.DbName) { + t.Errorf("%q got: %#v want: %#v", test.in, uri.DbName, test.expected) + } + + } + +}