mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2025-11-07 15:20:24 +08:00
126 lines
2.7 KiB
Go
126 lines
2.7 KiB
Go
|
|
package shared
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/iwind/TeaGo/assert"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestGeoConfig_Contains(t *testing.T) {
|
||
|
|
a := assert.NewAssertion(t)
|
||
|
|
|
||
|
|
{
|
||
|
|
geo := NewIPRangeConfig()
|
||
|
|
geo.Type = IPRangeTypeRange
|
||
|
|
geo.IPFrom = "192.168.1.100"
|
||
|
|
geo.IPTo = "192.168.1.110"
|
||
|
|
a.IsNil(geo.Validate())
|
||
|
|
a.IsTrue(geo.Contains("192.168.1.100"))
|
||
|
|
a.IsTrue(geo.Contains("192.168.1.101"))
|
||
|
|
a.IsTrue(geo.Contains("192.168.1.110"))
|
||
|
|
a.IsFalse(geo.Contains("192.168.1.111"))
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
geo := NewIPRangeConfig()
|
||
|
|
geo.Type = IPRangeTypeCIDR
|
||
|
|
geo.CIDR = "192.168.1.1/24"
|
||
|
|
a.IsNil(geo.Validate())
|
||
|
|
a.IsTrue(geo.Contains("192.168.1.100"))
|
||
|
|
a.IsFalse(geo.Contains("192.168.2.100"))
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
geo := NewIPRangeConfig()
|
||
|
|
geo.Type = IPRangeTypeCIDR
|
||
|
|
geo.CIDR = "192.168.1.1/16"
|
||
|
|
a.IsNil(geo.Validate())
|
||
|
|
a.IsTrue(geo.Contains("192.168.2.100"))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestParseIPRange(t *testing.T) {
|
||
|
|
a := assert.NewAssertion(t)
|
||
|
|
|
||
|
|
{
|
||
|
|
_, err := ParseIPRange("")
|
||
|
|
a.IsNotNil(err)
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
r, err := ParseIPRange("192.168.1.100")
|
||
|
|
a.IsNil(err)
|
||
|
|
a.IsTrue(r.IPFrom == r.IPTo)
|
||
|
|
a.IsTrue(r.IPFrom == "192.168.1.100")
|
||
|
|
a.IsTrue(r.Contains("192.168.1.100"))
|
||
|
|
a.IsFalse(r.Contains("192.168.1.99"))
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
r, err := ParseIPRange("192.168.1.100/24")
|
||
|
|
a.IsNil(err)
|
||
|
|
a.IsTrue(r.CIDR == "192.168.1.100/24")
|
||
|
|
a.IsTrue(r.Contains("192.168.1.100"))
|
||
|
|
a.IsTrue(r.Contains("192.168.1.99"))
|
||
|
|
a.IsFalse(r.Contains("192.168.2.100"))
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
r, err := ParseIPRange("192.168.1.100, 192.168.1.200")
|
||
|
|
a.IsNil(err)
|
||
|
|
a.IsTrue(r.IPFrom == "192.168.1.100")
|
||
|
|
a.IsTrue(r.IPTo == "192.168.1.200")
|
||
|
|
a.IsTrue(r.Contains("192.168.1.100"))
|
||
|
|
a.IsTrue(r.Contains("192.168.1.150"))
|
||
|
|
a.IsFalse(r.Contains("192.168.2.100"))
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
r, err := ParseIPRange("192.168.1.100-192.168.1.200")
|
||
|
|
a.IsNil(err)
|
||
|
|
a.IsTrue(r.IPFrom == "192.168.1.100")
|
||
|
|
a.IsTrue(r.IPTo == "192.168.1.200")
|
||
|
|
a.IsTrue(r.Contains("192.168.1.100"))
|
||
|
|
a.IsTrue(r.Contains("192.168.1.150"))
|
||
|
|
a.IsFalse(r.Contains("192.168.2.100"))
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
r, err := ParseIPRange("all")
|
||
|
|
a.IsNil(err)
|
||
|
|
a.IsTrue(r.Type == IPRangeTypeAll)
|
||
|
|
a.IsTrue(r.Contains("192.168.1.100"))
|
||
|
|
a.IsTrue(r.Contains("192.168.1.150"))
|
||
|
|
a.IsTrue(r.Contains("192.168.2.100"))
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
r, err := ParseIPRange("192.168.1.*")
|
||
|
|
a.IsNil(err)
|
||
|
|
if r != nil {
|
||
|
|
a.IsTrue(r.Type == IPRangeTypeWildcard)
|
||
|
|
a.IsTrue(r.Contains("192.168.1.100"))
|
||
|
|
a.IsFalse(r.Contains("192.168.2.100"))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
r, err := ParseIPRange("192.168.*.*")
|
||
|
|
a.IsNil(err)
|
||
|
|
if r != nil {
|
||
|
|
a.IsTrue(r.Type == IPRangeTypeWildcard)
|
||
|
|
a.IsTrue(r.Contains("192.168.1.100"))
|
||
|
|
a.IsTrue(r.Contains("192.168.2.100"))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func BenchmarkIPRangeConfig_Contains(b *testing.B) {
|
||
|
|
r, err := ParseIPRange("192.168.1.*")
|
||
|
|
if err != nil {
|
||
|
|
b.Fatal(err)
|
||
|
|
}
|
||
|
|
for i := 0; i < b.N; i++ {
|
||
|
|
_ = r.Contains("192.168.1.100")
|
||
|
|
}
|
||
|
|
}
|