mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-09-21 19:00:42 +08:00
68 lines
1.9 KiB
Go
68 lines
1.9 KiB
Go
package common
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestHostInfoTargetUsesBracketedIPv6(t *testing.T) {
|
|
info := &HostInfo{Host: "2001:db8::1", Port: 443}
|
|
if got, want := info.Target(), "[2001:db8::1]:443"; got != want {
|
|
t.Fatalf("Target() = %q, want %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestHostInfoTargetDoesNotDoubleBracketIPv6(t *testing.T) {
|
|
info := &HostInfo{Host: "[2001:db8::1]", Port: 443}
|
|
if got, want := info.Target(), "[2001:db8::1]:443"; got != want {
|
|
t.Fatalf("Target() = %q, want %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestGlobalHelpersAndPacketLimitErrors(t *testing.T) {
|
|
if GetVersion() == "" {
|
|
t.Fatal("GetVersion returned empty string")
|
|
}
|
|
if !ContainsAny("hello fscan", "none", "scan") {
|
|
t.Fatal("ContainsAny should find a matching substring")
|
|
}
|
|
if ContainsAny("hello fscan", "none", "missing") {
|
|
t.Fatal("ContainsAny should return false when nothing matches")
|
|
}
|
|
|
|
maxErr := &PacketLimitError{Sentinel: ErrMaxPacketReached, Limit: 5, Current: 5}
|
|
if !errors.Is(maxErr, ErrMaxPacketReached) || !strings.Contains(maxErr.Error(), "5") {
|
|
t.Fatalf("max packet error = %v", maxErr)
|
|
}
|
|
|
|
rateErr := &PacketLimitError{Sentinel: ErrPacketRateLimited, Limit: 3, Current: 2}
|
|
if !errors.Is(rateErr, ErrPacketRateLimited) || !strings.Contains(rateErr.Error(), "3") {
|
|
t.Fatalf("rate limit error = %v", rateErr)
|
|
}
|
|
}
|
|
|
|
func TestCanSendPacketUsesGlobalConfigAndState(t *testing.T) {
|
|
previousConfig := GetGlobalConfig()
|
|
previousState := GetGlobalState()
|
|
t.Cleanup(func() {
|
|
SetGlobalConfig(previousConfig)
|
|
SetGlobalState(previousState)
|
|
})
|
|
|
|
cfg := NewConfig()
|
|
cfg.Network.MaxPacketCount = 1
|
|
state := NewState()
|
|
state.IncrementPacketCount()
|
|
SetGlobalConfig(cfg)
|
|
SetGlobalState(state)
|
|
|
|
ok, reason := CanSendPacket()
|
|
if ok {
|
|
t.Fatal("CanSendPacket should reject when max packet count is reached")
|
|
}
|
|
if reason == "" {
|
|
t.Fatal("CanSendPacket should return a rejection reason")
|
|
}
|
|
}
|