package database import ( "testing" "github.com/stretchr/testify/assert" ) func TestMustGetConnectionString(t *testing.T) { t.Setenv("DB_USER", "user") t.Setenv("DB_PASS", "pass") t.Setenv("DB_HOST", "host") t.Setenv("DB_PORT", "port") t.Setenv("DB_NAME", "name") connStr := mustGetConnectionString() assert.Equal(t, "postgres://user:pass@host:port/name?", connStr) } func TestMustGetConnectionStringNoSSL(t *testing.T) { t.Setenv("DB_USER", "user") t.Setenv("DB_PASS", "pass") t.Setenv("DB_HOST", "host") t.Setenv("DB_PORT", "port") t.Setenv("DB_NAME", "name") t.Setenv("DB_NOSSL", "1") connStr := mustGetConnectionString() assert.Equal(t, "postgres://user:pass@host:port/name?sslmode=disable", connStr) } func TestMustGetConnectionStringNoEnv(t *testing.T) { t.Setenv("DB_USER", "") t.Setenv("DB_PASS", "") t.Setenv("DB_HOST", "") t.Setenv("DB_PORT", "") t.Setenv("DB_NAME", "") assert.Panics(t, func() { mustGetConnectionString() }) } func TestGetPoolConfig(t *testing.T) { t.Setenv("DB_USER", "user") t.Setenv("DB_PASS", "pass") t.Setenv("DB_HOST", "host") t.Setenv("DB_PORT", "5432") t.Setenv("DB_NAME", "name") config, err := getPoolConfig() assert.Nil(t, err) assert.Equal(t, config.ConnString(), mustGetConnectionString()) } func TestGetPoolConfigInvalidPort(t *testing.T) { t.Setenv("DB_USER", "user") t.Setenv("DB_PASS", "pass") t.Setenv("DB_HOST", "host") t.Setenv("DB_PORT", "invalid_port") t.Setenv("DB_NAME", "name") _, err := getPoolConfig() assert.EqualError(t, err, "cannot parse `postgres://user:xxxxxx@host:invalid_port/name?`: failed to parse as URL (invalid port \":invalid_port\" after host)") } func TestMustGetPoolConfig(t *testing.T) { t.Setenv("DB_USER", "user") t.Setenv("DB_PASS", "pass") t.Setenv("DB_HOST", "host") t.Setenv("DB_PORT", "5432") t.Setenv("DB_NAME", "name") config := mustGetPoolConfig() assert.Equal(t, config.ConnString(), mustGetConnectionString()) } func TestMustGetPoolConfigInvalidPort(t *testing.T) { t.Setenv("DB_USER", "user") t.Setenv("DB_PASS", "pass") t.Setenv("DB_HOST", "host") t.Setenv("DB_PORT", "invalid_port") t.Setenv("DB_NAME", "name") assert.Panics(t, func() { mustGetPoolConfig() }) }