package com.ausregistry.jtoolkit2.se.launch; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import javax.xml.xpath.XPathExpressionException; import com.ausregistry.jtoolkit2.xml.ParsingException; import com.ausregistry.jtoolkit2.xml.XMLParser; import org.junit.Before; import org.junit.Test; public class DomainInfoLaunchResponseExtensionTest { 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>" + " <infData xmlns=\"urn:ietf:params:xml:ns:launch-1.0\">" + " <phase name=\"sunrise-fcfs\">sunrise</phase>" + " <applicationID>myApp</applicationID>" + " <status s=\"custom\" name=\"pendingAllocation\"/>" + " </infData>" + " </extension>" + " <trID>" + " <clTRID>ABC-12345</clTRID>" + " <svTRID>57f39ac6-abd2-4fea-9a80-e791d1af86f7</svTRID>" + " </trID>" + " </response>" + "</epp>"; private static final String RESPONSE_WITH_MARK_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>" + " <launch:infData xmlns:launch=\"urn:ietf:params:xml:ns:launch-1.0\">" + " <launch:phase name=\"sunrise-fcfs\">sunrise</launch:phase>" + " <launch:applicationID>myApp</launch:applicationID>" + " <launch:status s=\"custom\" name=\"pendingAllocation\"/>" + " <mark:mark xmlns:mark=\"urn:ietf:params:xml:ns:mark-1.0\">" + " <mark:trademark>\n" + " <mark:id>1234-2</mark:id>\n" + " <mark:markName>Example One</mark:markName>\n" + " <mark:holder entitlement=\"owner\">\n" + " <mark:name>holderName</mark:name><mark:org>Example Inc.</mark:org>\n" + " <mark:addr>\n" + " <mark:street>123 Example Dr.</mark:street>\n" + " <mark:street>Suite 100</mark:street>\n" + " <mark:city>Reston</mark:city>\n" + " <mark:sp>VA</mark:sp>\n" + " <mark:pc>20190</mark:pc>\n" + " <mark:cc>US</mark:cc>\n" + " </mark:addr>\n" + "<mark:voice x=\"1234\">+1.7035555555</mark:voice><mark:fax x=\"1234\">+1.7035555555</mark:fax>" + " <mark:email>support@example.tld</mark:email>\n" + " </mark:holder>\n" + "<mark:contact type=\"owner\">" + "<mark:name>contactName</mark:name><mark:org>Example Inc.</mark:org>\n" + " <mark:addr>\n" + " <mark:street>123 Example Dr.</mark:street>\n" + " <mark:street>Suite 100</mark:street>\n" + " <mark:city>Reston</mark:city>\n" + " <mark:sp>VA</mark:sp>\n" + " <mark:pc>20190</mark:pc>\n" + " <mark:cc>US</mark:cc>\n" + " </mark:addr>\n" + "<mark:voice x=\"1234\">+1.7035555555</mark:voice><mark:fax x=\"1234\">+1.7035555555</mark:fax>" + "<mark:email>123@123.com</mark:email>" + " </mark:contact>" + " <mark:jurisdiction>US</mark:jurisdiction>\n" + " <mark:class>35</mark:class>\n" + " <mark:class>36</mark:class>\n" + " <mark:label>example-one</mark:label>\n" + " <mark:label>exampleone</mark:label>\n" + " <mark:goodsAndServices>Dirigendas et eiusmodi\n" + " featuring infringo in airfare et cartam servicia.\n" + " </mark:goodsAndServices> \n" + " <mark:apId>SOMEAPID</mark:apId>\n" + " <mark:apDate>2009-08-16T09:00:00.0Z</mark:apDate>\n" + " <mark:regNum>234235-A</mark:regNum>\n" + " <mark:regDate>2009-08-16T09:00:00.0Z</mark:regDate>\n" + " <mark:exDate>2015-08-16T09:00:00.0Z</mark:exDate>\n" + " </mark:trademark>\n" + " <mark:treatyOrStatute>\n" + " <mark:id>1234-2</mark:id>\n" + " <mark:markName>Example One</mark:markName>\n" + " <mark:holder entitlement=\"owner\">\n" + " <mark:org>Example Inc.</mark:org>\n" + " <mark:addr>\n" + " <mark:street>123 Example Dr.</mark:street>\n" + " <mark:street>Suite 100</mark:street>\n" + " <mark:city>Reston</mark:city>\n" + " <mark:sp>VA</mark:sp>\n" + " <mark:pc>20190</mark:pc>\n" + " <mark:cc>US</mark:cc>\n" + " </mark:addr>\n" + " </mark:holder>\n" + " <mark:protection>" + "<mark:cc>US</mark:cc>" + "<mark:region>region</mark:region>" + "<mark:ruling>US</mark:ruling>" + "<mark:ruling>CA</mark:ruling>" + "</mark:protection>\n" + " <mark:label>example-one</mark:label>\n" + " <mark:label>exampleone</mark:label>\n" + " <mark:goodsAndServices>Dirigendas et eiusmodi\n" + " featuring infringo in airfare et cartam servicia.\n" + " </mark:goodsAndServices> \n" + " <mark:refNum>234235-A</mark:refNum>\n" + " <mark:proDate>2009-08-16T09:00:00.0Z</mark:proDate>\n" + " <mark:title>title</mark:title>\n" + " <mark:execDate>2015-08-16T09:00:00.0Z</mark:execDate>\n" + " </mark:treatyOrStatute>\n" + " <mark:court>\n" + " <mark:id>1234-2</mark:id>\n" + " <mark:markName>Example One</mark:markName>\n" + " <mark:holder entitlement=\"owner\">\n" + " <mark:org>Example Inc.</mark:org>\n" + " <mark:addr>\n" + " <mark:street>123 Example Dr.</mark:street>\n" + " <mark:street>Suite 100</mark:street>\n" + " <mark:city>Reston</mark:city>\n" + " <mark:sp>VA</mark:sp>\n" + " <mark:pc>20190</mark:pc>\n" + " <mark:cc>US</mark:cc>\n" + " </mark:addr>\n" + " </mark:holder>\n" + " <mark:label>example-one</mark:label>\n" + " <mark:label>exampleone</mark:label>\n" + " <mark:goodsAndServices>Dirigendas et eiusmodi\n" + " featuring infringo in airfare et cartam servicia.\n" + " </mark:goodsAndServices> \n" + " <mark:refNum>234235-A</mark:refNum>\n" + " <mark:proDate>2009-08-16T09:00:00.0Z</mark:proDate>\n" + " <mark:cc>cc</mark:cc><mark:region>r1</mark:region><mark:region>r3</mark:region>\n" + " <mark:courtName>courtName</mark:courtName>\n" + " </mark:court>\n" + " </mark:mark>\n" + " </launch:infData>" + " </extension>" + " <trID>" + " <clTRID>ABC-12345</clTRID>" + " <svTRID>57f39ac6-abd2-4fea-9a80-e791d1af86f7</svTRID>" + " </trID>" + " </response>" + "</epp>"; private DomainInfoLaunchResponseExtension response; private XMLParser parser; @Before public void setUp() throws Exception { response = new DomainInfoLaunchResponseExtension(); parser = new XMLParser(); } @Test public void shouldParseAllTheDomainsInTheExtendedAvailabilityInfoResponseXml() throws ParsingException, XPathExpressionException { response.fromXML(parser.parse(RESPONSE_XML)); assertTrue(response.isInitialised()); } @Test public void shouldReturnApplicationIDFromXML() throws ParsingException, XPathExpressionException { response.fromXML(parser.parse(RESPONSE_XML)); assertEquals(response.getApplicationID(), "myApp"); } @Test public void shouldReturnStatusFromXML() throws ParsingException, XPathExpressionException { response.fromXML(parser.parse(RESPONSE_XML)); assertEquals(response.getStatus(), "custom"); assertEquals(response.getStatusName(), "pendingAllocation"); } @Test public void shouldReturnPhaseFromXML() throws ParsingException, XPathExpressionException { response.fromXML(parser.parse(RESPONSE_XML)); assertEquals(response.getPhaseName(), "sunrise-fcfs"); assertEquals(response.getPhaseType(), "sunrise"); } @Test public void shouldReturnNoStatusNameWhenNotSupplied() throws ParsingException, XPathExpressionException { response.fromXML(parser.parse("<?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>" + " <infData xmlns=\"urn:ietf:params:xml:ns:launch-1.0\">" + " <phase name=\"sunrise-fcfs\">sunrise</phase>" + " <applicationID>myApp</applicationID>" + " <status s=\"pendingAllocation\"/>" + " </infData>" + " </extension>" + " <trID>" + " <clTRID>ABC-12345</clTRID>" + " <svTRID>57f39ac6-abd2-4fea-9a80-e791d1af86f7</svTRID>" + " </trID>" + " </response>" + "</epp>")); assertEquals(response.getStatus(), "pendingAllocation"); } @Test public void shouldReturnMarkDataWhenSupplied() throws ParsingException, XPathExpressionException { response.fromXML(parser.parse(RESPONSE_WITH_MARK_XML)); assertNotNull(response.getMarksList()); assertEquals(response.getMarksList().getMarks().size(), 3); } }