Files
go2tv/soapcalls/utils/iptools_test.go
2023-05-01 19:48:14 +03:00

94 lines
1.7 KiB
Go

package utils
import (
"net"
"strconv"
"strings"
"testing"
)
func TestURLtoListenIPandPort(t *testing.T) {
tt := []struct {
name string
input string
wantFromPort int
wantToPort int
}{
{
`Test #1`,
`http://192.168.88.244:9197/dmr`,
3500,
4500,
},
{
`Test #2`,
`http://192.168.2.211/dmr`,
3500,
4500,
},
{
`Test #3`,
`https://192.168.1.2/dmr`,
3500,
4500,
},
}
for _, tc := range tt {
t.Run(tc.name, func(t *testing.T) {
out, err := URLtoListenIPandPort(tc.input)
if err != nil {
t.Fatalf("%s: Failed to call URLtoListenIPandPort due to %s", tc.name, err.Error())
}
outSplit := strings.Split(out, ":")
if len(outSplit) < 2 {
t.Fatalf("%s: Not in ip:port format: %s", tc.name, err.Error())
}
outInt, _ := strconv.Atoi(outSplit[1])
if outInt < tc.wantFromPort || outInt > tc.wantToPort {
t.Fatalf("%s: got: %s, wanted port between: %d - %d.", tc.name, out, tc.wantFromPort, tc.wantToPort)
}
})
}
}
func TestCheckAndPickPort(t *testing.T) {
tt := []struct {
name string
inputHost string
inputPort int
}{
{
`Test #1`,
"127.0.0.1",
3000,
},
}
for _, tc := range tt {
t.Run(tc.name, func(t *testing.T) {
_, err := checkAndPickPort(tc.inputHost, tc.inputPort)
if err != nil {
t.Fatalf("%s: Failed to call TestCheckAndPickPort due to %s", tc.name, err.Error())
}
})
}
}
func TestHostPortIsAlive(t *testing.T) {
ln, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Fatalf("HostPortIsAlive: failed to start server")
}
go func() {
defer ln.Close()
_, _ = ln.Accept()
}()
if !HostPortIsAlive(ln.Addr().String()) {
t.Fatalf("HostPortIsAlive: expected true")
}
}