package com.ausregistry.jtoolkit2.se.price;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.math.BigDecimal;
import com.ausregistry.jtoolkit2.se.PeriodUnit;
import com.ausregistry.jtoolkit2.xml.XMLDocument;
import com.ausregistry.jtoolkit2.xml.XMLParser;
import org.junit.Before;
import org.junit.Test;
public class DomainCheckPriceV1_1ResponseExtensionTest {
private static final String PRICE_XML =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>"
+ "<epp xmlns=\"urn:ietf:params:xml:ns:epp-1.0\" "
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+ " xsi:schemaLocation=\"urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd\">"
+ " <response>"
+ " <result code=\"1000\">"
+ " <msg>Command completed successfully</msg>"
+ " </result>"
+ " <extension>"
+ " <chkData xmlns=\"urn:ar:params:xml:ns:price-1.1\">"
+ " <cd>"
+ " <name premium=\"1\">premiumdomain.zone</name>"
+ " <period unit=\"y\">1</period>"
+ " <createPrice>100.00</createPrice>"
+ " <renewPrice>150.00</renewPrice>"
+ " <restorePrice>200.00</restorePrice>"
+ " <transferPrice>250.00</transferPrice>"
+ " </cd>"
+ " <cd>"
+ " <name>def.notexistzone</name>"
+ " <reason>Invalid domain name</reason>"
+ " </cd>"
+ " <cd>"
+ " <name premium=\"0\">nonpremiumdomain.zone</name>"
+ " <period unit=\"y\">1</period>"
+ " <createPrice>50.00</createPrice>"
+ " <renewPrice>55.00</renewPrice>"
+ " <restorePrice>60.00</restorePrice>"
+ " <transferPrice>65.00</transferPrice>"
+ " </cd>"
+ " <cd>"
+ " <name premium=\"0\">invalidperioddomain.zone</name>"
+ " <period unit=\"y\">1</period>"
+ " <reason>Valid Registration Periods 2-10</reason>"
+ " </cd>"
+ " </chkData>"
+ " </extension>"
+ " <trID>"
+ " <clTRID>ABC-12345</clTRID>"
+ " <svTRID>54322-XYZ</svTRID>"
+ " </trID>"
+ " </response>"
+ "</epp>";
private DomainCheckPriceV1_1ResponseExtension domainCheckPriceV11Response;
@Before
public void setUp() throws Exception {
domainCheckPriceV11Response = new DomainCheckPriceV1_1ResponseExtension();
XMLParser parser = new XMLParser();
XMLDocument doc = parser.parse(PRICE_XML);
domainCheckPriceV11Response.fromXML(doc);
}
@Test
public void testGetPricesForPremiumDomain() throws Exception {
assertTrue(domainCheckPriceV11Response.isPremium("premiumdomain.zone"));
assertEquals(1, domainCheckPriceV11Response.getPeriod("nonpremiumdomain.zone").getPeriod());
assertEquals(PeriodUnit.YEARS, domainCheckPriceV11Response.getPeriod("nonpremiumdomain.zone").getUnit());
assertEquals(BigDecimal.valueOf(100.0), domainCheckPriceV11Response.getCreatePrice("premiumdomain.zone"));
assertEquals(BigDecimal.valueOf(150.0), domainCheckPriceV11Response.getRenewPrice("premiumdomain.zone"));
assertEquals(BigDecimal.valueOf(200.0), domainCheckPriceV11Response.getRestorePrice("premiumdomain.zone"));
assertEquals(BigDecimal.valueOf(250.0), domainCheckPriceV11Response.getTransferPrice("premiumdomain.zone"));
}
@Test
public void testGetPricesForNonPremiumDomains() {
assertFalse(domainCheckPriceV11Response.isPremium("nonpremiumdomain.zone"));
assertEquals(1, domainCheckPriceV11Response.getPeriod("nonpremiumdomain.zone").getPeriod());
assertEquals(PeriodUnit.YEARS, domainCheckPriceV11Response.getPeriod("nonpremiumdomain.zone").getUnit());
assertEquals(BigDecimal.valueOf(50.0), domainCheckPriceV11Response.getCreatePrice("nonpremiumdomain.zone"));
assertEquals(BigDecimal.valueOf(55.0), domainCheckPriceV11Response.getRenewPrice("nonpremiumdomain.zone"));
assertEquals(BigDecimal.valueOf(60.0), domainCheckPriceV11Response.getRestorePrice("nonpremiumdomain.zone"));
assertEquals(BigDecimal.valueOf(65.0), domainCheckPriceV11Response.getTransferPrice("nonpremiumdomain.zone"));
}
@Test
public void testGetReasonForInvalidRegistrationPeriods() {
assertFalse(domainCheckPriceV11Response.isPremium("invalidperioddomain.zone"));
assertEquals(1, domainCheckPriceV11Response.getPeriod("invalidperioddomain.zone").getPeriod());
assertEquals(PeriodUnit.YEARS, domainCheckPriceV11Response.getPeriod("invalidperioddomain.zone").getUnit());
assertEquals("Valid Registration Periods 2-10", domainCheckPriceV11Response.getReason("invalidperioddomain.zone"));
}
@Test
public void testShouldBeAbleToGetValuesUsingPosition() {
assertTrue(domainCheckPriceV11Response.isPremium(1L));
assertEquals(1, domainCheckPriceV11Response.getPeriod(1L).getPeriod());
assertEquals(PeriodUnit.YEARS, domainCheckPriceV11Response.getPeriod(1L).getUnit());
assertEquals(BigDecimal.valueOf(50.0), domainCheckPriceV11Response.getCreatePrice(3L));
assertEquals(BigDecimal.valueOf(55.0), domainCheckPriceV11Response.getRenewPrice(3L));
assertEquals(BigDecimal.valueOf(60.0), domainCheckPriceV11Response.getRestorePrice(3L));
assertEquals(BigDecimal.valueOf(65.0), domainCheckPriceV11Response.getTransferPrice(3L));
assertEquals("Invalid domain name", domainCheckPriceV11Response.getReason(2L));
}
@Test
public void testShouldGetNullForInvalidDomains() {
assertNull(domainCheckPriceV11Response.isPremium("invalid"));
assertNull(domainCheckPriceV11Response.getPeriod("invalid"));
assertNull(domainCheckPriceV11Response.getCreatePrice("invalid"));
assertNull(domainCheckPriceV11Response.getRenewPrice("invalid"));
assertNull(domainCheckPriceV11Response.getRestorePrice("invalid"));
assertNull(domainCheckPriceV11Response.getTransferPrice("invalid"));
assertNull(domainCheckPriceV11Response.getReason("invalid"));
}
}