1.4.5.2
This commit is contained in:
145
EdgeCommon/pkg/serverconfigs/shared/ip_range_test.go
Normal file
145
EdgeCommon/pkg/serverconfigs/shared/ip_range_test.go
Normal file
@@ -0,0 +1,145 @@
|
||||
package shared
|
||||
|
||||
import (
|
||||
"github.com/iwind/TeaGo/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestGeoConfig_Contains(t *testing.T) {
|
||||
a := assert.NewAssertion(t)
|
||||
|
||||
{
|
||||
r := NewIPRangeConfig()
|
||||
r.Type = IPRangeTypeRange
|
||||
r.IPFrom = "192.168.1.100"
|
||||
r.IPTo = "192.168.1.110"
|
||||
a.IsNil(r.Init())
|
||||
a.IsTrue(r.Contains("192.168.1.100"))
|
||||
a.IsTrue(r.Contains("192.168.1.101"))
|
||||
a.IsTrue(r.Contains("192.168.1.110"))
|
||||
a.IsFalse(r.Contains("192.168.1.111"))
|
||||
}
|
||||
|
||||
{
|
||||
r := NewIPRangeConfig()
|
||||
r.Type = IPRangeTypeCIDR
|
||||
r.CIDR = "192.168.1.1/24"
|
||||
a.IsNil(r.Init())
|
||||
a.IsTrue(r.Contains("192.168.1.100"))
|
||||
a.IsFalse(r.Contains("192.168.2.100"))
|
||||
}
|
||||
|
||||
{
|
||||
r := NewIPRangeConfig()
|
||||
r.Type = IPRangeTypeCIDR
|
||||
r.CIDR = "192.168.1.1/16"
|
||||
a.IsNil(r.Init())
|
||||
a.IsTrue(r.Contains("192.168.2.100"))
|
||||
}
|
||||
|
||||
{
|
||||
r := NewIPRangeConfig()
|
||||
r.Type = IPRangeTypeRange
|
||||
r.IPFrom = "::1"
|
||||
r.IPTo = "::1"
|
||||
a.IsNil(r.Init())
|
||||
a.IsTrue(r.Contains("::1"))
|
||||
}
|
||||
|
||||
{
|
||||
r := NewIPRangeConfig()
|
||||
r.Type = IPRangeTypeRange
|
||||
r.IPFrom = "::1"
|
||||
r.IPTo = "::100"
|
||||
a.IsNil(r.Init())
|
||||
a.IsTrue(r.Contains("::1"))
|
||||
a.IsTrue(r.Contains("::99"))
|
||||
a.IsFalse(r.Contains("::101"))
|
||||
}
|
||||
}
|
||||
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user