github.com/solongordon/pop@v4.10.0+incompatible/connection_details_test.go (about) 1 package pop 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func Test_ConnectionDetails_Finalize(t *testing.T) { 10 r := require.New(t) 11 12 cd := &ConnectionDetails{ 13 URL: "postgres://user:pass@host:port/database", 14 } 15 err := cd.Finalize() 16 r.NoError(err) 17 18 r.Equal("database", cd.Database) 19 r.Equal("postgres", cd.Dialect) 20 r.Equal("host", cd.Host) 21 r.Equal("pass", cd.Password) 22 r.Equal("port", cd.Port) 23 r.Equal("user", cd.User) 24 } 25 26 func Test_ConnectionDetails_Finalize_MySQL_Standard(t *testing.T) { 27 r := require.New(t) 28 29 url := "mysql://user:pass@(host:port)/database?param1=value1¶m2=value2" 30 cd := &ConnectionDetails{ 31 URL: url, 32 } 33 err := cd.Finalize() 34 r.NoError(err) 35 36 r.Equal(url, cd.URL) 37 r.Equal("mysql", cd.Dialect) 38 r.Equal("user", cd.User) 39 r.Equal("pass", cd.Password) 40 r.Equal("host", cd.Host) 41 r.Equal("port", cd.Port) 42 r.Equal("database", cd.Database) 43 } 44 45 func Test_ConnectionDetails_Finalize_Cockroach(t *testing.T) { 46 r := require.New(t) 47 cd := &ConnectionDetails{ 48 Dialect: "cockroach", 49 URL: "postgres://user:pass@host:port/database?sslmode=require&sslrootcert=certs/ca.crt&sslkey=certs/client.key&sslcert=certs/client.crt", 50 } 51 err := cd.Finalize() 52 r.NoError(err) 53 r.Equal("cockroach", cd.Dialect) 54 r.Equal("database", cd.Database) 55 r.Equal("host", cd.Host) 56 r.Equal("port", cd.Port) 57 r.Equal("user", cd.User) 58 r.Equal("pass", cd.Password) 59 } 60 61 func Test_ConnectionDetails_Finalize_UnknownSchemeURL(t *testing.T) { 62 r := require.New(t) 63 cd := &ConnectionDetails{ 64 URL: "unknown://user:pass@host:port/database", 65 } 66 err := cd.Finalize() 67 r.Error(err) 68 } 69 70 func Test_ConnectionDetails_Finalize_UnknownDialect(t *testing.T) { 71 r := require.New(t) 72 cd := &ConnectionDetails{ 73 Dialect: "unknown", 74 } 75 err := cd.Finalize() 76 r.Error(err) 77 } 78 79 func Test_ConnectionDetails_Finalize_NoDB_NoURL(t *testing.T) { 80 r := require.New(t) 81 cd := &ConnectionDetails{ 82 Dialect: "sqlite3", 83 } 84 err := cd.Finalize() 85 r.Error(err) 86 }