mukan-ignite/ignite/pkg/xurl/xurl_test.go
Mukan Erkin Törük c32551b6f7
Some checks failed
Docs Deploy / build_and_deploy (push) Has been cancelled
Generate Docs / cli (push) Has been cancelled
Generate Config Doc / cli (push) Has been cancelled
Go formatting / go-formatting (push) Has been cancelled
Check links / markdown-link-check (push) Has been cancelled
Integration / pre-test (push) Has been cancelled
Integration / test on (push) Has been cancelled
Integration / status (push) Has been cancelled
Lint / Lint Go code (push) Has been cancelled
Test / test (ubuntu-latest) (push) Has been cancelled
refactor: replace all github.com upstream refs with git.cw.tr/mukan-network
2026-05-11 03:36:24 +03:00

378 lines
7.2 KiB
Go

package xurl
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestHTTPEnsurePort(t *testing.T) {
cases := []struct {
name string
addr string
want string
}{
{
name: "http",
addr: "http://localhost",
want: "http://localhost:80",
},
{
name: "https",
addr: "https://localhost",
want: "https://localhost:443",
},
{
name: "custom",
addr: "http://localhost:4000",
want: "http://localhost:4000",
},
}
for _, tt := range cases {
t.Run(tt.name, func(t *testing.T) {
addr := HTTPEnsurePort(tt.addr)
require.Equal(t, tt.want, addr)
})
}
}
func TestTCP(t *testing.T) {
cases := []struct {
name string
addr string
want string
error bool
}{
{
name: "with scheme",
addr: "tcp://git.cw.tr/mukan-network/mukan-ignite",
want: "tcp://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "without scheme",
addr: "git.cw.tr/mukan-network/mukan-ignite",
want: "tcp://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "with invalid scheme",
addr: "ftp://git.cw.tr/mukan-network/mukan-ignite",
want: "tcp://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "with ip and port",
addr: "0.0.0.0:4500",
want: "tcp://0.0.0.0:4500",
},
{
name: "with localhost and port",
addr: "localhost:4500",
want: "tcp://localhost:4500",
},
{
name: "with invalid url",
addr: "tcp://github.com:x",
error: true,
},
{
name: "empty",
addr: "",
error: true,
},
}
for _, tt := range cases {
t.Run(tt.name, func(t *testing.T) {
addr, err := TCP(tt.addr)
if tt.error {
require.Error(t, err)
} else {
require.NoError(t, err)
require.Equal(t, tt.want, addr)
}
})
}
}
func TestHTTP(t *testing.T) {
cases := []struct {
name string
addr string
want string
error bool
}{
{
name: "with scheme",
addr: "http://git.cw.tr/mukan-network/mukan-ignite",
want: "http://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "without scheme",
addr: "git.cw.tr/mukan-network/mukan-ignite",
want: "http://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "with invalid scheme",
addr: "ftp://git.cw.tr/mukan-network/mukan-ignite",
want: "http://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "with ip and port",
addr: "0.0.0.0:4500",
want: "http://0.0.0.0:4500",
},
{
name: "with localhost and port",
addr: "localhost:4500",
want: "http://localhost:4500",
},
{
name: "with invalid url",
addr: "http://github.com:x",
error: true,
},
{
name: "empty",
addr: "",
error: true,
},
}
for _, tt := range cases {
t.Run(tt.name, func(t *testing.T) {
addr, err := HTTP(tt.addr)
if tt.error {
require.Error(t, err)
} else {
require.NoError(t, err)
require.Equal(t, tt.want, addr)
}
})
}
}
func TestHTTPS(t *testing.T) {
cases := []struct {
name string
addr string
want string
error bool
}{
{
name: "with scheme",
addr: "https://git.cw.tr/mukan-network/mukan-ignite",
want: "https://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "without scheme",
addr: "git.cw.tr/mukan-network/mukan-ignite",
want: "https://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "with invalid scheme",
addr: "ftp://git.cw.tr/mukan-network/mukan-ignite",
want: "https://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "with ip and port",
addr: "0.0.0.0:4500",
want: "https://0.0.0.0:4500",
},
{
name: "with localhost and port",
addr: "localhost:4500",
want: "https://localhost:4500",
},
{
name: "with invalid url",
addr: "https://github.com:x",
error: true,
},
{
name: "empty",
addr: "",
error: true,
},
}
for _, tt := range cases {
t.Run(tt.name, func(t *testing.T) {
addr, err := HTTPS(tt.addr)
if tt.error {
require.Error(t, err)
} else {
require.NoError(t, err)
require.Equal(t, tt.want, addr)
}
})
}
}
func TestWS(t *testing.T) {
cases := []struct {
name string
addr string
want string
error bool
}{
{
name: "with scheme",
addr: "ws://git.cw.tr/mukan-network/mukan-ignite",
want: "ws://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "without scheme",
addr: "git.cw.tr/mukan-network/mukan-ignite",
want: "ws://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "with invalid scheme",
addr: "ftp://git.cw.tr/mukan-network/mukan-ignite",
want: "ws://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "with ip and port",
addr: "0.0.0.0:4500",
want: "ws://0.0.0.0:4500",
},
{
name: "with localhost and port",
addr: "localhost:4500",
want: "ws://localhost:4500",
},
{
name: "with invalid url",
addr: "ws://github.com:x",
error: true,
},
{
name: "empty",
addr: "",
error: true,
},
}
for _, tt := range cases {
t.Run(tt.name, func(t *testing.T) {
addr, err := WS(tt.addr)
if tt.error {
require.Error(t, err)
} else {
require.NoError(t, err)
require.Equal(t, tt.want, addr)
}
})
}
}
func TestMightHTTPS(t *testing.T) {
cases := []struct {
name string
addr string
want string
error bool
}{
{
name: "with http scheme",
addr: "http://git.cw.tr/mukan-network/mukan-ignite",
want: "http://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "with https scheme",
addr: "https://git.cw.tr/mukan-network/mukan-ignite",
want: "https://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "without scheme",
addr: "git.cw.tr/mukan-network/mukan-ignite",
want: "https://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "with invalid scheme",
addr: "ftp://git.cw.tr/mukan-network/mukan-ignite",
want: "https://git.cw.tr/mukan-network/mukan-ignite",
},
{
name: "with ip and port",
addr: "0.0.0.0:4500",
want: "https://0.0.0.0:4500",
},
{
name: "with localhost and port",
addr: "localhost:4500",
want: "https://localhost:4500",
},
{
name: "with invalid url",
addr: "https://github.com:x",
error: true,
},
{
name: "empty",
addr: "",
error: true,
},
}
for _, tt := range cases {
t.Run(tt.name, func(t *testing.T) {
addr, err := MightHTTPS(tt.addr)
if tt.error {
require.Error(t, err)
} else {
require.NoError(t, err)
require.Equal(t, tt.want, addr)
}
})
}
}
func Test_addressPort(t *testing.T) {
tests := []struct {
name string
arg string
wantHost string
want bool
}{
{
name: "URI path",
arg: "/test/false",
want: false,
},
{
name: "invalid address",
arg: "aeihf3/aef/f..//",
want: false,
},
{
name: "host and port",
arg: "102.33.3.43:10000",
wantHost: "102.33.3.43:10000",
want: true,
},
{
name: "local port",
arg: "0.0.0.0:10000",
wantHost: "0.0.0.0:10000",
want: true,
},
{
name: "only port",
arg: ":10000",
wantHost: "0.0.0.0:10000",
want: true,
},
{
name: "only host",
arg: "102.33.3.43",
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
gotHost, got := addressPort(tt.arg)
require.Equal(t, tt.want, got)
require.Equal(t, tt.wantHost, gotHost)
})
}
}