package com.ausregistry.jtoolkit2.se.extendedAvailability; import com.ausregistry.jtoolkit2.EPPDateFormatter; import com.ausregistry.jtoolkit2.xml.XMLDocument; import com.ausregistry.jtoolkit2.xml.XMLParser; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; public class DomainCheckExtendedAvailabilityResponseExtensionTest { private static final String AVAILABLE_DOMAIN = "domain-avail.tld"; private static final String PENDING_CREATE_DOMAIN = "domain-pending.tld"; private static final String UNAVAILABLE_DOMAIN = "domain-inuse.tld"; private static final String INVALID_DOMAIN = "domain-invalid.tld"; private static final String RESERVED_DOMAIN = "domain-reserved.tld"; private static final String DOMAIN_APPLICATION = "domain-application.tld"; private static final String DOMAIN_ACTIVE_VARIANT = "domain-variant.tld"; private static final String DOMAIN_WITHHELD_VARIANT = "domain-VaRiAnT.tld"; private static final String DOMAIN_BLOCKED_VARIANT = "DOMAIN-variant.tld"; private static final String RESPONSE_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>" + "<epp xmlns=\"urn:ietf:params:xml:ns:epp-1.0\">" + " <response>" + " <result code=\"1000\">" + " <msg lang=\"en\">Command completed successfully</msg>" + " </result>" + " <extension>" + " <chkData xmlns=\"urn:ar:params:xml:ns:exAvail-1.0\">" + " <cd>" + " <name>" + AVAILABLE_DOMAIN + "</name>" + " <state s=\"available\">" + " <date>2010-04-23T00:00:00Z</date>" + " </state>" + " </cd>" + " <cd>" + " <name>" + PENDING_CREATE_DOMAIN + "</name>" + " <state s=\"pendingCreate\" />" + " </cd>" + " <cd>" + " <name>" + UNAVAILABLE_DOMAIN + "</name>" + " <state s=\"unavailable\">" + " <reason lang=\"en\">In use</reason>" + " </state>" + " </cd>" + " <cd>" + " <name>" + INVALID_DOMAIN + "</name>" + " <state s=\"invalid\">" + " <reason lang=\"en\">invalid char '!'</reason>" + " </state>" + " </cd>" + " <cd>" + " <name>" + RESERVED_DOMAIN + "</name>" + " <state s=\"reserved\">" + " <reason lang=\"en\">ICANN Reserved</reason>" + " </state>" + " </cd>" + " <cd>" + " <name>" + DOMAIN_APPLICATION + "</name>" + " <state s=\"application\">" + " <phase>sunrise</phase>" + " <date>2010-04-25T00:00:00Z</date>" + " </state>" + " </cd>" + " <cd>" + " <name>" + DOMAIN_ACTIVE_VARIANT + "</name>" + " <state s=\"activatedVariant\">" + " <primaryDomainName>domain-VARIANT-one.tld</primaryDomainName>" + " </state>" + " </cd>" + " <cd>" + " <name>" + DOMAIN_WITHHELD_VARIANT + "</name>" + " <state s=\"withheldVariant\">" + " <primaryDomainName>domain-VARIANT-two.tld</primaryDomainName>" + " </state>" + " </cd>" + " <cd>" + " <name>" + DOMAIN_BLOCKED_VARIANT + "</name>" + " <state s=\"blockedVariant\">" + " <primaryDomainName>domain-VARIANT-three.tld</primaryDomainName>" + " </state>" + " </cd>" + " </chkData>" + " </extension>" + " <trID>" + " <clTRID>ABC-12345</clTRID>" + " <svTRID>57f39ac6-abd2-4fea-9a80-e791d1af86f7</svTRID>" + " </trID>" + " </response>" + "</epp>"; private DomainCheckExtendedAvailabilityResponseExtension response; @Before public void setUp() throws Exception { response = new DomainCheckExtendedAvailabilityResponseExtension(); XMLParser parser = new XMLParser(); XMLDocument doc = parser.parse(RESPONSE_XML); response.fromXML(doc); } @Test public void shouldParseAllTheDomainsInTheExtendedAvailabilityCheckResponseXml() { assertEquals(response.getDomainExtAvailabilityStateMap().size(), 9); } @Test public void shouldReturnCorrectStateForDomainThatIsAvailable() { DomainCheckExtendedAvailabilityDetails domainState = response.getStateForDomain(AVAILABLE_DOMAIN); assertEquals(domainState.getState(), "available"); assertEquals(domainState.getDate(), EPPDateFormatter.fromXSDateTime("2010-04-23T00:00:00Z")); assertNull(domainState.getReason()); assertNull(domainState.getPhase()); assertNull(domainState.getVariantPrimaryDomainName()); } @Test public void shouldReturnCorrectStateDetailsForDomainThatIsPendingCreate() { DomainCheckExtendedAvailabilityDetails domainState = response.getStateForDomain(PENDING_CREATE_DOMAIN); assertEquals(domainState.getState(), "pendingCreate"); assertNull(domainState.getDate()); assertNull(domainState.getReason()); assertNull(domainState.getPhase()); assertNull(domainState.getVariantPrimaryDomainName()); } @Test public void shouldReturnCorrectStateDetailsForDomainThatIsUnavailable() { DomainCheckExtendedAvailabilityDetails domainState = response.getStateForDomain(UNAVAILABLE_DOMAIN); assertEquals(domainState.getState(), "unavailable"); assertNull(domainState.getDate()); assertEquals(domainState.getReason(), "In use"); assertNull(domainState.getPhase()); assertNull(domainState.getVariantPrimaryDomainName()); } @Test public void shouldReturnCorrectStateDetailsForDomainThatIsInvalid() { DomainCheckExtendedAvailabilityDetails domainState = response.getStateForDomain(INVALID_DOMAIN); assertEquals(domainState.getState(), "invalid"); assertNull(domainState.getDate()); assertEquals(domainState.getReason(), "invalid char '!'"); assertNull(domainState.getPhase()); assertNull(domainState.getVariantPrimaryDomainName()); } @Test public void shouldReturnCorrectStateDetailsForDomainThatIsReserved() { DomainCheckExtendedAvailabilityDetails domainState = response.getStateForDomain(RESERVED_DOMAIN); assertEquals(domainState.getState(), "reserved"); assertNull(domainState.getDate()); assertEquals(domainState.getReason(), "ICANN Reserved"); assertNull(domainState.getPhase()); assertNull(domainState.getVariantPrimaryDomainName()); } @Test public void shouldReturnCorrectStateDetailsForAnApplication() { DomainCheckExtendedAvailabilityDetails domainState = response.getStateForDomain(DOMAIN_APPLICATION); assertEquals(domainState.getState(), "application"); assertEquals(domainState.getPhase(), "sunrise"); assertEquals(domainState.getDate(), EPPDateFormatter.fromXSDateTime("2010-04-25T00:00:00Z")); assertNull(domainState.getReason()); assertNull(domainState.getVariantPrimaryDomainName()); } @Test public void shouldReturnCorrectStateDetailsForAnActiveVariant() { DomainCheckExtendedAvailabilityDetails domainState = response.getStateForDomain(DOMAIN_ACTIVE_VARIANT); assertEquals(domainState.getState(), "activatedVariant"); assertEquals(domainState.getVariantPrimaryDomainName(), "domain-VARIANT-one.tld"); assertNull(domainState.getDate()); assertNull(domainState.getPhase()); assertNull(domainState.getReason()); } @Test public void shouldReturnCorrectStateDetailsForAWithheldVariant() { DomainCheckExtendedAvailabilityDetails domainState = response.getStateForDomain(DOMAIN_WITHHELD_VARIANT); assertEquals(domainState.getState(), "withheldVariant"); assertEquals(domainState.getVariantPrimaryDomainName(), "domain-VARIANT-two.tld"); assertNull(domainState.getDate()); assertNull(domainState.getPhase()); assertNull(domainState.getReason()); } @Test public void shouldReturnCorrectStateDetailsForABlockedVariant() { DomainCheckExtendedAvailabilityDetails domainState = response.getStateForDomain(DOMAIN_BLOCKED_VARIANT); assertEquals(domainState.getState(), "blockedVariant"); assertEquals(domainState.getVariantPrimaryDomainName(), "domain-VARIANT-three.tld"); assertNull(domainState.getDate()); assertNull(domainState.getPhase()); assertNull(domainState.getReason()); } }