package eu.choreos.vv.clientgenerator; import static junit.framework.Assert.assertEquals; import java.util.ArrayList; import java.util.List; import org.junit.Test; public class SoapEnvelopeHelperTest { private String testXml = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:trav=\"http://airline.ws.ime.usp.br/\">" + "<soapenv:Header/>" + "<soapenv:Body>" + "<trav:getFlight>" + "<arg0>?</arg0>" + "<arg1>?</arg1>" + "</trav:getFlight>" + "</soapenv:Body>" + "</soapenv:Envelope>"; @Test(expected = IllegalArgumentException.class) public void shouldThrowExceptionForMissingArguments() throws IllegalArgumentException { List<String> parameters = new ArrayList<String>(); parameters.add("Milan"); SoapEnvelopeHelper.generate(testXml, parameters); } @Test public void shouldReplaceMarksInSoapWithRequiredArguments() throws IllegalArgumentException { List<String> parameters = new ArrayList<String>(); parameters.add("Milan"); parameters.add("12-21-2010"); String result = SoapEnvelopeHelper.generate(testXml, parameters); String expectedOutput = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:trav=\"http://airline.ws.ime.usp.br/\">" + "<soapenv:Header/>" + "<soapenv:Body>" + "<trav:getFlight>" + "<arg0>Milan</arg0>" + "<arg1>12-21-2010</arg1>" + "</trav:getFlight>" + "</soapenv:Body>" + "</soapenv:Envelope>"; assertEquals(expectedOutput, result); } @Test(expected = IllegalArgumentException.class) public void shouldThrowExceptionForExtraArgument() throws IllegalArgumentException { List<String> parameters = new ArrayList<String>(); parameters.add("Milan"); parameters.add("12-21-2010"); parameters.add("Extra parameter"); SoapEnvelopeHelper.generate(testXml, parameters); } @Test public void shouldReplaceMarksInSoapWithNonAsciiCharacters() throws IllegalArgumentException { List<String> parameters = new ArrayList<String>(); parameters.add("Araçá do Ribeirão"); parameters.add("12-21-2010"); String result = SoapEnvelopeHelper.generate(testXml, parameters); String expectedOutput = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:trav=\"http://airline.ws.ime.usp.br/\">" + "<soapenv:Header/>" + "<soapenv:Body>" + "<trav:getFlight>" + "<arg0>Araçá do Ribeirão</arg0>" + "<arg1>12-21-2010</arg1>" + "</trav:getFlight>" + "</soapenv:Body>" + "</soapenv:Envelope>"; assertEquals(expectedOutput, result); } @Test public void testCleanResponse() { String xml = "<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" + " <S:Body>\n" + " <ns2:searchByArtistResponse xmlns:ns2=\"http://ws.vvws.choreos.ime.usp.br/\">\n" + " <return>The dark side of the moon;</return>\n" + " </ns2:searchByArtistResponse>\n" + " </S:Body>\n" + "</S:Envelope>\n"; String expectedOutput = "<return>The dark side of the moon;</return>"; assertEquals(expectedOutput, SoapEnvelopeHelper.getCleanResponse(xml)); } }