package org.mapfish.print.processor.http.matcher;
import org.apache.http.auth.AuthScope;
import org.junit.Test;
import org.springframework.http.HttpMethod;
import java.net.URI;
import static org.junit.Assert.assertTrue;
import static org.mapfish.print.processor.http.matcher.MatcherTestUtils.*;
public class AddressHostMatcherTest {
@Test
public void testAccepts() throws Exception {
final AddressHostMatcher addressHostMatcher = new AddressHostMatcher();
addressHostMatcher.setIp("127.0.0.1");
assertMatch(addressHostMatcher, true, new URI("http://127.0.0.1"), HttpMethod.GET);
assertMatch(addressHostMatcher, false, new URI("http://127.0.1.1"), HttpMethod.GET);
assertTrue(addressHostMatcher.matches(MatchInfo.fromAuthScope(
new AuthScope(AuthScope.ANY_HOST, 80, AuthScope.ANY_REALM, "http"))));
assertTrue(addressHostMatcher.matches(MatchInfo.fromAuthScope(
new AuthScope("127.0.0.1", AuthScope.ANY_PORT, AuthScope.ANY_REALM, "http"))));
assertTrue(addressHostMatcher.matches(MatchInfo.fromAuthScope(
new AuthScope("127.0.0.1", 80, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME))));
addressHostMatcher.setMask("255.255.255.0");
addressHostMatcher.setIp("127.0.0.0");
assertMatch(addressHostMatcher, true, new URI("http://127.0.0.1"), HttpMethod.GET);
assertMatch(addressHostMatcher, true, new URI("http://127.0.0.1"), HttpMethod.POST);
assertMatch(addressHostMatcher, true, new URI("http://127.0.0.2"), HttpMethod.GET);
assertMatch(addressHostMatcher, true, new URI("http://127.0.0.3"), HttpMethod.GET);
assertMatch(addressHostMatcher, true, new URI("http://127.0.0.4"), HttpMethod.GET);
assertMatch(addressHostMatcher, false, new URI("http://127.0.1.1"), HttpMethod.GET);
assertTrue(addressHostMatcher.matches(MatchInfo.fromAuthScope(
new AuthScope(AuthScope.ANY_HOST, 80, AuthScope.ANY_REALM, "http"))));
assertTrue(addressHostMatcher.matches(MatchInfo.fromAuthScope(
new AuthScope("127.0.0.1", AuthScope.ANY_PORT, AuthScope.ANY_REALM, "http"))));
assertTrue(addressHostMatcher.matches(MatchInfo.fromAuthScope(
new AuthScope("127.0.0.1", 80, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME))));
addressHostMatcher.setPort(8080);
assertMatch(addressHostMatcher, true, new URI("http://127.0.0.1:8080"), HttpMethod.GET);
assertMatch(addressHostMatcher, false, new URI("http://127.0.0.1:80"), HttpMethod.GET);
assertMatch(addressHostMatcher, false, new URI("http://127.0.0.1"), HttpMethod.GET);
addressHostMatcher.setPort(-1);
addressHostMatcher.setPathRegex("/print/.+");
assertMatch(addressHostMatcher, true, new URI("http://127.0.0.1:8080/print/create"), HttpMethod.GET);
assertMatch(addressHostMatcher, true, new URI("http://127.0.0.1:80/print/create"), HttpMethod.GET);
assertMatch(addressHostMatcher, false, new URI("http://127.0.0.1:8080/print"), HttpMethod.GET);
assertMatch(addressHostMatcher, false, new URI("http://127.0.0.1:8080/print/"), HttpMethod.GET);
assertMatch(addressHostMatcher, false, new URI("http://127.0.0.1:8080/pdf"), HttpMethod.GET);
}
}