package session

import (
	"net"
	"testing"

	"github.com/onsi/gomega"
)

func Test_AllowIP(t *testing.T) {
	allowCIDRs := make([]*net.IPNet, 0)

	g := gomega.NewWithT(t)
	for _, cidr := range []string{
		"192.168.5.0/24",
		"106.75.116.22/32",
		"128.1.49.135/32",
		"172.31.0.0/16",
	} {
		_, ipNet, err := net.ParseCIDR(cidr)
		g.Expect(err).To(gomega.Succeed())

		allowCIDRs = append(allowCIDRs, ipNet)
	}

	g.Expect(AllowIP(allowCIDRs, []net.IP{net.ParseIP("192.168.5.1")}, false)).To(gomega.BeTrue())
	g.Expect(AllowIP(allowCIDRs, []net.IP{net.ParseIP("106.75.116.22")}, false)).To(gomega.BeTrue())
	g.Expect(AllowIP(allowCIDRs, []net.IP{net.ParseIP("192.168.6.0")}, false)).To(gomega.BeFalse())
	g.Expect(AllowIP(allowCIDRs, []net.IP{net.ParseIP("192.168.6.0:8888")}, false)).To(gomega.BeFalse())
	g.Expect(AllowIP(allowCIDRs, []net.IP{net.ParseIP("192.168.5.1"), net.ParseIP("192.168.5.2")}, false)).To(gomega.BeTrue())

	g.Expect(AllowIP(allowCIDRs, SourceIPs("172.31.97.106, 128.1.49.135"), false)).To(gomega.BeTrue())
}
