package com.xfestudio.xfeservermanager.infra.http;
import static org.assertj.core.api.Assertions.assertThat;
import com.sun.net.httpserver.Headers;
import java.net.InetAddress;
import java.util.List;
import org.junit.jupiter.api.Test;
class TrustedProxyResolverTest {
@Test
void ignoresSpoofedHeaderFromUntrustedPeer() throws Exception {
Headers headers = new Headers();
headers.set("X-Forwarded-For", "198.51.100.25");
var resolver = new TrustedProxyResolver(List.of("127.0.0.1/32"));
assertThat(resolver.resolve(InetAddress.getByName("192.0.2.20"), headers))
.isEqualTo("192.0.2.20");
}
@Test
void walksTrustedProxyChainFromRightToLeft() throws Exception {
Headers headers = new Headers();
headers.set("X-Forwarded-For", "198.51.100.25, 10.0.0.8");
var resolver = new TrustedProxyResolver(List.of("10.0.0.0/8"));
assertThat(resolver.resolve(InetAddress.getByName("10.0.0.10"), headers))
.isEqualTo("198.51.100.25");
}
@Test
void rejectsAmbiguousShortIpv4Forms() throws Exception {
Headers headers = new Headers();
headers.set("X-Forwarded-For", "127.1");
var resolver = new TrustedProxyResolver(List.of("10.0.0.0/8"));
assertThat(resolver.resolve(InetAddress.getByName("10.0.0.10"), headers))
.isEqualTo("10.0.0.10");
}
}
package com.xfestudio.xfeservermanager.infra.http;
import static org.assertj.core.api.Assertions.assertThat;
import com.sun.net.httpserver.Headers;
import java.net.InetAddress;
import java.util.List;
import org.junit.jupiter.api.Test;
class TrustedProxyResolverTest {
@Test
void ignoresSpoofedHeaderFromUntrustedPeer() throws Exception {
Headers headers = new Headers();
headers.set("X-Forwarded-For", "198.51.100.25");
var resolver = new TrustedProxyResolver(List.of("127.0.0.1/32"));
assertThat(resolver.resolve(InetAddress.getByName("192.0.2.20"), headers))
.isEqualTo("192.0.2.20");
}
@Test
void walksTrustedProxyChainFromRightToLeft() throws Exception {
Headers headers = new Headers();
headers.set("X-Forwarded-For", "198.51.100.25, 10.0.0.8");
var resolver = new TrustedProxyResolver(List.of("10.0.0.0/8"));
assertThat(resolver.resolve(InetAddress.getByName("10.0.0.10"), headers))
.isEqualTo("198.51.100.25");
}
@Test
void rejectsAmbiguousShortIpv4Forms() throws Exception {
Headers headers = new Headers();
headers.set("X-Forwarded-For", "127.1");
var resolver = new TrustedProxyResolver(List.of("10.0.0.0/8"));
assertThat(resolver.resolve(InetAddress.getByName("10.0.0.10"), headers))
.isEqualTo("10.0.0.10");
}
}