66 lines
1.7 KiB
Go
66 lines
1.7 KiB
Go
package pilgrim_conf_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"mvvasilev.dev/pilgrim/internal/pilgrim_conf"
|
|
)
|
|
|
|
func Test_ParseDatabaseUrl(t *testing.T) {
|
|
type args struct {
|
|
cliUrl string
|
|
}
|
|
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want pilgrim_conf.UrlParts
|
|
}{
|
|
{
|
|
name: "parses_url_correctly",
|
|
args: args{
|
|
cliUrl: "driver://user:pass@localhost:9999/segment1/segment2?arg1=val1&arg2=val2",
|
|
},
|
|
want: pilgrim_conf.UrlParts{
|
|
Driver: "driver",
|
|
Username: "user",
|
|
Password: "pass",
|
|
Host: "localhost",
|
|
Port: "9999",
|
|
Segments: []string{
|
|
"segment1",
|
|
"segment2",
|
|
},
|
|
Arguments: map[string]string{
|
|
"arg1": "val1",
|
|
"arg2": "val2",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := pilgrim_conf.ParseDatabaseUrl(tt.args.cliUrl); !assert.ObjectsAreEqual(got, tt.want) {
|
|
t.Errorf("ParseDatabaseUrl() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_UrlParts_Validate_ValidUrl(t *testing.T) {
|
|
urlParts := pilgrim_conf.ParseDatabaseUrl("mssql://user:pass@localhost:9999/segment1/segment2?arg1=val1&arg2=val2")
|
|
isValid, err := urlParts.Validate()
|
|
|
|
assert.True(t, isValid, "Valid DatabaseUrl returned as invalid")
|
|
assert.True(t, err == nil, "Valid DatabaseUrl returned validation errors")
|
|
}
|
|
|
|
func Test_UrlParts_Validate_InvalidUrl(t *testing.T) {
|
|
urlParts := pilgrim_conf.ParseDatabaseUrl("invalid-driver://user:pass@localhost:9999/segment1/segment2?arg1=val1&arg2=val2")
|
|
isValid, err := urlParts.Validate()
|
|
|
|
assert.True(t, !isValid, "Invalid DatabaseUrl returned as valid")
|
|
assert.True(t, err != nil, "Invalid DatabaseUrl did not return validation errors")
|
|
}
|