/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.sling.discovery.base.connectors.ping; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import javax.servlet.http.HttpServletRequest; import org.apache.sling.discovery.base.connectors.BaseConfig; import org.junit.Before; import org.junit.Test; import junitx.util.PrivateAccessor; public class TopologyConnectorServletTest { private TopologyConnectorServlet servlet; private HttpServletRequest getRequest(String host, String addr) { HttpServletRequest result = mock(HttpServletRequest.class); when(result.getRemoteAddr()).thenReturn(addr); when(result.getRemoteHost()).thenReturn(host); return result; } @Before public void setUp() throws Exception { servlet = new TopologyConnectorServlet(); BaseConfig config = mock(BaseConfig.class); PrivateAccessor.setField(servlet, "config", config); } @Test public void testNull() throws Exception { servlet.initWhitelist(null); // should work fine servlet.initWhitelist(new String[0]); // should also work fine } @Test public void testPlaintextWhitelist_enabled() throws Exception { servlet.initWhitelist(new String[] {"foo", "bar"}); assertTrue(servlet.isWhitelisted(getRequest("foo", "x"))); assertTrue(servlet.isWhitelisted(getRequest("bar", "x"))); assertTrue(servlet.isWhitelisted(getRequest("y", "foo"))); assertTrue(servlet.isWhitelisted(getRequest("y", "bar"))); } @Test public void testPlaintextWhitelist_disabled() throws Exception { servlet.initWhitelist(new String[] {}); assertFalse(servlet.isWhitelisted(getRequest("foo", "x"))); assertFalse(servlet.isWhitelisted(getRequest("bar", "x"))); assertFalse(servlet.isWhitelisted(getRequest("y", "foo"))); assertFalse(servlet.isWhitelisted(getRequest("y", "bar"))); } @Test public void testWildcardWhitelist() throws Exception { servlet.initWhitelist(new String[] {"foo*", "b?r", "test"}); assertTrue(servlet.isWhitelisted(getRequest("foo", "x"))); assertTrue(servlet.isWhitelisted(getRequest("fooo", "x"))); assertTrue(servlet.isWhitelisted(getRequest("foooo", "x"))); assertTrue(servlet.isWhitelisted(getRequest("x", "foo"))); assertTrue(servlet.isWhitelisted(getRequest("x", "fooo"))); assertTrue(servlet.isWhitelisted(getRequest("x", "foooo"))); assertTrue(servlet.isWhitelisted(getRequest("bur", "x"))); assertTrue(servlet.isWhitelisted(getRequest("x", "bur"))); assertTrue(servlet.isWhitelisted(getRequest("x", "test"))); assertFalse(servlet.isWhitelisted(getRequest("fo", "x"))); assertFalse(servlet.isWhitelisted(getRequest("x", "testy"))); } @Test public void testSubnetMaskWhitelist() throws Exception { servlet.initWhitelist(new String[] {"1.2.3.4/24", "2.3.4.1/30", "3.4.5.6/31"}); assertTrue(servlet.isWhitelisted(getRequest("foo", "1.2.3.4"))); assertFalse(servlet.isWhitelisted(getRequest("1.2.3.4", "1.2.4.3"))); assertTrue(servlet.isWhitelisted(getRequest("foo", "1.2.3.1"))); assertTrue(servlet.isWhitelisted(getRequest("foo", "1.2.3.254"))); assertFalse(servlet.isWhitelisted(getRequest("foo", "1.2.4.5"))); assertTrue(servlet.isWhitelisted(getRequest("foo", "2.3.4.1"))); assertTrue(servlet.isWhitelisted(getRequest("foo", "2.3.4.2"))); assertFalse(servlet.isWhitelisted(getRequest("foo", "2.3.4.3"))); assertFalse(servlet.isWhitelisted(getRequest("foo", "2.3.4.4"))); assertFalse(servlet.isWhitelisted(getRequest("foo", "3.4.5.1"))); assertFalse(servlet.isWhitelisted(getRequest("foo", "3.4.5.2"))); assertFalse(servlet.isWhitelisted(getRequest("foo", "3.4.5.3"))); assertFalse(servlet.isWhitelisted(getRequest("foo", "3.4.5.4"))); assertFalse(servlet.isWhitelisted(getRequest("foo", "3.4.5.5"))); assertFalse(servlet.isWhitelisted(getRequest("foo", "3.4.5.6"))); assertFalse(servlet.isWhitelisted(getRequest("foo", "3.4.5.7"))); } }