Files
jlibzeroconf/src/test/java/com/softwarecraftsmen/dns/client/ClientAcceptanceTest.java
2012-05-04 17:44:49 -07:00

156 lines
5.9 KiB
Java
Executable File

package com.softwarecraftsmen.dns.client;
import com.softwarecraftsmen.Optional;
import com.softwarecraftsmen.dns.names.DomainName;
import static com.softwarecraftsmen.dns.names.DomainName.domainName;
import com.softwarecraftsmen.dns.HostInformation;
import com.softwarecraftsmen.dns.names.HostName;
import static com.softwarecraftsmen.dns.names.HostName.hostName;
import com.softwarecraftsmen.dns.MailExchange;
import static com.softwarecraftsmen.dns.SerializableInternetProtocolAddress.serializableInternetProtocolVersion4Address;
import static com.softwarecraftsmen.dns.SerializableInternetProtocolAddress.serializableInternetProtocolVersion6Address;
import com.softwarecraftsmen.dns.labels.ServiceLabel;
import static com.softwarecraftsmen.dns.labels.ServiceLabel.serviceLabel;
import com.softwarecraftsmen.dns.ServiceInformation;
import static com.softwarecraftsmen.dns.labels.ServiceProtocolLabel.TCP;
import com.softwarecraftsmen.dns.Text;
import com.softwarecraftsmen.dns.client.resolvers.SynchronousDnsResolver;
import static com.softwarecraftsmen.dns.client.serverAddressFinders.BindLikeServerAddressFinder.CachedBindLikeServerAddressFinder;
import com.softwarecraftsmen.dns.client.resourceRecordRepositories.NonCachingResourceRecordRepository;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.number.OrderingComparisons.greaterThan;
import org.junit.Assert;
import static org.junit.Assert.assertThat;
import org.junit.Before;
import org.junit.Test;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.util.Set;
public class ClientAcceptanceTest
{
private static final HostName GoogleAliasHostName = hostName("www.google.com");
private static final HostName GoogleCanonicalHostName = hostName("www.l.google.com");
private static final DomainName GoogleDomainName = domainName("google.com");
private static final HostName GooglePointerName = hostName("nf-in-f104.google.com");
@Test
public void findAllInternetProtocolVersion4AddressesForNonCanonicalName()
{
final Set<Inet4Address> version4Addresses = client.findAllInternetProtocolVersion4Addresses(GoogleAliasHostName);
assertThat(version4Addresses.size(), is(greaterThan(0)));
}
@Test
public void findAllInternetProtocolVersion4AddressesForCanonicalName()
{
final Set<Inet4Address> version4Addresses = client.findAllInternetProtocolVersion4Addresses(GoogleCanonicalHostName);
assertThat(version4Addresses.size(), is(greaterThan(0)));
}
@Test
public void findAllInternetProtocolVersion6AddressesForNonCanonicalName()
{
final Set<Inet6Address> version6Addresses = client.findAllInternetProtocolVersion6Addresses(GoogleAliasHostName);
assertThat(version6Addresses.size(), is(equalTo(0)));
}
@Test
public void findAllInternetProtocolVersion6AddressesForCanonicalName()
{
final Set<Inet6Address> version6Addresses = client.findAllInternetProtocolVersion6Addresses(GoogleCanonicalHostName);
assertThat(version6Addresses.size(), is(equalTo(0)));
}
@Test
public void findMailServers()
{
final Set<MailExchange> mailExchanges = client.findMailServers(GoogleDomainName);
assertThat(mailExchanges.size(), is(greaterThan(0)));
}
@Test
public void findNonExistentMailServers()
{
final Set<MailExchange> mailExchanges = client.findMailServers(domainName("doesnotexist.google.com"));
assertThat(mailExchanges.size(), is(equalTo(0)));
}
@Test
public void findText()
{
final Optional<Text> texts = client.findText(GoogleAliasHostName);
assertThat(texts.size(), is(equalTo(0)));
}
@Test
public void findHostInformation()
{
final Optional<HostInformation> hostInformations = client.findHostInformation(GoogleAliasHostName);
assertThat(hostInformations.size(), is(equalTo(0)));
}
@Test
public void findCanonicalName()
{
final Optional<HostName> canonicalName = client.findCanonicalName(GoogleAliasHostName);
assertThat(canonicalName.value(), is(equalTo(GoogleCanonicalHostName)));
}
// Does not have any values returned. Odd.
@Test
public void findCanonicalNameHasAValueIfNameIsAlsoCanonical()
{
final Optional<HostName> canonicalName = client.findCanonicalName(GoogleCanonicalHostName);
Assert.assertTrue(canonicalName.isEmpty());
}
@Test
public void findNameFromInternetProtocolVersion4Address()
{
final Optional<HostName> name = client.findNameFromInternetProtocolVersion4Address(serializableInternetProtocolVersion4Address(64, 233, 183, 104).address);
assertThat(name.value(), is(equalTo(GooglePointerName)));
}
@Test
public void findNameFromInternetProtocolVersion4AddressFromSerializable()
{
final Optional<HostName> name = client.findNameFromInternetProtocolVersion4Address(serializableInternetProtocolVersion4Address(64, 233, 183, 104));
assertThat(name.value(), is(equalTo(GooglePointerName)));
}
@Test
public void findNameFromInternetProtocolVersion6Address()
{
// 4321:0:1:2:3:4:567:89ab
final Optional<HostName> resolvedName = client.findNameFromInternetProtocolVersion6Address(serializableInternetProtocolVersion6Address(0x4321, 0x0, 0x1, 0x2, 0x3, 0x4, 0x567, 0x89ab).address);
assertThat(resolvedName.size(), is(equalTo(0)));
}
@Test
public void findNameFromInternetProtocolVersion6AddressFromSerializable()
{
// 4321:0:1:2:3:4:567:89ab
final Optional<HostName> resolvedName = client.findNameFromInternetProtocolVersion6Address(serializableInternetProtocolVersion6Address(0x4321, 0x0, 0x1, 0x2, 0x3, 0x4, 0x567, 0x89ab));
assertThat(resolvedName.size(), is(equalTo(0)));
}
@Test
public void findServiceInformation()
{
final ServiceLabel serviceLabel = serviceLabel("_ldap");
final Set<ServiceInformation> actualServiceInformation = client.findServiceInformation(serviceLabel, TCP, GoogleDomainName);
assertThat(actualServiceInformation.size(), is(equalTo(0)));
}
@Before
public void before()
{
client = new Client(new NonCachingResourceRecordRepository(new SynchronousDnsResolver(CachedBindLikeServerAddressFinder)));
}
private Client client;
}