feat(scan): диапазон IPv4-подсетей CIDR–CIDR в поле целей (нормализация в список)

Made-with: Cursor
This commit is contained in:
Луценко Андрей Анатольевич
2026-04-10 15:02:19 +10:00
parent 29bd136cea
commit 009aeb5dbf
5 changed files with 183 additions and 9 deletions
+55
View File
@@ -0,0 +1,55 @@
package scans
import (
"testing"
)
func TestExpandCIDRRangeContiguous24(t *testing.T) {
out, err := expandCIDRRange("192.168.160.0/24", "192.168.190.0/24")
if err != nil {
t.Fatal(err)
}
if len(out) != 31 {
t.Fatalf("ожидали 31 подсеть /24, получили %d", len(out))
}
if out[0] != "192.168.160.0/24" || out[len(out)-1] != "192.168.190.0/24" {
t.Fatalf("границы: первый %q последний %q", out[0], out[len(out)-1])
}
}
func TestExpandCIDRRangeSingle(t *testing.T) {
out, err := expandCIDRRange("10.0.0.0/16", "10.0.0.0/16")
if err != nil {
t.Fatal(err)
}
if len(out) != 1 || out[0] != "10.0.0.0/16" {
t.Fatalf("получили %v", out)
}
}
func TestExpandCIDRRangeMaskMismatch(t *testing.T) {
_, err := expandCIDRRange("10.0.0.0/24", "10.0.1.0/16")
if err == nil {
t.Fatal("ожидали ошибку при разных масках")
}
}
func TestExpandCIDREntryRangeWithSpaces(t *testing.T) {
out, err := expandCIDREntry(" 192.168.1.0/24 - 192.168.3.0/24 ")
if err != nil {
t.Fatal(err)
}
if len(out) != 3 {
t.Fatalf("получили %d: %v", len(out), out)
}
}
func TestExpandCIDRSFromRequestDedup(t *testing.T) {
out, err := expandCIDRSFromRequest([]string{"192.168.1.0/24", "192.168.1.0/24"})
if err != nil {
t.Fatal(err)
}
if len(out) != 1 {
t.Fatalf("дедуп: %v", out)
}
}