package com.ausregistry.jtoolkit2.se.price; import static org.junit.Assert.*; import java.math.BigDecimal; import org.junit.Before; import org.junit.Test; import com.ausregistry.jtoolkit2.se.PeriodUnit; import com.ausregistry.jtoolkit2.xml.XMLDocument; import com.ausregistry.jtoolkit2.xml.XMLParser; public class DomainCheckPriceResponseExtensionTest { 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.0\">" + " <cd>" + " <name premium=\"1\">premiumdomain.zone</name>" + " <period unit=\"y\">1</period>" + " <price>100.00</price>" + " <renewalPrice>150.00</renewalPrice>" + " </cd>" + " <cd>" + " <name>def.notexistzone</name>" + " <reason>Invalid domain name</reason>" + " </cd>" + " <cd>" + " <name premium=\"0\">nonpremiumdomain.zone</name>" + " <period unit=\"y\">1</period>" + " <price>50.00</price>" + " <renewalPrice>55.00</renewalPrice>" + " </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 DomainCheckPriceResponseExtension domainCheckPriceResponse; @Before public void setUp() throws Exception { domainCheckPriceResponse = new DomainCheckPriceResponseExtension(); XMLParser parser = new XMLParser(); XMLDocument doc = parser.parse(PRICE_XML); domainCheckPriceResponse.fromXML(doc); } @Test public void testGetCreateAndRenewPriceForPremiumDomain() throws Exception { assertTrue(domainCheckPriceResponse.isPremium("premiumdomain.zone")); assertEquals(1, domainCheckPriceResponse.getPeriod("nonpremiumdomain.zone").getPeriod()); assertEquals(PeriodUnit.YEARS, domainCheckPriceResponse.getPeriod("nonpremiumdomain.zone").getUnit()); assertEquals(BigDecimal.valueOf(100.0), domainCheckPriceResponse.getCreatePrice("premiumdomain.zone")); assertEquals(BigDecimal.valueOf(150.0), domainCheckPriceResponse.getRenewPrice("premiumdomain.zone")); } @Test public void testGetCreateAndRenewPriceForNonPremiumDomains() { assertFalse(domainCheckPriceResponse.isPremium("nonpremiumdomain.zone")); assertEquals(1, domainCheckPriceResponse.getPeriod("nonpremiumdomain.zone").getPeriod()); assertEquals(PeriodUnit.YEARS, domainCheckPriceResponse.getPeriod("nonpremiumdomain.zone").getUnit()); assertEquals(BigDecimal.valueOf(50.0), domainCheckPriceResponse.getCreatePrice("nonpremiumdomain.zone")); assertEquals(BigDecimal.valueOf(55.0), domainCheckPriceResponse.getRenewPrice("nonpremiumdomain.zone")); } @Test public void testGetReasonForInvalidRegistrationPeriods() { assertFalse(domainCheckPriceResponse.isPremium("invalidperioddomain.zone")); assertEquals(1, domainCheckPriceResponse.getPeriod("invalidperioddomain.zone").getPeriod()); assertEquals(PeriodUnit.YEARS, domainCheckPriceResponse.getPeriod("invalidperioddomain.zone").getUnit()); assertEquals("Valid Registration Periods 2-10", domainCheckPriceResponse.getReason("invalidperioddomain.zone")); } @Test public void testShouldBeAbleToGetValuesUsingPosition() { assertTrue(domainCheckPriceResponse.isPremium(1L)); assertEquals(1, domainCheckPriceResponse.getPeriod(1L).getPeriod()); assertEquals(PeriodUnit.YEARS, domainCheckPriceResponse.getPeriod(1L).getUnit()); assertEquals(BigDecimal.valueOf(50.0), domainCheckPriceResponse.getCreatePrice(3L)); assertEquals(BigDecimal.valueOf(55.0), domainCheckPriceResponse.getRenewPrice(3L)); assertEquals("Invalid domain name", domainCheckPriceResponse.getReason(2L)); } @Test public void testShouldGetNullForInvalidDomains() { assertNull(domainCheckPriceResponse.isPremium("invalid")); assertNull(domainCheckPriceResponse.getPeriod("invalid")); assertNull(domainCheckPriceResponse.getCreatePrice("invalid")); assertNull(domainCheckPriceResponse.getRenewPrice("invalid")); assertNull(domainCheckPriceResponse.getReason("invalid")); } }