allow_list_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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(net.ParseIP("1.1.1.1")))
  10. tree := NewCIDR6Tree()
  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.42/32"), true)
  14. tree.AddCIDR(getCIDR("10.42.0.0/16"), true)
  15. tree.AddCIDR(getCIDR("10.42.42.0/24"), true)
  16. tree.AddCIDR(getCIDR("10.42.42.0/24"), false)
  17. tree.AddCIDR(getCIDR("::1/128"), true)
  18. tree.AddCIDR(getCIDR("::2/128"), false)
  19. al := &AllowList{cidrTree: tree}
  20. assert.Equal(t, true, al.Allow(net.ParseIP("1.1.1.1")))
  21. assert.Equal(t, false, al.Allow(net.ParseIP("10.0.0.4")))
  22. assert.Equal(t, true, al.Allow(net.ParseIP("10.42.42.42")))
  23. assert.Equal(t, false, al.Allow(net.ParseIP("10.42.42.41")))
  24. assert.Equal(t, true, al.Allow(net.ParseIP("10.42.0.1")))
  25. assert.Equal(t, true, al.Allow(net.ParseIP("::1")))
  26. assert.Equal(t, false, al.Allow(net.ParseIP("::2")))
  27. }
  28. func TestAllowList_AllowName(t *testing.T) {
  29. assert.Equal(t, true, ((*AllowList)(nil)).AllowName("docker0"))
  30. rules := []AllowListNameRule{
  31. {Name: regexp.MustCompile("^docker.*$"), Allow: false},
  32. {Name: regexp.MustCompile("^tun.*$"), Allow: false},
  33. }
  34. al := &AllowList{nameRules: rules}
  35. assert.Equal(t, false, al.AllowName("docker0"))
  36. assert.Equal(t, false, al.AllowName("tun0"))
  37. assert.Equal(t, true, al.AllowName("eth0"))
  38. rules = []AllowListNameRule{
  39. {Name: regexp.MustCompile("^eth.*$"), Allow: true},
  40. {Name: regexp.MustCompile("^ens.*$"), Allow: true},
  41. }
  42. al = &AllowList{nameRules: rules}
  43. assert.Equal(t, false, al.AllowName("docker0"))
  44. assert.Equal(t, true, al.AllowName("eth0"))
  45. assert.Equal(t, true, al.AllowName("ens5"))
  46. }