package org.littleshoot.dnssec4j; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.nio.channels.DatagramChannel; import java.util.Arrays; import java.util.Collection; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Test for DNSSEC lookups. */ public class DnsSecTest { private final Logger log = LoggerFactory.getLogger(getClass()); @Test public void testVerify() throws Exception { final InetSocketAddress base = new InetSocketAddress("www.brown.edu", 80); final InetAddress ia = base.getAddress(); final String resolved = ia.getHostAddress(); final InetSocketAddress unresolved = InetSocketAddress.createUnresolved("www.brown.edu", 80); final InetSocketAddress verified = DnsSec.verify(unresolved); final String resolvedAndVerified = verified.getAddress().getHostAddress(); assertEquals(resolved, resolvedAndVerified); } @Test public void testGetByName() throws Exception { final Collection<String> hosts = Arrays.asList("www.verisign.com", "nlnet.nl", "www.beck.com", "www.wikipedia.org", "smartfil.es", "www.asperasoft.com", "www.brown.edu"); //"www.root-dnssec.org", "www.dnssec.org", "www.opendnssec.org"); for (final String host : hosts) { System.out.println("\n****************************************"); System.out.println(" TESTING "+host); System.out.println("****************************************"); final InetAddress ia = DnsSec.getByName(host); System.out.println("\n****************************************"); System.out.println(" DONE TESTING "+host); System.out.println("****************************************"); assertTrue("Did not get address", ia != null); final InetAddress standard = InetAddress.getByName(host); assertEquals("Results not equal for "+host, ia.getHostAddress(), standard.getHostAddress()); final DatagramChannel channel = DatagramChannel.open(); final SocketAddress server = new InetSocketAddress(host, 80); channel.connect(server); assertTrue("Could not connect to host "+host, channel.isConnected()); //return; } // These domains give back different responses to different queries -- // so we cannot check for equality. We just make sure the addresses // we get back are reachable. final Collection<String> varyingResultHosts = Arrays.asList( "www.google.com", "www.littleshoot.org", "www.reddit.com", "adamfisk.wordpress.com", "www.bittorrent.com", "www.comcast.net"); for (final String host : varyingResultHosts) { System.out.println("\n****************************************"); System.out.println(" TESTING "+host); System.out.println("****************************************"); final InetAddress ia = DnsSec.getByName(host); System.out.println("\n****************************************"); System.out.println(" DONE TESTING "+host); System.out.println("****************************************"); assertTrue("Did not get address", ia != null); final DatagramChannel channel = DatagramChannel.open(); final SocketAddress server = new InetSocketAddress(host, 80); channel.connect(server); assertTrue("Could not connect to host "+host, channel.isConnected()); } } }