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_2ResponseExtensionTest {
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.2\">"
+ " <cd>"
+ " <name>premiumdomain.zone</name>"
+ " <category>CAT1</category>"
+ " <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>nonpremiumdomain.zone</name>"
+ " <category>STANDARD</category>"
+ " <period unit=\"y\">1</period>"
+ " <createPrice>50.00</createPrice>"
+ " <renewPrice>55.00</renewPrice>"
+ " <restorePrice>60.00</restorePrice>"
+ " <transferPrice>65.00</transferPrice>"
+ " </cd>"
+ " <cd>"
+ " <name>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_2ResponseExtension domainCheckPriceV12Response;
@Before
public void setUp() throws Exception {
domainCheckPriceV12Response = new DomainCheckPriceV1_2ResponseExtension();
XMLParser parser = new XMLParser();
XMLDocument doc = parser.parse(PRICE_XML);
domainCheckPriceV12Response.fromXML(doc);
}
@Test
public void testGetPricesForPremiumDomain() throws Exception {
assertEquals("CAT1", domainCheckPriceV12Response.getCategory("premiumdomain.zone"));
assertTrue(domainCheckPriceV12Response.isPremium("premiumdomain.zone"));
assertEquals(1, domainCheckPriceV12Response.getPeriod("premiumdomain.zone").getPeriod());
assertEquals(PeriodUnit.YEARS, domainCheckPriceV12Response.getPeriod("premiumdomain.zone").getUnit());
assertEquals(BigDecimal.valueOf(100.0), domainCheckPriceV12Response.getCreatePrice("premiumdomain.zone"));
assertEquals(BigDecimal.valueOf(150.0), domainCheckPriceV12Response.getRenewPrice("premiumdomain.zone"));
assertEquals(BigDecimal.valueOf(200.0), domainCheckPriceV12Response.getRestorePrice("premiumdomain.zone"));
assertEquals(BigDecimal.valueOf(250.0), domainCheckPriceV12Response.getTransferPrice("premiumdomain.zone"));
}
@Test
public void testGetPricesForNonPremiumDomains() {
assertEquals("STANDARD", domainCheckPriceV12Response.getCategory("nonpremiumdomain.zone"));
assertFalse(domainCheckPriceV12Response.isPremium("nonpremiumdomain.zone"));
assertEquals(1, domainCheckPriceV12Response.getPeriod("nonpremiumdomain.zone").getPeriod());
assertEquals(PeriodUnit.YEARS, domainCheckPriceV12Response.getPeriod("nonpremiumdomain.zone").getUnit());
assertEquals(BigDecimal.valueOf(50.0), domainCheckPriceV12Response.getCreatePrice("nonpremiumdomain.zone"));
assertEquals(BigDecimal.valueOf(55.0), domainCheckPriceV12Response.getRenewPrice("nonpremiumdomain.zone"));
assertEquals(BigDecimal.valueOf(60.0), domainCheckPriceV12Response.getRestorePrice("nonpremiumdomain.zone"));
assertEquals(BigDecimal.valueOf(65.0), domainCheckPriceV12Response.getTransferPrice("nonpremiumdomain.zone"));
}
@Test
public void testGetReasonForInvalidRegistrationPeriods() {
assertEquals(1, domainCheckPriceV12Response.getPeriod("invalidperioddomain.zone").getPeriod());
assertEquals(PeriodUnit.YEARS, domainCheckPriceV12Response.getPeriod("invalidperioddomain.zone").getUnit());
assertEquals("Valid Registration Periods 2-10", domainCheckPriceV12Response.getReason("invalidperioddomain.zone"));
}
@Test
public void testShouldBeAbleToGetValuesUsingPosition() {
assertEquals("CAT1", domainCheckPriceV12Response.getCategory(1L));
assertTrue(domainCheckPriceV12Response.isPremium(1L));
assertEquals(1, domainCheckPriceV12Response.getPeriod(1L).getPeriod());
assertEquals(PeriodUnit.YEARS, domainCheckPriceV12Response.getPeriod(1L).getUnit());
assertEquals(BigDecimal.valueOf(50.0), domainCheckPriceV12Response.getCreatePrice(3L));
assertEquals(BigDecimal.valueOf(55.0), domainCheckPriceV12Response.getRenewPrice(3L));
assertEquals(BigDecimal.valueOf(60.0), domainCheckPriceV12Response.getRestorePrice(3L));
assertEquals(BigDecimal.valueOf(65.0), domainCheckPriceV12Response.getTransferPrice(3L));
assertEquals("Invalid domain name", domainCheckPriceV12Response.getReason(2L));
}
@Test
public void testShouldGetNullForInvalidDomains() {
assertNull(domainCheckPriceV12Response.getCategory("invalid"));
assertNull(domainCheckPriceV12Response.isPremium("invalid"));
assertNull(domainCheckPriceV12Response.getPeriod("invalid"));
assertNull(domainCheckPriceV12Response.getCreatePrice("invalid"));
assertNull(domainCheckPriceV12Response.getRenewPrice("invalid"));
assertNull(domainCheckPriceV12Response.getRestorePrice("invalid"));
assertNull(domainCheckPriceV12Response.getTransferPrice("invalid"));
assertNull(domainCheckPriceV12Response.getReason("invalid"));
}
}