package test.message; import junit.framework.TestCase; import org.apache.axis.AxisEngine; import org.apache.axis.Constants; import org.apache.axis.Message; import org.apache.axis.MessageContext; import org.apache.axis.configuration.SimpleProvider; import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.message.SOAPHeaderElement; import org.apache.axis.server.AxisServer; /** * This test confirms the behavior of the various possible values for * the mustUnderstand attribute in both SOAP 1.1 and SOAP 1.2. In particular: * * For SOAP 1.1, the only valid values are "0" and "1" * For SOAP 1.2, "0"/"false" and "1"/"true" are valid * * @author Glen Daniels (gdaniels@apache.org) */ public class TestMUValues extends TestCase { private AxisEngine engine; public TestMUValues(String name) { super(name); } private String header = "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n"; public void setUp() throws Exception { SimpleProvider provider = new SimpleProvider(); engine = new AxisServer(provider); } public void checkVal(String val, boolean desiredResult, String ns) throws Exception { String request = header + ns + middle + val + footer; // create a message in context MessageContext msgContext = new MessageContext(engine); Message message = new Message(request); message.setMessageContext(msgContext); // Parse the message and check the mustUnderstand value SOAPEnvelope envelope = message.getSOAPEnvelope(); SOAPHeaderElement header = envelope.getHeaderByName("", "test"); assertEquals("MustUnderstand value wasn't right using value '" + val + "'", desiredResult, header.getMustUnderstand()); } public void testMustUnderstandValues() throws Exception { String soap12 = Constants.URI_SOAP12_ENV; String soap11 = Constants.URI_SOAP11_ENV; checkVal("0", false, soap12); checkVal("1", true, soap12); checkVal("true", true, soap12); checkVal("false", false, soap12); try { checkVal("dennis", false, soap12); fail("Didn't throw exception with bad MU value"); } catch (Exception e) { } checkVal("0", false, soap11); checkVal("1", true, soap11); try { checkVal("true", false, soap11); fail("Didn't throw exception with bad MU value"); } catch (Exception e) { } try { checkVal("false", false, soap11); fail("Didn't throw exception with bad MU value"); } catch (Exception e) { } try { checkVal("dennis", false, soap11); fail("Didn't throw exception with bad MU value"); } catch (Exception e) { } } }