mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-19 20:32:35 +02:00
49 lines
880 B
Go
49 lines
880 B
Go
package acl
|
|
|
|
import (
|
|
"net"
|
|
"reflect"
|
|
"testing"
|
|
|
|
maxmind "github.com/yusing/go-proxy/internal/maxmind/types"
|
|
"github.com/yusing/go-proxy/internal/utils"
|
|
)
|
|
|
|
func TestMatchers(t *testing.T) {
|
|
strMatchers := []string{
|
|
"ip:127.0.0.1",
|
|
"cidr:10.0.0.0/8",
|
|
}
|
|
|
|
var mathers Matchers
|
|
err := utils.Convert(reflect.ValueOf(strMatchers), reflect.ValueOf(&mathers), false)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
tests := []struct {
|
|
ip string
|
|
want bool
|
|
}{
|
|
{"127.0.0.1", true},
|
|
{"10.0.0.1", true},
|
|
{"127.0.0.2", false},
|
|
{"192.168.0.1", false},
|
|
{"11.0.0.1", false},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
ip := net.ParseIP(test.ip)
|
|
if ip == nil {
|
|
t.Fatalf("invalid ip: %s", test.ip)
|
|
}
|
|
|
|
got := mathers.Match(&maxmind.IPInfo{
|
|
IP: ip,
|
|
Str: test.ip,
|
|
})
|
|
if got != test.want {
|
|
t.Errorf("mathers.Match(%s) = %v, want %v", test.ip, got, test.want)
|
|
}
|
|
}
|
|
}
|