/** * This file is part of Graylog. * * Graylog is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Graylog is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Graylog. If not, see <http://www.gnu.org/licenses/>. */ package org.graylog2.filters.blacklist; import com.google.common.net.InetAddresses; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; public class BlacklistIpMatcherConditionTest { @Test public void matchesInetAddressIPv4() throws Exception { final BlacklistIpMatcherCondition condition = new BlacklistIpMatcherCondition(); condition.setPattern("192.0.2.0/24"); assertThat(condition.matchesInetAddress(InetAddresses.forString("192.0.2.0"))).isTrue(); assertThat(condition.matchesInetAddress(InetAddresses.forString("192.0.2.42"))).isTrue(); assertThat(condition.matchesInetAddress(InetAddresses.forString("192.0.2.255"))).isTrue(); assertThat(condition.matchesInetAddress(InetAddresses.forString("192.0.3.0"))).isFalse(); assertThat(condition.matchesInetAddress(InetAddresses.forString("192.0.4.0"))).isFalse(); assertThat(condition.matchesInetAddress(InetAddresses.forString("::1"))).isFalse(); assertThat(condition.matchesInetAddress(InetAddresses.forString("127.0.0.1"))).isFalse(); } @Test public void matchesInetAddressIPv6() throws Exception { final BlacklistIpMatcherCondition condition = new BlacklistIpMatcherCondition(); condition.setPattern("2001:DB8::/32"); assertThat(condition.matchesInetAddress(InetAddresses.forString("2001:DB8::0"))).isTrue(); assertThat(condition.matchesInetAddress(InetAddresses.forString("2001:DB8::42"))).isTrue(); assertThat(condition.matchesInetAddress(InetAddresses.forString("2001:0db8:ffff:ffff:ffff:ffff:ffff:ffff"))).isTrue(); assertThat(condition.matchesInetAddress(InetAddresses.forString("2001:DB9::0"))).isFalse(); assertThat(condition.matchesInetAddress(InetAddresses.forString("2001:0db7:ffff:ffff:ffff:ffff:ffff:ffff"))).isFalse(); assertThat(condition.matchesInetAddress(InetAddresses.forString("::1"))).isFalse(); assertThat(condition.matchesInetAddress(InetAddresses.forString("127.0.0.1"))).isFalse(); } @Test(expected = IllegalArgumentException.class) public void matchesInetAddressWithInvalidPattern() throws Exception { final BlacklistIpMatcherCondition condition = new BlacklistIpMatcherCondition(); condition.setPattern("foobar"); } }