Harden scan robustness and tests

This commit is contained in:
ZacharyZcR
2026-06-13 07:55:37 +08:00
parent 1595c92aed
commit 15a7670ba2
100 changed files with 4483 additions and 412 deletions
+44 -1
View File
@@ -2,7 +2,10 @@
package api
import "testing"
import (
"testing"
"unicode/utf8"
)
func TestExtractHostPortIPv6(t *testing.T) {
tests := []struct {
@@ -29,3 +32,43 @@ func TestExtractHostPortIPv6(t *testing.T) {
})
}
}
func TestTargetWithDetailsPort(t *testing.T) {
tests := []struct {
name string
target string
port interface{}
want string
}{
{name: "hostname", target: "example.com", port: 443, want: "example.com:443"},
{name: "ipv4", target: "192.168.1.1", port: "80", want: "192.168.1.1:80"},
{name: "bare ipv6", target: "2001:db8::1", port: 8443, want: "[2001:db8::1]:8443"},
{name: "bracketed ipv6", target: "[2001:db8::1]", port: 8443, want: "[2001:db8::1]:8443"},
{name: "already has port", target: "[2001:db8::1]:8443", port: 9443, want: ""},
{name: "invalid colon target", target: "example.com:abc", port: 80, want: ""},
{name: "url target", target: "http://example.com", port: 80, want: ""},
{name: "bad port", target: "example.com", port: 70000, want: ""},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := targetWithDetailsPort(tt.target, tt.port); got != tt.want {
t.Fatalf("targetWithDetailsPort(%q, %v) = %q, want %q", tt.target, tt.port, got, tt.want)
}
})
}
}
func TestExtractServiceInfoTruncatesBannerByRune(t *testing.T) {
banner := ""
for i := 0; i < 105; i++ {
banner += "界"
}
_, _, got := extractServiceInfo(map[string]interface{}{"banner": banner})
if !utf8.ValidString(got) {
t.Fatalf("banner is not valid utf8: %q", got)
}
if len([]rune(got)) != 103 || got[len(got)-3:] != "..." {
t.Fatalf("banner = %q, rune len %d", got, len([]rune(got)))
}
}