1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.teststeps.assertions.soap;
14
15 import org.apache.xmlbeans.XmlException;
16 import org.apache.xmlbeans.XmlObject;
17
18 import com.eviware.soapui.SoapUI;
19 import com.eviware.soapui.config.TestAssertionConfig;
20 import com.eviware.soapui.impl.wsdl.WsdlRequest;
21 import com.eviware.soapui.impl.wsdl.panels.teststeps.support.WsaAssertionConfiguration;
22 import com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange;
23 import com.eviware.soapui.impl.wsdl.support.HelpUrls;
24 import com.eviware.soapui.impl.wsdl.support.wsa.WsaValidator;
25 import com.eviware.soapui.impl.wsdl.teststeps.WsdlMessageAssertion;
26 import com.eviware.soapui.impl.wsdl.teststeps.assertions.AbstractTestAssertionFactory;
27 import com.eviware.soapui.model.iface.MessageExchange;
28 import com.eviware.soapui.model.iface.SubmitContext;
29 import com.eviware.soapui.model.testsuite.Assertable;
30 import com.eviware.soapui.model.testsuite.AssertionError;
31 import com.eviware.soapui.model.testsuite.AssertionException;
32 import com.eviware.soapui.model.testsuite.RequestAssertion;
33 import com.eviware.soapui.model.testsuite.ResponseAssertion;
34 import com.eviware.soapui.support.UISupport;
35 import com.eviware.soapui.support.types.StringToStringMap;
36 import com.eviware.soapui.support.xml.XmlObjectConfigurationBuilder;
37 import com.eviware.soapui.support.xml.XmlObjectConfigurationReader;
38 import com.eviware.x.form.XForm;
39 import com.eviware.x.form.XFormDialog;
40 import com.eviware.x.form.XFormDialogBuilder;
41 import com.eviware.x.form.XFormFactory;
42
43 /***
44 * Assertion for verifying that WS-Addressing processing was ok
45 *
46 * @author dragica.soldo
47 */
48
49 public class WSAResponseAssertion extends WsdlMessageAssertion implements RequestAssertion, ResponseAssertion
50 {
51 public static final String ID = "WS-A Response Assertion";
52 public static final String LABEL = "WS-Addressing Response";
53 private WsaAssertionConfiguration wsaAssertionConfiguration;
54 private boolean assertWsaAction;
55 private boolean assertWsaTo;
56
57
58 private boolean assertWsaRelatesTo;
59 private boolean assertReplyToRefParams;
60 private boolean assertFaultToRefParams;
61 private XFormDialog dialog;
62 private static final String ASSERT_ACTION = "wsa:Action";
63 private static final String ASSERT_TO = "wsa:To";
64
65
66 private static final String ASSERT_RELATES_TO = "wsa:RelatesTo";
67 private static final String ASSERT_REPLY_TO_REF_PARAMS = "wsa:ReplyTo ReferenceParameters";
68 private static final String ASSERT_FAULT_TO_REF_PARAMS = "wsa:FaultTo ReferenceParameters";
69
70 /***
71 * Constructor for our assertion.
72 *
73 * @param assertionConfig
74 * @param modelItem
75 */
76 public WSAResponseAssertion( TestAssertionConfig assertionConfig, Assertable modelItem )
77 {
78 super( assertionConfig, modelItem, false, true, false, true );
79
80 XmlObjectConfigurationReader reader = new XmlObjectConfigurationReader( getConfiguration() );
81 assertWsaAction = reader.readBoolean( "asertWsaAction", true );
82 assertWsaTo = reader.readBoolean( "asertWsaTo", false );
83
84
85 assertWsaRelatesTo = reader.readBoolean( "asertWsaRelatesTo", false );
86 assertReplyToRefParams = reader.readBoolean( "assertReplyToRefParams", false );
87 assertFaultToRefParams = reader.readBoolean( "assertFaultToRefParams", false );
88 wsaAssertionConfiguration = new WsaAssertionConfiguration( assertWsaAction, assertWsaTo, false, false,
89 assertWsaRelatesTo, assertReplyToRefParams, assertFaultToRefParams );
90 }
91
92 public static class Factory extends AbstractTestAssertionFactory
93 {
94 public Factory()
95 {
96 super( WSAResponseAssertion.ID, WSAResponseAssertion.LABEL, WSAResponseAssertion.class, WsdlRequest.class );
97 }
98
99 @Override
100 public Class<? extends WsdlMessageAssertion> getAssertionClassType()
101 {
102 return WSAResponseAssertion.class;
103 }
104 }
105
106 @Override
107 protected String internalAssertRequest( MessageExchange messageExchange, SubmitContext context )
108 throws AssertionException
109 {
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129 return null;
130 }
131
132 @Override
133 protected String internalAssertResponse( MessageExchange messageExchange, SubmitContext context )
134 throws AssertionException
135 {
136 try
137 {
138 new WsaValidator( ( WsdlMessageExchange )messageExchange, wsaAssertionConfiguration )
139 .validateWsAddressingResponse();
140 }
141 catch( AssertionException e )
142 {
143 throw new AssertionException( new AssertionError( e.getMessage() ) );
144 }
145 catch( XmlException e )
146 {
147 SoapUI.logError( e );
148 throw new AssertionException( new AssertionError(
149 "There has been some XmlException, WS-A couldn't be validated properly." ) );
150 }
151
152 return "Response WS-Addressing is valid";
153 }
154
155 public boolean configure()
156 {
157 if( dialog == null )
158 buildDialog();
159
160 StringToStringMap values = new StringToStringMap();
161 values.put( ASSERT_ACTION, assertWsaAction );
162 values.put( ASSERT_TO, assertWsaTo );
163
164
165 values.put( ASSERT_RELATES_TO, assertWsaRelatesTo );
166 values.put( ASSERT_REPLY_TO_REF_PARAMS, assertReplyToRefParams );
167 values.put( ASSERT_FAULT_TO_REF_PARAMS, assertFaultToRefParams );
168
169 values = dialog.show( values );
170 if( dialog.getReturnValue() == XFormDialog.OK_OPTION )
171 {
172 assertWsaAction = values.getBoolean( ASSERT_ACTION );
173 assertWsaTo = values.getBoolean( ASSERT_TO );
174
175
176 assertWsaRelatesTo = values.getBoolean( ASSERT_RELATES_TO );
177 assertReplyToRefParams = values.getBoolean( ASSERT_REPLY_TO_REF_PARAMS );
178 assertFaultToRefParams = values.getBoolean( ASSERT_FAULT_TO_REF_PARAMS );
179 }
180
181 wsaAssertionConfiguration = new WsaAssertionConfiguration( assertWsaAction, assertWsaTo, false, false,
182 assertWsaRelatesTo, assertReplyToRefParams, assertFaultToRefParams );
183 setConfiguration( createConfiguration() );
184 return true;
185 }
186
187 private void buildDialog()
188 {
189 XFormDialogBuilder builder = XFormFactory.createDialogBuilder( "WS-A properties to assert" );
190 XForm mainForm = builder.createForm( "Basic" );
191 mainForm.addCheckBox( ASSERT_ACTION, "Check if 'wsa:Action' exists and has the right value" );
192 mainForm.addCheckBox( ASSERT_TO, "Check if 'wsa:To' exists" );
193
194
195
196 mainForm.addCheckBox( ASSERT_RELATES_TO, "Check if 'wsa:RelatesTo' exists and is equal to request MessageID" );
197 mainForm.addCheckBox( ASSERT_REPLY_TO_REF_PARAMS, "Check if 'wsa:ReplyTo' ReferenceParameters exist" );
198 mainForm.addCheckBox( ASSERT_FAULT_TO_REF_PARAMS, "Check if 'wsa:FaultTo' ReferenceParameters exist" );
199
200 dialog = builder.buildDialog( builder.buildOkCancelHelpActions( HelpUrls.SIMPLE_CONTAINS_HELP_URL ),
201 "Specify options", UISupport.OPTIONS_ICON );
202 }
203
204 protected XmlObject createConfiguration()
205 {
206 XmlObjectConfigurationBuilder builder = new XmlObjectConfigurationBuilder();
207 builder.add( "asertWsaAction", assertWsaAction );
208 builder.add( "asertWsaTo", assertWsaTo );
209
210
211 builder.add( "asertWsaRelatesTo", assertWsaRelatesTo );
212 builder.add( "assertReplyToRefParams", assertReplyToRefParams );
213 builder.add( "assertFaultToRefParams", assertFaultToRefParams );
214 return builder.finish();
215 }
216
217 }