Moved code to top-level.
This commit is contained in:
93
url_test.go
Normal file
93
url_test.go
Normal file
@@ -0,0 +1,93 @@
|
||||
package honeybee
|
||||
|
||||
import (
|
||||
"git.wisehodl.dev/jay/go-honeybee/errors"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestParseURL(t *testing.T) {
|
||||
type wantURL struct {
|
||||
scheme string
|
||||
host string
|
||||
path string
|
||||
}
|
||||
|
||||
cases := []struct {
|
||||
name string
|
||||
url string
|
||||
want wantURL
|
||||
wantErr error
|
||||
wantErrText string
|
||||
}{
|
||||
{
|
||||
name: "valid ws url",
|
||||
url: "ws://localhost:8080/relay",
|
||||
want: wantURL{
|
||||
scheme: "ws",
|
||||
host: "localhost:8080",
|
||||
path: "/relay",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "valid wss url",
|
||||
url: "wss://relay.example.com",
|
||||
want: wantURL{
|
||||
scheme: "wss",
|
||||
host: "relay.example.com",
|
||||
path: "",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "http scheme rejected",
|
||||
url: "http://example.com",
|
||||
wantErr: errors.InvalidProtocol,
|
||||
},
|
||||
{
|
||||
name: "missing scheme",
|
||||
url: "example.com:8080",
|
||||
wantErr: errors.InvalidProtocol,
|
||||
},
|
||||
{
|
||||
name: "empty string",
|
||||
url: "",
|
||||
wantErr: errors.InvalidProtocol,
|
||||
},
|
||||
{
|
||||
name: "malformed url",
|
||||
url: "ws://[::1:8080",
|
||||
wantErrText: "missing ']' in host",
|
||||
},
|
||||
{
|
||||
name: "ipv6 address",
|
||||
url: "ws://[::1]:8080/relay",
|
||||
want: wantURL{
|
||||
scheme: "ws",
|
||||
host: "[::1]:8080",
|
||||
path: "/relay",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
got, err := ParseURL(tc.url)
|
||||
|
||||
if tc.wantErr != nil || tc.wantErrText != "" {
|
||||
if tc.wantErr != nil {
|
||||
assert.ErrorIs(t, err, tc.wantErr)
|
||||
}
|
||||
|
||||
if tc.wantErrText != "" {
|
||||
assert.ErrorContains(t, err, tc.wantErrText)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, tc.want.scheme, got.Scheme)
|
||||
assert.Equal(t, tc.want.host, got.Host)
|
||||
assert.Equal(t, tc.want.path, got.Path)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user