1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.ws.addressing.handler;
18
19 import org.apache.axis.message.MessageElement;
20 import org.apache.axis.message.addressing.Action;
21 import org.apache.axis.message.addressing.Address;
22 import org.apache.axis.message.addressing.AddressingHeaders;
23 import org.apache.axis.message.addressing.Constants;
24 import org.apache.axis.message.addressing.From;
25 import org.apache.axis.message.addressing.Recipient;
26 import org.apache.axis.message.addressing.ReferencePropertiesType;
27 import org.apache.axis.message.addressing.RelatesTo;
28 import org.apache.axis.types.URI;
29
30 import javax.xml.namespace.QName;
31 import javax.xml.rpc.handler.soap.SOAPMessageContext;
32 import javax.xml.rpc.JAXRPCException;
33 import java.util.Map;
34
35 /***
36 * Test case for {@link ClientSideAddressingHandler}.
37 */
38 public class ClientSideAddressingHandlerTestCase extends AbstractAddressingHandlerTestCase {
39 ClientSideAddressingHandler m_handler;
40
41 protected void setUp() throws Exception {
42 super.setUp();
43 m_handler = new ClientSideAddressingHandler();
44 Map handlerConfig = createHandlerConfig(ACTOR_NEXT, Boolean.FALSE.toString(), "*");
45 m_handler.init(createHandlerInfo(ClientSideAddressingHandler.class, handlerConfig));
46 }
47
48 protected AbstractAddressingHandler getHandler() {
49 return m_handler;
50 }
51
52 /***
53 * Test for {@link ClientSideAddressingHandler#handleRequest(javax.xml.rpc.handler.MessageContext)}.
54 *
55 * @throws Exception on error
56 */
57 public void testHandleRequest() throws Throwable {
58 SOAPMessageContext msgContext = createSOAPMessageContext();
59 msgContext.setMessage(createMessage("org/apache/ws/addressing/handler/testRequest.xml"));
60 m_handler.setSOAPAction(msgContext, "http://foo.com/mail#Put");
61 try {
62 assertTrue("handleRequest() should always return true", m_handler.handleRequest(msgContext));
63 }
64 catch (JAXRPCException jaxrpce) {
65 throw jaxrpce.getLinkedCause();
66 }
67 Object prop = msgContext.getProperty(Constants.ENV_ADDRESSING_REQUEST_HEADERS);
68 assertNotNull(prop);
69 assertTrue(prop instanceof AddressingHeaders);
70 AddressingHeaders addrHeaders = (AddressingHeaders) prop;
71 assertFalse(addrHeaders.isSetMustUnderstand());
72 checkMessageIdHeader(addrHeaders, null);
73 checkRelatesToHeader(addrHeaders, new RelatesTo[0]);
74 checkReplyToHeader(addrHeaders, null);
75 checkFaultToHeader(addrHeaders, null);
76 checkToHeader(addrHeaders, null);
77 checkFromHeader(addrHeaders, new From(new Address(Constants.NS_URI_ANONYMOUS)));
78 checkRecipientHeader(addrHeaders, new Recipient(new Address("http://blah.com:8080/axis/services/tester")));
79 checkActionHeader(addrHeaders, new Action(new URI("http://foo.com/mail#Put")));
80 checkReferenceProperties(addrHeaders, new ReferencePropertiesType());
81 }
82
83 /***
84 * Test for {@link ClientSideAddressingHandler#handleResponse(javax.xml.rpc.handler.MessageContext)}.
85 *
86 * @throws Exception on error
87 */
88 public void testHandleResponse() throws Exception {
89 SOAPMessageContext msgContext = createSOAPMessageContext();
90 msgContext.setMessage(createMessage("org/apache/ws/addressing/handler/testRequest.xml"));
91 m_handler.setSOAPAction(msgContext, "http://foo.com/mail#Put");
92 m_handler.handleRequest(msgContext);
93
94 assertTrue("handleResponse() should always return true", m_handler.handleResponse(msgContext));
95 Object prop = msgContext.getProperty(Constants.ENV_ADDRESSING_RESPONSE_HEADERS);
96 assertNotNull(prop);
97 assertTrue(prop instanceof AddressingHeaders);
98 AddressingHeaders addrHeaders = (AddressingHeaders) prop;
99 assertFalse(addrHeaders.isSetMustUnderstand());
100 checkMessageIdHeader(addrHeaders, null);
101 checkRelatesToHeader(addrHeaders, new RelatesTo[0]);
102 checkReplyToHeader(addrHeaders, null);
103 checkFaultToHeader(addrHeaders, null);
104 checkToHeader(addrHeaders, null);
105 checkFromHeader(addrHeaders, new From(new Address(Constants.NS_URI_ANONYMOUS)));
106 checkRecipientHeader(addrHeaders, null);
107 checkActionHeader(addrHeaders, new Action(new URI("http://foo.com/mail#Put")));
108 ReferencePropertiesType expectedRefPropsType = new ReferencePropertiesType();
109 expectedRefPropsType.set_any(new MessageElement[]{new MessageElement(new QName("http://www/hp/com/", "ResourceID"), "1234")});
110 checkReferenceProperties(addrHeaders, expectedRefPropsType);
111 }
112
113 /***
114 * Test for {@link ClientSideAddressingHandler#handleFault(javax.xml.rpc.handler.MessageContext)}.
115 *
116 * @throws Exception on error
117 */
118 public void testHandleFault() throws Exception {
119 SOAPMessageContext msgContext = createSOAPMessageContext();
120 msgContext.setMessage( createMessage( "org/apache/ws/addressing/handler/testRequest.xml" ) );
121 m_handler.setSOAPAction( msgContext, "http://foo.com/mail#Put" );
122 assertTrue( "handleFault() should always return true", m_handler.handleFault( msgContext ) );
123 }
124
125 }