utils_test.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package accesscontrol
  2. import (
  3. "testing"
  4. )
  5. func TestBreakdownIpRange(t *testing.T) {
  6. // Test case 1: Single IP
  7. result := BreakdownIpRange("192.168.1.1")
  8. if len(result) != 1 || result[0] != "192.168.1.1" {
  9. t.Error("Expected breakdown result: [192.168.1.1]")
  10. }
  11. // Test case 2: IP range
  12. result = BreakdownIpRange("192.168.1.1-192.168.1.5")
  13. expected := []string{"192.168.1.1", "192.168.1.2", "192.168.1.3", "192.168.1.4", "192.168.1.5"}
  14. if !isEqual(result, expected) {
  15. t.Error("Expected breakdown result:", expected)
  16. }
  17. // Test case 3: Invalid IP range
  18. result = BreakdownIpRange("invalid-ip-range")
  19. if len(result) != 0 {
  20. t.Error("Expected empty breakdown result")
  21. }
  22. }
  23. func TestIpInRange(t *testing.T) {
  24. // Test case 1: IP in range
  25. result := IpInRange("192.168.1.3", "192.168.1.1-192.168.1.5")
  26. if !result {
  27. t.Error("Expected true for IP in range")
  28. }
  29. // Test case 2: IP not in range
  30. result = IpInRange("192.168.2.1", "192.168.1.1-192.168.1.5")
  31. if result {
  32. t.Error("Expected false for IP not in range")
  33. }
  34. // Test case 3: IP in single IP range
  35. result = IpInRange("192.168.1.1", "192.168.1.1")
  36. if !result {
  37. t.Error("Expected true for IP in single IP range")
  38. }
  39. // Test case 4: IP not in single IP range
  40. result = IpInRange("192.168.1.2", "192.168.1.1")
  41. if result {
  42. t.Error("Expected false for IP not in single IP range")
  43. }
  44. }
  45. func TestValidateIpRange(t *testing.T) {
  46. // Test case 1: Valid single IP
  47. err := ValidateIpRange("192.168.1.1")
  48. if err != nil {
  49. t.Error("Expected no error for valid single IP")
  50. }
  51. // Test case 2: Valid IP range
  52. err = ValidateIpRange("192.168.1.1-192.168.1.5")
  53. if err != nil {
  54. t.Error("Expected no error for valid IP range")
  55. }
  56. // Test case 3: Invalid IP range - Starting IP is larger or equal to ending IP
  57. err = ValidateIpRange("192.168.1.5-192.168.1.1")
  58. if err == nil {
  59. t.Error("Expected error for invalid IP range")
  60. }
  61. // Test case 4: Invalid IP range - Subnet mismatch
  62. err = ValidateIpRange("192.168.1.1-192.168.2.5")
  63. if err == nil {
  64. t.Error("Expected error for invalid IP range")
  65. }
  66. // Test case 5: Invalid single IP
  67. err = ValidateIpRange("invalid-ip")
  68. if err == nil {
  69. t.Error("Expected error for invalid single IP")
  70. }
  71. }
  72. func isEqual(slice1, slice2 []string) bool {
  73. if len(slice1) != len(slice2) {
  74. return false
  75. }
  76. for i := range slice1 {
  77. if slice1[i] != slice2[i] {
  78. return false
  79. }
  80. }
  81. return true
  82. }