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.panels.teststeps.support.WsaAssertionConfiguration;
21 import com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange;
22 import com.eviware.soapui.impl.wsdl.support.HelpUrls;
23 import com.eviware.soapui.impl.wsdl.support.wsa.WsaValidator;
24 import com.eviware.soapui.impl.wsdl.teststeps.WsdlMessageAssertion;
25 import com.eviware.soapui.impl.wsdl.teststeps.WsdlMockResponseTestStep;
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 WSARequestAssertion extends WsdlMessageAssertion implements RequestAssertion, ResponseAssertion
50 {
51 public static final String ID = "WS-A Request Assertion";
52 public static final String LABEL = "WS-Addressing Request";
53 private WsaAssertionConfiguration wsaAssertionConfiguration;
54 private boolean assertWsaAction;
55 private boolean assertWsaTo;
56 private boolean assertWsaReplyTo;
57 private boolean assertWsaMessageId;
58
59
60
61 private XFormDialog dialog;
62 private static final String ASSERT_ACTION = "wsa:Action";
63 private static final String ASSERT_TO = "wsa:To";
64 private static final String ASSERT_REPLY_TO = "wsa:ReplyTo";
65 private static final String ASSERT_MESSAGE_ID = "wsa:MessageId";
66
67
68
69
70
71
72
73 /***
74 * Constructor for our assertion.
75 *
76 * @param assertionConfig
77 * @param modelItem
78 */
79 public WSARequestAssertion( TestAssertionConfig assertionConfig, Assertable modelItem )
80 {
81 super( assertionConfig, modelItem, false, true, false, true );
82
83 XmlObjectConfigurationReader reader = new XmlObjectConfigurationReader( getConfiguration() );
84 assertWsaAction = reader.readBoolean( "asertWsaAction", true );
85 assertWsaTo = reader.readBoolean( "asertWsaTo", false );
86 assertWsaReplyTo = reader.readBoolean( "assertWsaReplyTo", false );
87 assertWsaMessageId = reader.readBoolean( "assertWsaMessageId", false );
88
89
90
91
92
93 wsaAssertionConfiguration = new WsaAssertionConfiguration( assertWsaAction, assertWsaTo, assertWsaReplyTo,
94 assertWsaMessageId, false, false, false );
95 }
96
97 public static class Factory extends AbstractTestAssertionFactory
98 {
99 public Factory()
100 {
101 super( WSARequestAssertion.ID, WSARequestAssertion.LABEL, WSARequestAssertion.class,
102 WsdlMockResponseTestStep.class );
103 }
104 }
105
106 @Override
107 protected String internalAssertRequest( MessageExchange messageExchange, SubmitContext context )
108 throws AssertionException
109 {
110 try
111 {
112 new WsaValidator( ( WsdlMessageExchange )messageExchange, wsaAssertionConfiguration )
113 .validateWsAddressingRequest();
114 }
115 catch( AssertionException e )
116 {
117 throw new AssertionException( new AssertionError( e.getMessage() ) );
118 }
119 catch( XmlException e )
120 {
121 SoapUI.logError( e );
122 throw new AssertionException( new AssertionError(
123 "There has been some XmlException, ws-a couldn't be validated properly." ) );
124 }
125
126 return "Request WS-Addressing is valid";
127 }
128
129 @Override
130 protected String internalAssertResponse( MessageExchange messageExchange, SubmitContext context )
131 throws AssertionException
132 {
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152 return null;
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 values.put( ASSERT_REPLY_TO, assertWsaReplyTo );
164 values.put( ASSERT_MESSAGE_ID, assertWsaMessageId );
165
166
167
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 assertWsaReplyTo = values.getBoolean( ASSERT_REPLY_TO );
175 assertWsaMessageId = values.getBoolean( ASSERT_MESSAGE_ID );
176
177
178
179
180
181 }
182
183 wsaAssertionConfiguration = new WsaAssertionConfiguration( assertWsaAction, assertWsaTo, assertWsaReplyTo,
184 assertWsaMessageId, false, false, false );
185 setConfiguration( createConfiguration() );
186 return true;
187 }
188
189 private void buildDialog()
190 {
191 XFormDialogBuilder builder = XFormFactory.createDialogBuilder( "Ws-a properties to assert" );
192 XForm mainForm = builder.createForm( "Basic" );
193 mainForm.addCheckBox( ASSERT_ACTION, "Check if 'wsa:Action' exists" );
194 mainForm.addCheckBox( ASSERT_TO, "Check if 'wsa:To' exists" );
195 mainForm.addCheckBox( ASSERT_REPLY_TO, "Check if 'wsa:ReplyTo' exists" );
196 mainForm.addCheckBox( ASSERT_MESSAGE_ID, "Check if 'wsa:MessageId' exists" );
197
198
199
200
201
202
203
204 dialog = builder.buildDialog( builder.buildOkCancelHelpActions( HelpUrls.SIMPLE_CONTAINS_HELP_URL ),
205 "Specify options", UISupport.OPTIONS_ICON );
206 }
207
208 protected XmlObject createConfiguration()
209 {
210 XmlObjectConfigurationBuilder builder = new XmlObjectConfigurationBuilder();
211 builder.add( "asertWsaAction", assertWsaAction );
212 builder.add( "asertWsaTo", assertWsaTo );
213 builder.add( "assertWsaReplyTo", assertWsaReplyTo );
214 builder.add( "assertWsaMessageId", assertWsaMessageId );
215
216
217
218 return builder.finish();
219 }
220
221 }