package com.ausregistry.jtoolkit2.se.app;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import com.ausregistry.jtoolkit2.Timer;
import com.ausregistry.jtoolkit2.se.*;
import com.ausregistry.jtoolkit2.se.tmch.TmchDomainInfoResponseExtension;
import com.ausregistry.jtoolkit2.xml.ParsingException;
import com.ausregistry.jtoolkit2.xml.XMLDocument;
import com.ausregistry.jtoolkit2.xml.XMLParser;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.SAXException;
public class DomainInfoApplicationCommandExtensionTest {
private static final XMLParser PARSER = new XMLParser();
@Before
public void setUp() throws Exception {
Timer.setTime("20070101.010101");
CLTRID.setClID("JTKUTEST");
}
@Test
public void shouldCreateValidXmlWhenSupplyApplicationExtensionForInfo() throws SAXException {
final Command cmd = new DomainInfoCommand("jtkutest.com.au");
final DomainInfoApplicationCommandExtension ext = new DomainInfoApplicationCommandExtension();
ext.setApplicationId("sunrise-application-id");
cmd.appendExtension(ext);
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<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\">"
+ "<command><info><info xmlns=\"urn:ietf:params:xml:ns:domain-1.0\" "
+ "xsi:schemaLocation=\"urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd\">"
+ "<name>jtkutest.com.au</name></info></info>" + "<extension>"
+ "<info xmlns=\"urn:ar:params:xml:ns:application-1.0\"><id>sunrise-application-id</id></info>"
+ "</extension><clTRID>JTKUTEST.20070101.010101.0</clTRID></command></epp>", cmd.toXML());
}
@Test
public void shouldReturnApplicationDetailsForInfoCommand() throws ParsingException {
final String dnsForm = "test-domain";
final DomainInfoResponse response = new DomainInfoResponse();
final DomainInfoApplicationResponseExtension applicationExtension = new DomainInfoApplicationResponseExtension(
ResponseExtension.INFO);
String applicationId = "sunrise-application-id";
String creDate = "2011-01-01T00:00:00Z";
String phase = "sunrise";
List<String> statuses = new ArrayList<String>();
statuses.add("ok");
String updDate = "2012-01-01T00:00:00Z";
final XMLDocument doc = PARSER.parse(getInfoResponseExpectedXml(dnsForm, applicationId, phase, statuses,
creDate, updDate));
response.registerExtension(applicationExtension);
response.fromXML(doc);
assertEquals(dnsForm, response.getName());
assertTrue("Application extension should have been initialised", applicationExtension.isInitialised());
assertEquals(applicationId, applicationExtension.getApplicationId());
assertEquals(phase, applicationExtension.getPhase());
assertEquals(statuses, applicationExtension.getStatuses());
}
@Test
public void shouldReturnApplicationDetailsForInfoCommandWhenNotUpdated() throws ParsingException {
final String dnsForm = "test-domain";
final DomainInfoResponse response = new DomainInfoResponse();
final DomainInfoApplicationResponseExtension applicationExtension = new DomainInfoApplicationResponseExtension(
ResponseExtension.INFO);
String applicationId = "sunrise-application-id";
String creDate = "2011-01-01T00:00:00Z";
String phase = "sunrise";
List<String> statuses = new ArrayList<String>();
statuses.add("pendingOutcome");
statuses.add("deleteProhibited");
statuses.add("updateProhibited");
String updDate = "2012-01-01T00:00:00Z";
final XMLDocument doc = PARSER.parse(getInfoResponseExpectedXml(dnsForm, applicationId, phase, statuses,
creDate, updDate));
response.registerExtension(applicationExtension);
response.fromXML(doc);
assertEquals(dnsForm, response.getName());
assertTrue("Application extension should have been initialised", applicationExtension.isInitialised());
}
private String getInfoResponseExpectedXml(final String domainName, final String applicationId, final String phase,
final List<String> statuses, final String creDate, final String updDate) {
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>").append(domainName).append("</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>").append(creDate).append("</crDate>");
result.append("<upDate>").append(updDate).append("</upDate>");
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>");
result.append("<extension>");
result.append("<app:infData xmlns:app=\"urn:ar:params:xml:ns:application-1.0\"");
result.append(" xsi:schemaLocation=\"urn:ar:params:xml:ns:application-1.0 application-1.0.xsd\">");
result.append("<app:id>").append(applicationId).append("</app:id>");
result.append("<app:phase>").append(phase).append("</app:phase>");
for (String status : statuses) {
result.append("<app:status s=\"").append(status).append("\" />");
}
result.append("</app:infData>");
result.append("<tmch:infData xmlns:tmch=\"urn:ar:params:xml:ns:tmch-1.0\">");
result.append("<tmch:smd>ZW5jb2RlZFNpZ25lZE1hcmtEYXRh</tmch:smd>");
result.append("</tmch:infData>");
result.append("</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();
}
@Test
public void shouldAddTmchExtensionInApplicationInfoResponse() throws ParsingException {
final String dnsForm = "test-domain";
final DomainInfoResponse response = new DomainInfoResponse();
final DomainInfoApplicationResponseExtension applicationExtension = new DomainInfoApplicationResponseExtension(
ResponseExtension.INFO);
final TmchDomainInfoResponseExtension tmchExtension = new TmchDomainInfoResponseExtension(
ResponseExtension.INFO);
String applicationId = "sunrise-application-id";
String creDate = "2011-01-01T00:00:00Z";
String phase = "sunrise";
List<String> statuses = new ArrayList<String>();
statuses.add("ok");
String updDate = "2012-01-01T00:00:00Z";
final XMLDocument doc = PARSER.parse(getInfoResponseExpectedXml(dnsForm, applicationId, phase, statuses,
creDate, updDate));
response.registerExtension(applicationExtension);
response.registerExtension(tmchExtension);
response.fromXML(doc);
assertTrue("Tmch extension should have been initialised", tmchExtension.isInitialised());
assertEquals(tmchExtension.getEncodedSignedMarkData(), "ZW5jb2RlZFNpZ25lZE1hcmtEYXRh");
}
}