package com.ausregistry.jtoolkit2.se.rgp; import static org.junit.Assert.*; import java.util.Arrays; import java.util.List; import com.ausregistry.jtoolkit2.se.DomainInfoResponse; import com.ausregistry.jtoolkit2.se.ResponseExtension; import com.ausregistry.jtoolkit2.xml.XMLDocument; import com.ausregistry.jtoolkit2.xml.XMLParser; import org.junit.Test; public class DomainInfoRgpResponseTest { private static final XMLParser PARSER = new XMLParser(); @Test public void testInfoWithRgpExtensionMultipleStatusesResponse() throws Exception { final String domainName = "test.com.au"; final List<RgpStatus> expectedRgpStatuses = Arrays.asList( new RgpStatus("addPeriod", "lang", "message"), new RgpStatus("renewPeriod", "lang", "message")); final DomainInfoResponse response = new DomainInfoResponse(); final DomainInfoRgpResponseExtension rgpExtension = new DomainInfoRgpResponseExtension(ResponseExtension.INFO); final XMLDocument doc = PARSER.parse(getInfoResponseWithRgpExtensionExpectedXml(domainName, expectedRgpStatuses)); response.registerExtension(rgpExtension); response.fromXML(doc); assertTrue("RgpExtension should be initialised", rgpExtension.isInitialised()); assertEquals("Should return domain name", domainName, response.getName()); List<RgpStatus> rgpStatuses = rgpExtension.getRgpStatuses(); assertEquals("RgpStatuses size differ", expectedRgpStatuses.size(), rgpStatuses.size()); for (int i = 0; i < expectedRgpStatuses.size(); i++) { RgpStatus expectedRgpStatus = expectedRgpStatuses.get(i); RgpStatus rgpStatus = rgpStatuses.get(i); assertEquals("Should return expected status", expectedRgpStatus.getStatus(), rgpStatus.getStatus()); assertEquals("Should return expected language", expectedRgpStatus.getLanguage(), rgpStatus.getLanguage()); assertEquals("Should return expected message", expectedRgpStatus.getMessage(), rgpStatus.getMessage()); } } @Test public void testInfoWithRgpExtensionResponse() throws Exception { final String domainName = "test.com.au"; final List<RgpStatus> expectedRgpStatuses = Arrays.asList(new RgpStatus("addPeriod", "lang", "message")); final DomainInfoResponse response = new DomainInfoResponse(); final DomainInfoRgpResponseExtension rgpExtension = new DomainInfoRgpResponseExtension(ResponseExtension.INFO); final XMLDocument doc = PARSER.parse(getInfoResponseWithRgpExtensionExpectedXml(domainName, expectedRgpStatuses)); response.registerExtension(rgpExtension); response.fromXML(doc); assertTrue("RgpExtension should be initialised", rgpExtension.isInitialised()); assertEquals("Should return domain name", domainName, response.getName()); List<RgpStatus> rgpStatuses = rgpExtension.getRgpStatuses(); assertEquals("RgpStatuses size differ", expectedRgpStatuses.size(), rgpStatuses.size()); for (int i = 0; i < expectedRgpStatuses.size(); i++) { RgpStatus expectedRgpStatus = expectedRgpStatuses.get(i); RgpStatus rgpStatus = rgpStatuses.get(i); assertEquals("Should return expected status", expectedRgpStatus.getStatus(), rgpStatus.getStatus()); assertEquals("Should return expected language", expectedRgpStatus.getLanguage(), rgpStatus.getLanguage()); assertEquals("Should return expected message", expectedRgpStatus.getMessage(), rgpStatus.getMessage()); } } @Test public void testInfoWithNoRgpExtensionInResponse() throws Exception { final String domainName = "test.com.au"; final List<RgpStatus> expectedRgpStatuses = null; final DomainInfoResponse response = new DomainInfoResponse(); final DomainInfoRgpResponseExtension rgpExtension = new DomainInfoRgpResponseExtension(ResponseExtension.INFO); final XMLDocument doc = PARSER.parse(getInfoResponseWithRgpExtensionExpectedXml(domainName, expectedRgpStatuses)); response.registerExtension(rgpExtension); response.fromXML(doc); assertFalse("Extension initialised", rgpExtension.isInitialised()); assertEquals("Should return domain name", domainName, response.getName()); assertNull("Should not return RgpStatuses", rgpExtension.getRgpStatuses()); } private static String getInfoResponseWithRgpExtensionExpectedXml(final String domainName, List<RgpStatus> rgpStatuses) { final StringBuilder result = new StringBuilder(); result.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); result.append("<epp xmlns=\"urn:ietf:params:xml:ns:epp-1.0\""); result.append(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""); result.append(" xsi:schemaLocation=\"urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd\">"); result.append("<response>"); result.append("<result code=\"1000\">"); result.append("<msg>Command completed successfully</msg>"); result.append("</result>"); result.append("<resData>"); result.append("<infData xmlns=\"urn:ietf:params:xml:ns:domain-1.0\""); result.append(" xsi:schemaLocation=\"urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd\">"); result.append("<name>" + domainName + "</name>"); result.append("<roid>D0000003-AR</roid>"); result.append("<status s=\"ok\" lang=\"en\"/>"); result.append("<registrant>EXAMPLE</registrant>"); result.append("<contact type=\"tech\">EXAMPLE</contact>"); result.append("<ns>"); result.append("<hostObj>ns1.example.com.au</hostObj>"); result.append("<hostObj>ns2.example.com.au</hostObj>"); result.append("</ns>"); result.append("<host>ns1.example.com.au</host>"); result.append("<host>ns2.exmaple.com.au</host>"); result.append("<clID>Registrar</clID>"); result.append("<crID>Registrar</crID>"); result.append("<crDate>2006-02-09T15:44:58.0Z</crDate>"); result.append("<exDate>2008-02-10T00:00:00.0Z</exDate>"); result.append("<authInfo>"); result.append("<pw>0192pqow</pw>"); result.append("</authInfo>"); result.append("</infData>"); result.append("</resData>"); if (rgpStatuses != null && rgpStatuses.size() > 0) { result.append("<extension>").append("<infData xmlns=\"urn:ietf:params:xml:ns:rgp-1.0\"") .append(" xsi:schemaLocation=\"urn:ietf:params:xml:ns:rgp-1.0 rgp-1.0.xsd\">"); for (RgpStatus rgpStatus : rgpStatuses) { result.append( "<rgpStatus s=\"" + rgpStatus.getStatus() + "\" lang=\"" + rgpStatus.getLanguage() + "\">" + rgpStatus.getMessage()).append( "</rgpStatus>"); } result.append("</infData></extension>"); } result.append("<trID>"); result.append("<clTRID>ABC-12345</clTRID>"); result.append("<svTRID>54321-XYZ</svTRID>"); result.append("</trID>"); result.append("</response>"); result.append("</epp>"); return result.toString(); } }