/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ /** * */ package org.dspace.authenticate; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.dspace.AbstractUnitTest; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** * @author Mark Wood */ public class IPMatcherTest extends AbstractUnitTest { private static final String IP6_FULL_ADDRESS1 = "2001:18e8:3:171:218:8bff:fe2a:56a4"; private static final String IP6_FULL_ADDRESS2 = "2001:18e8:3:171:218:8bff:fe2a:56a3"; private static final String IP6_MASKED_ADDRESS = "2001:18e8:3::/48"; private static IPMatcher ip6FullMatcher; private static IPMatcher ip6MaskedMatcher; /** * This also tests instantiation of correct masked and unmasked IPv6 addresses. * @throws IPMatcherException */ @BeforeClass static public void setUp() throws IPMatcherException { ip6FullMatcher = new IPMatcher(IP6_FULL_ADDRESS1); ip6MaskedMatcher = new IPMatcher(IP6_MASKED_ADDRESS); } /** * Test method for {@link org.dspace.authenticate.IPMatcher#IPMatcher(java.lang.String)}. */ @Test(expected=IPMatcherException.class) public void testIPMatcherIp6Incomplete() throws IPMatcherException { new IPMatcher("1234:5"); // Incomplete IPv6 address } /** * Test method for {@link org.dspace.authenticate.IPMatcher#IPMatcher(java.lang.String)}. */ @Test(expected=IPMatcherException.class) public void testIPMatcherIp6MaskOutOfRange() throws IPMatcherException { new IPMatcher("123::456/999"); // Mask bits out of range } /** * Test method for {@link org.dspace.authenticate.IPMatcher#IPMatcher(java.lang.String)}. */ @Test(expected=IPMatcherException.class) public void testIPMatcherIp6MaskNotNumeric() throws IPMatcherException { new IPMatcher("123::456/abc"); // Mask is not a number } /** * Test method for {@link org.dspace.authenticate.IPMatcher#IPMatcher(java.lang.String)}. */ @Test(expected=IPMatcherException.class) public void testIPMatcherIp6TooManySlashes() throws IPMatcherException { new IPMatcher("123::456/12/12"); // Too many slashes } /** * Test method for * {@link org.dspace.authenticate.IPMatcher#match(java.lang.String)}. */ @Test public void testIp6FullMatch() throws IPMatcherException { assertTrue("IPv6 full match fails", ip6FullMatcher .match(IP6_FULL_ADDRESS1)); } /** * Test method for * {@link org.dspace.authenticate.IPMatcher#match(java.lang.String)}. */ @Test public void testIp6MisMatch() throws IPMatcherException { assertFalse("IPv6 full nonmatch succeeds", ip6FullMatcher .match(IP6_FULL_ADDRESS2)); } /** * Test method for * {@link org.dspace.authenticate.IPMatcher#match(java.lang.String)}. */ @Test public void testIp6MaskedMatch() throws IPMatcherException { assertTrue("IPv6 masked match fails", ip6MaskedMatcher .match(IP6_FULL_ADDRESS2)); } @AfterClass static public void cleanup() { ip6FullMatcher = null; ip6MaskedMatcher = null; } }