github.com/fasmat/pop@v4.13.1+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:1337/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("1337", 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&param2=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:1337/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("1337", 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  }