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
71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
package pflag
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func setUpIPNet(ip *net.IPNet) *FlagSet {
|
|
f := NewFlagSet("test", ContinueOnError)
|
|
_, def, _ := net.ParseCIDR("0.0.0.0/0")
|
|
f.IPNetVar(ip, "address", *def, "IP Address")
|
|
return f
|
|
}
|
|
|
|
func TestIPNet(t *testing.T) {
|
|
testCases := []struct {
|
|
input string
|
|
success bool
|
|
expected string
|
|
}{
|
|
{"0.0.0.0/0", true, "0.0.0.0/0"},
|
|
{" 0.0.0.0/0 ", true, "0.0.0.0/0"},
|
|
{"1.2.3.4/8", true, "1.0.0.0/8"},
|
|
{"127.0.0.1/16", true, "127.0.0.0/16"},
|
|
{"255.255.255.255/19", true, "255.255.224.0/19"},
|
|
{"255.255.255.255/32", true, "255.255.255.255/32"},
|
|
{"", false, ""},
|
|
{"/0", false, ""},
|
|
{"0", false, ""},
|
|
{"0/0", false, ""},
|
|
{"localhost/0", false, ""},
|
|
{"0.0.0/4", false, ""},
|
|
{"0.0.0./8", false, ""},
|
|
{"0.0.0.0./12", false, ""},
|
|
{"0.0.0.256/16", false, ""},
|
|
{"0.0.0.0 /20", false, ""},
|
|
{"0.0.0.0/ 24", false, ""},
|
|
{"0 . 0 . 0 . 0 / 28", false, ""},
|
|
{"0.0.0.0/33", false, ""},
|
|
}
|
|
|
|
devnull, _ := os.Open(os.DevNull)
|
|
os.Stderr = devnull
|
|
for i := range testCases {
|
|
var addr net.IPNet
|
|
f := setUpIPNet(&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.GetIPNet("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())
|
|
}
|
|
}
|
|
}
|
|
}
|