clientId_test.go 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package utils
  2. import (
  3. "net/http/httptest"
  4. "testing"
  5. )
  6. func TestGetIPAddressFromRequest(t *testing.T) {
  7. expectedIpv4Result := "203.0.113.195"
  8. expectedIpv6Result := "2001:9e8:5221:4201:5221:7dff:fe53"
  9. request := httptest.NewRequest("GET", "/", nil)
  10. //Test ipv4 address without X-FORWARDED-FOR header (With Port set up)
  11. request.RemoteAddr = "203.0.113.195:41237"
  12. result := GetIPAddressFromRequest(request)
  13. if result != expectedIpv4Result {
  14. t.Errorf("IPV4 Remote address only (with Port) test failed: Expected %s, got %s", expectedIpv4Result, result)
  15. }
  16. //Test ipv4 without X-FORWARDED-FOR header (Without Port set up)
  17. request.RemoteAddr = "203.0.113.195"
  18. result = GetIPAddressFromRequest(request)
  19. if result != expectedIpv4Result {
  20. t.Errorf("IPV4 Remote address only (without Port) test failed: Expected %s, got %s", expectedIpv4Result, result)
  21. }
  22. //Test ipv4 with X-FORWARDED-FOR header (With Port SetUp)
  23. request.Header.Set("X-FORWARDED-FOR", "203.0.113.195:41237, 198.51.100.100:38523, 140.248.67.176:12345")
  24. result = GetIPAddressFromRequest(request)
  25. if result != expectedIpv4Result {
  26. t.Errorf("IPV4 X-FORWARDED-FOR header (With Port) test failed: Expected %s, got %s", expectedIpv4Result, result)
  27. }
  28. //Test ipv4 with X-FORWARDED-FOR header (Without Port SetUp)
  29. request.Header.Set("X-FORWARDED-FOR", "203.0.113.195, 198.51.100.100, 140.248.67.176")
  30. result = GetIPAddressFromRequest(request)
  31. if result != expectedIpv4Result {
  32. t.Errorf("IPV4 X-FORWARDED-FOR header (Without Port) test failed: Expected %s, got %s", expectedIpv4Result, result)
  33. }
  34. //Reset X-FORWARDED-FOR Header
  35. request.Header.Set("X-FORWARDED-FOR", "")
  36. //Test ipv6 address without X-FORWARDED-FOR header (With Port Set Up)
  37. request.RemoteAddr = "[2001:9e8:5221:4201:5221:7dff:fe53]:9080"
  38. result = GetIPAddressFromRequest(request)
  39. if result != expectedIpv6Result {
  40. t.Errorf("IPV6 Remote address only (with Port) test failed: Expected %s, got %s", expectedIpv6Result, result)
  41. }
  42. //Test ipv6 address without X-FORWARDED-FOR header (Without Port Set Up)
  43. request.RemoteAddr = "2001:9e8:5221:4201:5221:7dff:fe53"
  44. result = GetIPAddressFromRequest(request)
  45. if result != expectedIpv6Result {
  46. t.Errorf("IPV6 Remote address only (with Port) test failed: Expected %s, got %s", expectedIpv6Result, result)
  47. }
  48. //Test ipv6 with X-FORWARDED-FOR header (Without Port SetUp)
  49. request.Header.Set("X-FORWARDED-FOR", "2001:9e8:5221:4201:5221:7dff:fe53, 2002:9e7:5231:4211:5211:7eff:ee53, 2003:7e8:5221:4231:5221:7dff:ff53")
  50. result = GetIPAddressFromRequest(request)
  51. if result != expectedIpv6Result {
  52. t.Errorf("IPV6 X-FORWARDED-FOR header (Without Port) test failed: Expected %s, got %s", expectedIpv6Result, result)
  53. }
  54. //Test ipv6 with X-FORWARDED-FOR header (With Port SetUp)
  55. request.Header.Set("X-FORWARDED-FOR", "[2001:9e8:5221:4201:5221:7dff:fe53]:9080, [2002:9e7:5231:4211:5211:7eff:ee53]:9080, [2003:7e8:5221:4231:5221:7dff:ff53]:9080")
  56. result = GetIPAddressFromRequest(request)
  57. if result != expectedIpv6Result {
  58. t.Errorf("IPV6 X-FORWARDED-FOR header (Without Port) test failed: Expected %s, got %s", expectedIpv6Result, result)
  59. }
  60. }
  61. func TestIsIpv6(t *testing.T) {
  62. ipv6AddressWithoutPort := "2001:9e8:5221:4201:5221:7dff:fe53"
  63. ipv6AddressWithPort := "[2001:9e8:5221:4201:5221:7dff:fe53]:9080"
  64. ipv4AddressWithoutPort := "203.0.113.195"
  65. ipv4AddressWithPort := "203.0.113.195:9080"
  66. if !isIPv6(ipv6AddressWithPort) || !isIPv6(ipv6AddressWithoutPort) {
  67. t.Error("IPV6 format test returned false on a valid ipv6 address")
  68. }
  69. if isIPv6(ipv4AddressWithPort) || isIPv6(ipv4AddressWithoutPort) {
  70. t.Error("IPV6 format test returned true on an invalid ipv6 address")
  71. }
  72. }