mirror of
https://github.com/yusing/godoxy.git
synced 2025-06-01 09:32:35 +02:00

Some checks are pending
Docker Image CI (socket-proxy) / build (push) Waiting to run
* refactor: simplify io code and make utils module independent * fix(docker): agent and socket-proxy docker event flushing with modified reverse proxy handler * refactor: remove unused code * refactor: remove the use of logging module in most code * refactor: streamline domain mismatch check in certState function * tweak: use ecdsa p-256 for autocert * fix(tests): update health check tests for invalid host and add case for port in host * feat(acme): custom acme directory * refactor: code refactor and improved context and error handling * tweak: optimize memory usage under load * fix(oidc): restore old user matching behavior * docs: add ChatGPT assistant to README --------- Co-authored-by: yusing <yusing@6uo.me>
49 lines
896 B
Go
49 lines
896 B
Go
package acl
|
|
|
|
import (
|
|
"net"
|
|
"reflect"
|
|
"testing"
|
|
|
|
maxmind "github.com/yusing/go-proxy/internal/maxmind/types"
|
|
"github.com/yusing/go-proxy/internal/serialization"
|
|
)
|
|
|
|
func TestMatchers(t *testing.T) {
|
|
strMatchers := []string{
|
|
"ip:127.0.0.1",
|
|
"cidr:10.0.0.0/8",
|
|
}
|
|
|
|
var mathers Matchers
|
|
err := serialization.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)
|
|
}
|
|
}
|
|
}
|