allow_list_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package nebula
  2. import (
  3. "net"
  4. "regexp"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestAllowList_Allow(t *testing.T) {
  9. assert.Equal(t, true, ((*AllowList)(nil)).Allow(ip2int(net.ParseIP("1.1.1.1"))))
  10. tree := NewCIDRTree()
  11. tree.AddCIDR(getCIDR("0.0.0.0/0"), true)
  12. tree.AddCIDR(getCIDR("10.0.0.0/8"), false)
  13. tree.AddCIDR(getCIDR("10.42.42.0/24"), true)
  14. al := &AllowList{cidrTree: tree}
  15. assert.Equal(t, true, al.Allow(ip2int(net.ParseIP("1.1.1.1"))))
  16. assert.Equal(t, false, al.Allow(ip2int(net.ParseIP("10.0.0.4"))))
  17. assert.Equal(t, true, al.Allow(ip2int(net.ParseIP("10.42.42.42"))))
  18. }
  19. func TestAllowList_AllowName(t *testing.T) {
  20. assert.Equal(t, true, ((*AllowList)(nil)).AllowName("docker0"))
  21. rules := []AllowListNameRule{
  22. {Name: regexp.MustCompile("^docker.*$"), Allow: false},
  23. {Name: regexp.MustCompile("^tun.*$"), Allow: false},
  24. }
  25. al := &AllowList{nameRules: rules}
  26. assert.Equal(t, false, al.AllowName("docker0"))
  27. assert.Equal(t, false, al.AllowName("tun0"))
  28. assert.Equal(t, true, al.AllowName("eth0"))
  29. rules = []AllowListNameRule{
  30. {Name: regexp.MustCompile("^eth.*$"), Allow: true},
  31. {Name: regexp.MustCompile("^ens.*$"), Allow: true},
  32. }
  33. al = &AllowList{nameRules: rules}
  34. assert.Equal(t, false, al.AllowName("docker0"))
  35. assert.Equal(t, true, al.AllowName("eth0"))
  36. assert.Equal(t, true, al.AllowName("ens5"))
  37. }