package com.limegroup.gnutella;
import junit.framework.Test;
public class EndpointTest extends com.limegroup.gnutella.util.BaseTestCase {
public EndpointTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(EndpointTest.class);
}
public void testLegacy() throws Exception {
Endpoint e;
try {
e=new Endpoint(":6347");
fail("endpoint should not have been created");
} catch (IllegalArgumentException exc) {}
try {
e=new Endpoint("abc:cas");
fail("endpoint should not have been created");
} catch (IllegalArgumentException exc) {}
try {
e=new Endpoint("abc");
fail("endpoint should not have been created");
} catch(IllegalArgumentException exc) {}
try {
e=new Endpoint("abc:");
fail("endpoint should not have been created");
} catch(IllegalArgumentException exc) {}
try {
e=new Endpoint("abc:7");
fail("endpoint should not have been created");
} catch(IllegalArgumentException exc) {}
try {
e=new Endpoint("0.0.0.0");
fail("endpoint should not have been created");
} catch(IllegalArgumentException exc) {}
////////////////////////// Subnet Tests ////////////////
//These tests are incomplete since the methods are somewhat trivial.
Endpoint e1;
Endpoint e2;
e1=new Endpoint("172.16.0.0",1); e2=new Endpoint("172.16.0.1",1);
assertTrue(e1.isSameSubnet(e2));
assertTrue(e2.isSameSubnet(e1));
e2=new Endpoint("18.239.0.1",1);
assertTrue(! e2.isSameSubnet(e1));
assertTrue(! e1.isSameSubnet(e2));
e1=new Endpoint("192.168.0.1",1); e2=new Endpoint("192.168.0.2",1);
assertTrue(e1.isSameSubnet(e2));
assertTrue(e2.isSameSubnet(e1));
e2=new Endpoint("192.168.1.1",1);
assertTrue(! e2.isSameSubnet(e1));
assertTrue(! e1.isSameSubnet(e2));
}
public void testValidatedNumeric() {
//Allowed
check("www.limewire.org:6346", false, true); //no verification
//check("not a url:6346", false, true);
check("10.255.25.0:6346", true, true); //verified valid IP
check("64.61.25.172", true, true);
//Disallowed
//check("<html>hello</html>", true, false); //not even close!
check("18.239.0.144.215", true, false); //too many dots
check("18.A.0.144", true, false); //not numeric
check("18.256.0.144:6346", true, false); //value too big
check("18.10.-1.144:6346", true, false); //value too small
check("127.0.0.1:ABC", false, false); //old rules still apply
}
/** Checks that an exception is thrown iff allowed==false. */
private static void check(String hostAndPort,
boolean requireNumeric,
boolean allowed) {
try {
Endpoint e=new Endpoint(hostAndPort, requireNumeric);
assertTrue("Allowed: \""+hostAndPort+"\"", allowed);
} catch (IllegalArgumentException e) {
assertTrue("Disallowed: \""+hostAndPort+"\"", !allowed);
}
}
}