| 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 = |
| "<?xml version=\"1.0\"?>\n" + |
| "<soap:Envelope " + |
| "xmlns:soap=\""; |
| |
| private String middle = "\">\n" + |
| "<soap:Header>\n" + |
| "<test soap:mustUnderstand=\""; |
| |
| private String footer = |
| "\"/>\n" + |
| "</soap:Header>\n" + |
| "<soap:Body>\n" + |
| "<noContent/>\n" + |
| "</soap:Body>\n" + |
| "</soap:Envelope>\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) { |
| } |
| } |
| } |