pilgrim/internal/pilgrim_conf_test/url_parts_test.go

67 lines
1.7 KiB
Go
Raw Normal View History

2025-03-15 19:03:22 +02:00
package pilgrim_conf_test
import (
"testing"
2025-03-15 13:02:47 +02:00
"github.com/stretchr/testify/assert"
2025-03-15 19:03:22 +02:00
"mvvasilev.dev/pilgrim/internal/pilgrim_conf"
)
func Test_ParseDatabaseUrl(t *testing.T) {
type args struct {
cliUrl string
}
tests := []struct {
name string
args args
2025-03-15 19:03:22 +02:00
want pilgrim_conf.UrlParts
}{
{
name: "parses_url_correctly",
args: args{
cliUrl: "driver://user:pass@localhost:9999/segment1/segment2?arg1=val1&arg2=val2",
},
2025-03-15 19:03:22 +02:00
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) {
2025-03-15 19:03:22 +02:00
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) {
2025-03-15 19:03:22 +02:00
urlParts := pilgrim_conf.ParseDatabaseUrl("mssql://user:pass@localhost:9999/segment1/segment2?arg1=val1&arg2=val2")
isValid, err := urlParts.Validate()
2025-03-15 13:02:47 +02:00
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) {
2025-03-15 19:03:22 +02:00
urlParts := pilgrim_conf.ParseDatabaseUrl("invalid-driver://user:pass@localhost:9999/segment1/segment2?arg1=val1&arg2=val2")
isValid, err := urlParts.Validate()
2025-03-15 13:02:47 +02:00
assert.True(t, !isValid, "Invalid DatabaseUrl returned as valid")
assert.True(t, err != nil, "Invalid DatabaseUrl did not return validation errors")
}