github.com/gofiber/fiber/v2@v2.47.0/utils/ips_test.go (about)

     1  // ⚡️ Fiber is an Express inspired web framework written in Go with ☕️
     2  // 🤖 Github Repository: https://github.com/gofiber/fiber
     3  // 📌 API Documentation: https://docs.gofiber.io
     4  
     5  package utils
     6  
     7  import (
     8  	"net"
     9  	"testing"
    10  )
    11  
    12  func Test_IsIPv4(t *testing.T) {
    13  	t.Parallel()
    14  
    15  	AssertEqual(t, true, IsIPv4("174.23.33.100"))
    16  	AssertEqual(t, true, IsIPv4("127.0.0.1"))
    17  	AssertEqual(t, true, IsIPv4("0.0.0.0"))
    18  
    19  	AssertEqual(t, false, IsIPv4(".0.0.0"))
    20  	AssertEqual(t, false, IsIPv4("0.0.0."))
    21  	AssertEqual(t, false, IsIPv4("0.0.0"))
    22  	AssertEqual(t, false, IsIPv4(".0.0.0."))
    23  	AssertEqual(t, false, IsIPv4("0.0.0.0.0"))
    24  	AssertEqual(t, false, IsIPv4("0"))
    25  	AssertEqual(t, false, IsIPv4(""))
    26  	AssertEqual(t, false, IsIPv4("2345:0425:2CA1::0567:5673:23b5"))
    27  	AssertEqual(t, false, IsIPv4("invalid"))
    28  	AssertEqual(t, false, IsIPv4("189.12.34.260"))
    29  	AssertEqual(t, false, IsIPv4("189.12.260.260"))
    30  	AssertEqual(t, false, IsIPv4("189.260.260.260"))
    31  	AssertEqual(t, false, IsIPv4("999.999.999.999"))
    32  	AssertEqual(t, false, IsIPv4("9999.9999.9999.9999"))
    33  }
    34  
    35  // go test -v -run=^$ -bench=UnsafeString -benchmem -count=2
    36  
    37  func Benchmark_IsIPv4(b *testing.B) {
    38  	ip := "174.23.33.100"
    39  	var res bool
    40  
    41  	b.Run("fiber", func(b *testing.B) {
    42  		for n := 0; n < b.N; n++ {
    43  			res = IsIPv4(ip)
    44  		}
    45  		AssertEqual(b, true, res)
    46  	})
    47  
    48  	b.Run("default", func(b *testing.B) {
    49  		for n := 0; n < b.N; n++ {
    50  			res = net.ParseIP(ip) != nil
    51  		}
    52  		AssertEqual(b, true, res)
    53  	})
    54  }
    55  
    56  func Test_IsIPv6(t *testing.T) {
    57  	t.Parallel()
    58  
    59  	AssertEqual(t, true, IsIPv6("9396:9549:b4f7:8ed0:4791:1330:8c06:e62d"))
    60  	AssertEqual(t, true, IsIPv6("2345:0425:2CA1::0567:5673:23b5"))
    61  	AssertEqual(t, true, IsIPv6("2001:1:2:3:4:5:6:7"))
    62  
    63  	AssertEqual(t, false, IsIPv6("1.1.1.1"))
    64  	AssertEqual(t, false, IsIPv6("2001:1:2:3:4:5:6:"))
    65  	AssertEqual(t, false, IsIPv6(":1:2:3:4:5:6:"))
    66  	AssertEqual(t, false, IsIPv6("1:2:3:4:5:6:"))
    67  	AssertEqual(t, false, IsIPv6(""))
    68  	AssertEqual(t, false, IsIPv6("invalid"))
    69  }
    70  
    71  // go test -v -run=^$ -bench=UnsafeString -benchmem -count=2
    72  
    73  func Benchmark_IsIPv6(b *testing.B) {
    74  	ip := "9396:9549:b4f7:8ed0:4791:1330:8c06:e62d"
    75  	var res bool
    76  
    77  	b.Run("fiber", func(b *testing.B) {
    78  		for n := 0; n < b.N; n++ {
    79  			res = IsIPv6(ip)
    80  		}
    81  		AssertEqual(b, true, res)
    82  	})
    83  
    84  	b.Run("default", func(b *testing.B) {
    85  		for n := 0; n < b.N; n++ {
    86  			res = net.ParseIP(ip) != nil
    87  		}
    88  		AssertEqual(b, true, res)
    89  	})
    90  }