109 lines
2.9 KiB
Go
109 lines
2.9 KiB
Go
package pilgrim_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/mock"
|
|
"mvvasilev.dev/pilgrim/pilgrim"
|
|
)
|
|
|
|
type MockCliFlagRetriever struct {
|
|
mock.Mock
|
|
}
|
|
|
|
type MockEnvVarRetriever struct {
|
|
mock.Mock
|
|
}
|
|
|
|
const CliUrlValue = "postgres://cli_host:5432/cli_segment1/cli_segment2?cli_arg1=cli_val1&cli_arg2=cli_val2"
|
|
const CliDriverValue = pilgrim.DbDriver_Postgres
|
|
|
|
func Test_PilgrimContext_CliDriverOverridesCliUrlDriver(t *testing.T) {
|
|
env, cli := new(MockEnvVarRetriever), new(MockCliFlagRetriever)
|
|
|
|
env.On("Driver")
|
|
|
|
context, _, _ := createPilgrimContextWithDependencies(
|
|
map[string]string{
|
|
pilgrim.Flag_Url: CliUrlValue,
|
|
pilgrim.Flag_Driver: string(CliDriverValue),
|
|
},
|
|
map[string]string{},
|
|
)
|
|
|
|
assert.Equal(t, CliDriverValue, context.UrlParts().Driver, CliDriverValue)
|
|
}
|
|
|
|
func Test_PilgrimContext_EnvDriverOverridesEnvUrlDriver(t *testing.T) {
|
|
context, _, _ := createPilgrimContextWithDependencies(
|
|
map[string]string{},
|
|
map[string]string{
|
|
pilgrim.EnvVarKey_Url: "mariadb://env_host:3306/env_segment1/env_segment2?env_arg1=env_val1&env_arg2=env_val2",
|
|
pilgrim.EnvVarKey_Driver: "postgres",
|
|
},
|
|
)
|
|
|
|
assert.Equal(t, pilgrim.DbDriver_Postgres, context.UrlParts().Driver)
|
|
}
|
|
|
|
func Test_PilgrimContext_CliUrlDriverOverridesEnvDriver(t *testing.T) {
|
|
context, _, _ := createPilgrimContextWithDependencies(
|
|
map[string]string{
|
|
pilgrim.Flag_Url: CliUrlValue,
|
|
},
|
|
map[string]string{
|
|
pilgrim.EnvVarKey_Driver: "mariadb",
|
|
},
|
|
)
|
|
|
|
assert.Equal(t, CliDriverValue, context.UrlParts().Driver)
|
|
}
|
|
|
|
func Test_PilgrimContext_CliDriverOverridesEnvDriver(t *testing.T) {
|
|
context, _, _ := createPilgrimContextWithDependencies(
|
|
map[string]string{
|
|
pilgrim.Flag_Driver: string(CliDriverValue),
|
|
},
|
|
map[string]string{
|
|
pilgrim.EnvVarKey_Driver: "mariadb",
|
|
},
|
|
)
|
|
|
|
assert.Equal(t, CliDriverValue, context.UrlParts().Driver)
|
|
}
|
|
|
|
func Test_PilgrimContext_EnvDriverIsUsedIfNoCliDriverProvided(t *testing.T) {
|
|
context, _, _ := createPilgrimContextWithDependencies(
|
|
map[string]string{},
|
|
map[string]string{
|
|
pilgrim.EnvVarKey_Driver: "mariadb",
|
|
},
|
|
)
|
|
|
|
assert.Equal(t, pilgrim.DbDriver_MariaDB, context.UrlParts().Driver)
|
|
}
|
|
|
|
func Test_PilgrimContext_EnvUrlDriverIsUsedIfNoCliDriverProvided(t *testing.T) {
|
|
context, _, _ := createPilgrimContextWithDependencies(
|
|
map[string]string{},
|
|
map[string]string{
|
|
pilgrim.EnvVarKey_Url: "mariadb://env_host:3306/env_segment1/env_segment2?env_arg1=env_val1&env_arg2=env_val2",
|
|
},
|
|
)
|
|
|
|
assert.Equal(t, pilgrim.DbDriver_MariaDB, context.UrlParts().Driver)
|
|
}
|
|
|
|
func Test_PilgrimContext_EnvUrlDriverIsNotUsedIfNoCliDriverOverrideProvided(t *testing.T) {
|
|
context, _, _ := createPilgrimContextWithDependencies(
|
|
map[string]string{
|
|
pilgrim.Flag_Driver: "postgres",
|
|
},
|
|
map[string]string{
|
|
pilgrim.EnvVarKey_Url: "mariadb://env_host:3306/env_segment1/env_segment2?env_arg1=env_val1&env_arg2=env_val2",
|
|
},
|
|
)
|
|
|
|
assert.Equal(t, pilgrim.DbDriver_Postgres, context.UrlParts().Driver)
|
|
}
|