2025-03-15 19:03:22 +02:00
|
|
|
package pilgrim_conf_test
|
2024-10-25 23:57:19 +03:00
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
|
|
|
"testing"
|
|
|
|
|
2025-03-15 13:02:47 +02:00
|
|
|
"github.com/stretchr/testify/assert"
|
2025-03-15 19:03:22 +02:00
|
|
|
pilgrim_conf "mvvasilev.dev/pilgrim/internal/pilgrim_conf"
|
2024-10-25 23:57:19 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
func test_envVarContext_StringValue(
|
|
|
|
t *testing.T,
|
|
|
|
envVarKey string,
|
|
|
|
getEnvVar func() (value string, isDefined bool),
|
|
|
|
expectedVal string,
|
|
|
|
) {
|
|
|
|
os.Setenv(envVarKey, expectedVal)
|
|
|
|
|
|
|
|
val, isDefined := getEnvVar()
|
|
|
|
|
2025-03-15 13:02:47 +02:00
|
|
|
assert.True(t, isDefined)
|
|
|
|
assert.Equal(t, expectedVal, val)
|
2024-10-25 23:57:19 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func Test_envVarContext_Url(t *testing.T) {
|
|
|
|
test_envVarContext_StringValue(
|
|
|
|
t,
|
2025-03-15 19:03:22 +02:00
|
|
|
pilgrim_conf.EnvVarKey_Url,
|
|
|
|
func() (string, bool) { return pilgrim_conf.NewEnvVarContext().Url() },
|
2024-10-25 23:57:19 +03:00
|
|
|
"driver://user:pass@host:port/segment1/segment2?arg1=val1&arg2=val2",
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_envVarContext_Driver(t *testing.T) {
|
2025-03-15 19:03:22 +02:00
|
|
|
expectedVal := pilgrim_conf.DbDriver_MariaDB
|
2024-10-25 23:57:19 +03:00
|
|
|
|
2025-03-15 19:03:22 +02:00
|
|
|
os.Setenv(pilgrim_conf.EnvVarKey_Driver, string(pilgrim_conf.DbDriver_MariaDB))
|
2024-10-25 23:57:19 +03:00
|
|
|
|
2025-03-15 19:03:22 +02:00
|
|
|
val, isDefined := pilgrim_conf.NewEnvVarContext().Driver()
|
2024-10-25 23:57:19 +03:00
|
|
|
|
2025-03-15 13:02:47 +02:00
|
|
|
assert.True(t, isDefined)
|
|
|
|
assert.Equal(t, expectedVal, val)
|
2024-10-25 23:57:19 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func Test_envVarContext_Username(t *testing.T) {
|
|
|
|
test_envVarContext_StringValue(
|
|
|
|
t,
|
2025-03-15 19:03:22 +02:00
|
|
|
pilgrim_conf.EnvVarKey_Username,
|
|
|
|
func() (string, bool) { return pilgrim_conf.NewEnvVarContext().Username() },
|
2024-10-25 23:57:19 +03:00
|
|
|
"username",
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_envVarContext_Password(t *testing.T) {
|
|
|
|
test_envVarContext_StringValue(
|
|
|
|
t,
|
2025-03-15 19:03:22 +02:00
|
|
|
pilgrim_conf.EnvVarKey_Password,
|
|
|
|
func() (string, bool) { return pilgrim_conf.NewEnvVarContext().Password() },
|
2024-10-25 23:57:19 +03:00
|
|
|
"password",
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_envVarContext_Host(t *testing.T) {
|
|
|
|
test_envVarContext_StringValue(
|
|
|
|
t,
|
2025-03-15 19:03:22 +02:00
|
|
|
pilgrim_conf.EnvVarKey_Host,
|
|
|
|
func() (string, bool) { return pilgrim_conf.NewEnvVarContext().Host() },
|
2024-10-25 23:57:19 +03:00
|
|
|
"localhost",
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_envVarContext_Port(t *testing.T) {
|
|
|
|
test_envVarContext_StringValue(
|
|
|
|
t,
|
2025-03-15 19:03:22 +02:00
|
|
|
pilgrim_conf.EnvVarKey_Port,
|
|
|
|
func() (string, bool) { return pilgrim_conf.NewEnvVarContext().Port() },
|
2024-10-25 23:57:19 +03:00
|
|
|
"3306",
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_envVarContext_Directory(t *testing.T) {
|
|
|
|
test_envVarContext_StringValue(
|
|
|
|
t,
|
2025-03-15 19:03:22 +02:00
|
|
|
pilgrim_conf.EnvVarKey_Directory,
|
|
|
|
func() (string, bool) { return pilgrim_conf.NewEnvVarContext().Directory() },
|
2024-10-25 23:57:19 +03:00
|
|
|
"./custom-directory/migrations",
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_envVarContext_MigrationTable(t *testing.T) {
|
|
|
|
test_envVarContext_StringValue(
|
|
|
|
t,
|
2025-03-15 19:03:22 +02:00
|
|
|
pilgrim_conf.EnvVarKey_Table,
|
|
|
|
func() (string, bool) { return pilgrim_conf.NewEnvVarContext().MigrationTable() },
|
2024-10-25 23:57:19 +03:00
|
|
|
"pilgrim_migrations_custom_table",
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_envVarContext_MigrationTableSchema(t *testing.T) {
|
|
|
|
test_envVarContext_StringValue(
|
|
|
|
t,
|
2025-03-15 19:03:22 +02:00
|
|
|
pilgrim_conf.EnvVarKey_Schema,
|
|
|
|
func() (string, bool) { return pilgrim_conf.NewEnvVarContext().MigrationTableSchema() },
|
2024-10-25 23:57:19 +03:00
|
|
|
"public",
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_envVarContext_Segments(t *testing.T) {
|
|
|
|
expectedVal := []string{"segment1", "segment2", "segment3"}
|
|
|
|
|
2025-03-15 19:03:22 +02:00
|
|
|
os.Setenv(pilgrim_conf.EnvVarKey_Segments, "segment1/segment2/segment3")
|
2024-10-25 23:57:19 +03:00
|
|
|
|
2025-03-15 19:03:22 +02:00
|
|
|
val, isDefined := pilgrim_conf.NewEnvVarContext().Segments()
|
2024-10-25 23:57:19 +03:00
|
|
|
|
2025-03-15 13:02:47 +02:00
|
|
|
assert.True(t, isDefined)
|
|
|
|
assert.Equal(t, expectedVal, val)
|
2024-10-25 23:57:19 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func Test_envVarContext_Args(t *testing.T) {
|
|
|
|
expectedVal := map[string]string{
|
|
|
|
"arg1": "val1",
|
|
|
|
"arg2": "val2",
|
|
|
|
"arg3": "val3",
|
|
|
|
}
|
|
|
|
|
2025-03-15 19:03:22 +02:00
|
|
|
os.Setenv(pilgrim_conf.EnvVarKey_Arguments, "arg1=val1&arg2=val2&arg3=val3")
|
2024-10-25 23:57:19 +03:00
|
|
|
|
2025-03-15 19:03:22 +02:00
|
|
|
val, isDefined := pilgrim_conf.NewEnvVarContext().Args()
|
2024-10-25 23:57:19 +03:00
|
|
|
|
2025-03-15 13:02:47 +02:00
|
|
|
assert.True(t, isDefined)
|
|
|
|
assert.Equal(t, expectedVal, val)
|
2024-10-25 23:57:19 +03:00
|
|
|
}
|