5849898283
Unit tests functional and coverage back to 100% Add more routes to dictionary, add more credentials, add default port 5554, rename cameradar logs ENV variable, improve unit test readability, remove tmp file
64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
package pflag
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func setUpIP(ip *net.IP) *FlagSet {
|
|
f := NewFlagSet("test", ContinueOnError)
|
|
f.IPVar(ip, "address", net.ParseIP("0.0.0.0"), "IP Address")
|
|
return f
|
|
}
|
|
|
|
func TestIP(t *testing.T) {
|
|
testCases := []struct {
|
|
input string
|
|
success bool
|
|
expected string
|
|
}{
|
|
{"0.0.0.0", true, "0.0.0.0"},
|
|
{" 0.0.0.0 ", true, "0.0.0.0"},
|
|
{"1.2.3.4", true, "1.2.3.4"},
|
|
{"127.0.0.1", true, "127.0.0.1"},
|
|
{"255.255.255.255", true, "255.255.255.255"},
|
|
{"", false, ""},
|
|
{"0", false, ""},
|
|
{"localhost", false, ""},
|
|
{"0.0.0", false, ""},
|
|
{"0.0.0.", false, ""},
|
|
{"0.0.0.0.", false, ""},
|
|
{"0.0.0.256", false, ""},
|
|
{"0 . 0 . 0 . 0", false, ""},
|
|
}
|
|
|
|
devnull, _ := os.Open(os.DevNull)
|
|
os.Stderr = devnull
|
|
for i := range testCases {
|
|
var addr net.IP
|
|
f := setUpIP(&addr)
|
|
|
|
tc := &testCases[i]
|
|
|
|
arg := fmt.Sprintf("--address=%s", tc.input)
|
|
err := f.Parse([]string{arg})
|
|
if err != nil && tc.success == true {
|
|
t.Errorf("expected success, got %q", err)
|
|
continue
|
|
} else if err == nil && tc.success == false {
|
|
t.Errorf("expected failure")
|
|
continue
|
|
} else if tc.success {
|
|
ip, err := f.GetIP("address")
|
|
if err != nil {
|
|
t.Errorf("Got error trying to fetch the IP flag: %v", err)
|
|
}
|
|
if ip.String() != tc.expected {
|
|
t.Errorf("expected %q, got %q", tc.expected, ip.String())
|
|
}
|
|
}
|
|
}
|
|
}
|