Ctrl K
ComunidadGuías…

pkg/utils/client_ip_test.go

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package utils

import (
	"net/http/httptest"
	"testing"
)

func TestClientIP(t *testing.T) {
	tests := []struct {
		name, remote, forwarded, want string
	}{
		{"forwarded IPv4", "192.0.2.10:80", " 198.51.100.3, 192.0.2.5", "198.51.100.3"},
		{"forwarded IPv6", "192.0.2.10:80", "2001:db8::1, 192.0.2.5", "2001:db8::1"},
		{"direct IPv4", "198.51.100.3:1234", "", "198.51.100.3"},
		{"direct IPv6", "[2001:db8::1]:1234", "", "2001:db8::1"},
		{"empty forwarded address", "[2001:db8::1]:1234", " , 192.0.2.5", "2001:db8::1"},
		{"address without port", "2001:db8::1", "", "2001:db8::1"},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			req := httptest.NewRequest("GET", "/", nil)
			req.RemoteAddr = tt.remote
			req.Header.Set("X-Forwarded-For", tt.forwarded)
			if got := ClientIP(req); got != tt.want {
				t.Errorf("ClientIP() = %q, want %q", got, tt.want)
			}
		})
	}
}