package utils

import "testing"

func TestResolveClientIP_PrefersPublicForwardedIP(t *testing.T) {
	got := ResolveClientIP("100.100.100.1, 203.0.113.25, 10.0.0.2", "", "172.18.0.5")
	if got != "203.0.113.25" {
		t.Fatalf("expected public forwarded IP, got %q", got)
	}
}

func TestResolveClientIP_FallsBackToFirstForwardedWhenAllPrivate(t *testing.T) {
	got := ResolveClientIP("100.100.100.1, 10.0.0.2", "192.168.0.10", "172.18.0.5")
	if got != "100.100.100.1" {
		t.Fatalf("expected first forwarded private IP, got %q", got)
	}
}

func TestResolveClientIP_PrefersPublicRealIPOverPrivateForwarded(t *testing.T) {
	got := ResolveClientIP("100.100.100.1, 10.0.0.2", "198.51.100.7", "172.18.0.5")
	if got != "198.51.100.7" {
		t.Fatalf("expected public real IP, got %q", got)
	}
}
