-
Notifications
You must be signed in to change notification settings - Fork 25
/
ds-wfs-direct-soapui-project.xml
executable file
·420 lines (360 loc) · 69.2 KB
/
ds-wfs-direct-soapui-project.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
<?xml version="1.0" encoding="UTF-8"?>
<con:soapui-project name="Conformance Class: Download Service - Direct WFS" resourceRoot="${projectDir}" soapui-version="5.3.0" abortOnError="false" runType="SEQUENTIAL" activeEnvironment="Default" id="ed2d3501-d700-4ff9-b9bf-070dece8ddbd" xmlns:con="http://eviware.com/soapui/config"><con:description><![CDATA[This test suite examines an OGC Web Feature Service against the requirements related to the conformance class “Web Feature Service and Filter Encoding implementation of
Direct Access Download Service” in INSPIRE. This conformance class does not specify any requirements in addition to the dependencies to conformance classes specified by the OGC standard documents WFS 2.0 and FES 2.0. This Executable Test Suite, therefore, depends on the OGC <a href="http://cite.opengeospatial.org/teamengine/about/wfs/2.0.0/site/">WFS 2.0 Conformance Test Suite</a>, which is invoked automatically.
<br/> <br/>
The Executable Test Suite is divided into two test modules. In the first module 'Initialization and basic checks', basic queries are send to the service to ensure the endpoints are available. The 'Capabilities' test module contains a test case that checks, if the Capabilities document of the service declares all required Conformance Classes.
<br/> <br/>
There are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (e.g., a non-existing feature type ID). The test step description typically includes information about the source of the parameter value (e.g., from a previous request where the feature type ID was listed).
<br/> <br/>Please report any issues or problems <a href="https://github.com/inspire-eu-validation/community/wiki/Your-feedback" target="_blank">in GitHub</a>.
<br/> <br/>
Known limitations are documented in the description of the applicable test case or test assertion.
<br/> <br/>
Source: <a href="http://inspire.ec.europa.eu/id/ats/download-wfs/3.1/wfs-direct" target="_blank">Conformance Class 'Direct WFS'</a>]]></con:description><con:settings><con:setting id="ProjectSettings@shadowPassword"/></con:settings>
<con:testSuite name="Initialization and basic checks" id="f80be489-b47d-416a-b915-6c9db207db33">
<con:description>Perform basic check to ensure all endpoints listed in the Capabilities are available, and initialize the Executable Test Suite with gathered information.
If this test case fails, all other test cases will be skipped!
Ensure that the schema locations and all endpoints can be queried!
Please note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.</con:description><con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.panels.testcase.JTestRunLog$OptionsForm@errors_only">true</con:setting>
</con:settings>
<con:runType>SEQUENTIAL</con:runType>
<con:properties><con:property><con:name>version</con:name><con:value>2.0.0</con:value></con:property><con:property><con:name>service</con:name><con:value>WFS</con:value></con:property></con:properties>
<con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Init TestProject" searchProperties="true" id="87b1b313-fbf6-4603-ab6d-583859dd6e23"><con:description>Technical test case. Initialize loggers and set credentials for the test run.</con:description><con:settings/><con:testStep name="Init TestProject" type="groovy" id="54299aa1-8eac-45c4-8a68-638693524206">
<con:settings/>
<con:config><script>import de.interactive_instruments.xtf.*;
SOAPUI_I.init(log,context,testRunner);
// Also update credentials
TestSetup.init();</script></con:config>
</con:testStep><con:properties><con:property><con:name>qaf.ShortDescription</con:name><con:value/></con:property><con:property><con:name>qaf.Author</con:name><con:value>herrmann</con:value></con:property><con:property><con:name>qaf.CreationDate</con:name><con:value>2014-01-13T12:24:44.115+01:00</con:value></con:property><con:property><con:name>qaf.Version</con:name><con:value>1.0.0</con:value></con:property><con:property><con:name>qaf.AssociatedRequirements</con:name><con:value/></con:property><con:property><con:name>qaf.ExpectedResults</con:name><con:value/></con:property><con:property><con:name>qaf.Status</con:name><con:value>IMPLEMENTED</con:value></con:property><con:property><con:name>qaf.LastUpdateDate</con:name><con:value>2014-01-13T14:10:42.862+01:00</con:value></con:property><con:property><con:name>etf.technicalStep</con:name><con:value>true</con:value></con:property></con:properties><con:reportParameters/></con:testCase><con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Update Query Params" searchProperties="true" id="7886f47e-5ec7-435d-b948-4188e4ea7e40" disabled="true"><con:description>Technical test case for updating query parameters</con:description><con:settings/><con:testStep type="groovy" name="UpdateQueryParams" id="6924c209-0b79-4265-857e-3ecdce6ebceb"><con:settings/><con:config><script>// if any non-WMS parameters are found, add them to the GetCapabilities request
// author: Thijs Brentjens
import com.eviware.soapui.impl.wsdl.teststeps.*;
c = testRunner.getRunContext();
URL endpoint = new URL(c.expand('${#Project#serviceEndpoint}'));
if (endpoint.getQuery()) {
def queryParams = endpoint.getQuery().split("&");
// default params for GetCapabilities:
// filter out version
def defaultParamsGetCaps = ["acceptversions","service","request","language"];
for (p in queryParams) {
for (d in defaultParamsGetCaps) {
if (p.split("=")[0].toLowerCase() == d) {
queryParams = queryParams - p;
}
}
log.debug("Queryparams from serviceEndpoint cleaned. Aditional queryparams left: " + queryParams);
}
// For REST requests, add additional query parameters
// Here for GetCapabilities only
if (queryParams.length > 0) {
// for GetCapabilities: update all requests with other parameters from the serviceEndpoint
for( testSuite in testRunner.testCase.testSuite.project.getTestSuiteList() ) {
for( testCase in testSuite.getTestCaseList() ) {
for( testStep in testCase.getTestStepList() ) {
if( testStep instanceof HttpTestRequestStep ) {
// First: cleanup old extra params, if the tests have been saved with aditional params a previous time
if (testStep.getName()=="GetCapabilities") {
// first remove any other params
for (prop in testStep.getHttpRequest().getProperties()) {
defaultParam = 0;
log.debug("HTTP param: " + prop.getKey())
for (d in defaultParamsGetCaps) {
if (prop.getKey().toLowerCase() == d) {
defaultParam = 1;
}
}
// if not a defaultParam, remove it
if (defaultParam == 0) {
testStep.getHttpRequest().removeProperty(prop.getKey());
log.debug("Removed non-standard query parameter from the request: " + prop.getKey())
}
}
// now add the extra params from the query string
for (q in queryParams) {
def pair = q.split("=");
if (pair.length > 1) {
testStep.getHttpRequest().addProperty(pair[0]);
testStep.getHttpRequest().setPropertyValue(pair[0], pair[1]);
log.debug("Added non-standard query parameter for the Getcapabilities requests: " + pair[0] + "=" + pair[1])
}
}
}
}
}
}
};
}
}
</script></con:config></con:testStep><con:properties/></con:testCase><con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Service is available" searchProperties="true" id="09140236-f666-4839-a16b-3bd6936ad8fd"><con:description>Check if the service is available. This test case will fail if an incorrect URL was provided, the Capabilities document is invalid, the GetCapabilities operation URL in the Capabilities document is incorrect or the service returns invalid XML. In the latter case, there might be a problem with the encoding, respectively the byte order mark (BOM) is incorrect.</con:description><con:settings/><con:testStep type="httprequest" name="Check endpoint for Capabilities" id="a1d57f39-0872-42fe-a9a7-7f6ae3269d10"><con:settings/><con:config method="GET" xsi:type="con:HttpRequest" id="e9257a01-b8b1-4918-961c-e4750780da20" name="Check endpoint for Capabilities" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:description>Implementation note: the users URL is simply passed through to respect additional parameters. If no Capabilities document is found, it is explicity requested in an optional second step 'Get Capabilities with parameters' with parameters.</con:description><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>${#Project#serviceEndpoint}</con:endpoint><con:request/><con:assertion type="Response SLA Assertion" id="6bd1ce1d-4805-4049-8a22-3512024dba03" name="30 seconds timeout"><con:configuration><SLA>30000</SLA></con:configuration></con:assertion><con:assertion type="OwsExceptionReportAssertion" id="0e9021ec-d7d6-4e78-8967-c5061ada16ef" name="Expect no exception"/><con:assertion type="Valid HTTP Status Codes" id="1ce8323d-1823-45b8-9ddf-57a6692bab13" name="HTTP status code 200 is returned"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="c97c20c5-0513-4259-914f-1ce9f2b09169" name="No invalid characters before XML prolog"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
import de.interactive_instruments.*
if(!messageExchange.hasResponse()) {
throw new TranslatableAssertionError("TR.noDataReturned")
}
if(messageExchange.responseContent.size()>7) {
final String xmlProlog = messageExchange.responseContent.substring(0,7);
if(!xmlProlog.trim().startsWith("<")) {
throw new TranslatableAssertionError("TR.invalidXmlProlog", "prolog", xmlProlog.replaceAll("\\p{C}", "?") )
}
}</scriptText></con:configuration></con:assertion><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:config></con:testStep><con:testStep type="goto" name="Check if WFS_Capabilites are returned" id="77c463c2-46e6-4fe5-bc28-783947acbed0"><con:settings/><con:config xsi:type="con:GotoStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:condition><con:name>Goto request Capabilities with parameters explicitly</con:name><con:type>XPATH</con:type><con:expression>not(exists(/*:WFS_Capabilities))</con:expression><con:targetStep>Get Capabilities with parameters</con:targetStep></con:condition></con:config></con:testStep><con:testStep type="httprequest" name="Get Capabilities" id="86c82a0f-61be-4290-a62f-8bc19fc55499"><con:settings/><con:config method="GET" xsi:type="con:HttpRequest" id="7316fa5c-0f98-49fb-b214-16effe1b3424" name="Get Capabilities" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>${#Project#serviceEndpoint}</con:endpoint><con:request/><con:assertion type="GroovyScriptAssertion" id="0f3f542d-09fa-4958-916e-661897dee1d8" name="Expect a Capabilities root element"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.exists("/*:WFS_Capabilities", "TR.missingCapabilitiesRootElement");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="e012b824-d2c8-4dc9-b7f0-30b023750ab7" name="Expect Capabilites in version 2.0.0"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.equals("/*:WFS_Capabilities/@version", "Capabilities version", "2.0.0");</scriptText></con:configuration></con:assertion><con:assertion type="Response SLA Assertion" id="ac2c9ddd-3308-456f-ac05-5a9e4887e44e" name="30 seconds timeout"><con:configuration><SLA>30000</SLA></con:configuration></con:assertion><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:config></con:testStep><con:testStep type="transfer" name="Transfer Capabilities, service and version 1" id="5483fdf7-fe2f-4443-a1ee-dfc655c6ee41"><con:settings/><con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"><con:name>Capabilities</con:name><con:sourceType>ResponseAsXml</con:sourceType><con:sourceStep>Get Capabilities</con:sourceStep><con:targetType>capabilities</con:targetType><con:targetStep>#TestCase#</con:targetStep><con:upgraded>true</con:upgraded></con:transfers><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"><con:name>service</con:name><con:sourceType>service</con:sourceType><con:sourceStep>#TestSuite#</con:sourceStep><con:targetType>service</con:targetType><con:targetStep>#TestCase#</con:targetStep><con:upgraded>true</con:upgraded></con:transfers><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"><con:name>version</con:name><con:sourceType>version</con:sourceType><con:sourceStep>#TestSuite#</con:sourceStep><con:targetType>version</con:targetType><con:targetStep>#TestCase#</con:targetStep><con:upgraded>true</con:upgraded></con:transfers><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"><con:name>endpt.GetCapbilities.Get</con:name><con:sourceType>ResponseAsXml</con:sourceType><con:sourceStep>Get Capabilities</con:sourceStep><con:sourcePath>/*:WFS_Capabilities/*:OperationsMetadata/*:Operation[@name='GetCapabilities']/*:DCP/*:HTTP/*:Get/@*:href
</con:sourcePath><con:targetType>endpt.GetCapabilities.Get</con:targetType><con:targetStep>#Project#</con:targetStep><con:upgraded>true</con:upgraded></con:transfers></con:config></con:testStep><con:testStep type="goto" name="Skip Get Capabilities with parameters" id="ea5206b3-ce10-4951-9ab1-39f226c9c8b3"><con:settings/><con:config xsi:type="con:GotoStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:condition><con:name>Goto set GetCapabilities operation endpoint</con:name><con:type>XPATH</con:type><con:expression>true()</con:expression><con:targetStep>END</con:targetStep></con:condition></con:config></con:testStep><con:testStep name="Get Capabilities with parameters" type="httprequest" id="018c3051-d37d-4cdf-9daa-f0bc874dcc97">
<con:settings/>
<con:config method="GET" name="Get Capabilities with parameters" timeout="0" xsi:type="con:HttpRequest" sslKeystore="" id="359e1766-d988-41bf-8cad-b65b9ae83fb1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<con:description>Implementation note: The GetCapabilities request includes both the "AcceptVersions" and the "version" parameters. Strictly, for WFS 2.0 / OWS Common 1.1, only the "AcceptVersions" parameter is specified. However, for backward compatibility, the "version" parameter, which has been used in earlier versions of the WFS standard, is still included as a deprecated parameter in OWS Common 1.1. OWS Common 1.1.0 states: "A server may also optionally implement the old-style version negotiation mechanism so that old clients that send GetCapabilities requests containing a 'version' parameter can be served." To cover both the old and the newer version negotiation approach, the request includes both parameters. User specified parameters are dropped in this request.</con:description><con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
<con:setting id="com.eviware.soapui.impl.support.AbstractHttpRequest@follow-redirects">true</con:setting><con:setting id="com.eviware.soapui.settings.CommonSettings@entitizeProperties">false</con:setting><con:setting id="com.eviware.soapui.impl.support.AbstractHttpRequest@dump-file"/><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@bind_address"/></con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>${#Project#serviceEndpoint}</con:endpoint>
<con:request/>
<con:assertion type="Response SLA Assertion" name="30 seconds timeout" id="2946eb3a-9956-4ff0-b6f3-3638ba207951"><con:configuration><SLA>30000</SLA></con:configuration></con:assertion><con:assertion type="OwsExceptionReportAssertion" name="Expect no exception" id="56c7f2ee-d3be-4a10-8e1f-32693af823bd"/><con:assertion type="Valid HTTP Status Codes" id="5d58bd8b-7b9a-4f64-a89a-d6b7edab6bb5" name="HTTP status code 200 is returned"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="61b88fdb-aa30-4d17-a6d5-bd05f6beed91" name="No invalid characters before XML prolog"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
import de.interactive_instruments.*
if(!messageExchange.hasResponse()) {
throw new TranslatableAssertionError("TR.noDataReturned")
}
if(messageExchange.responseContent.size()>7) {
final String xmlProlog = messageExchange.responseContent.substring(0,7);
if(!xmlProlog.trim().startsWith("<")) {
throw new TranslatableAssertionError("TR.invalidXmlProlog", "prolog", xmlProlog.replaceAll("\\p{C}", "?") )
}
}</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="34afec82-c237-456c-b5a8-942dc7a47ed0" name="Expect a Capabilities root element"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.exists("/*:WFS_Capabilities", "TR.missingCapabilitiesRootElement");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="a78eddd5-3384-484f-813c-30eee0999ca3" name="Expect Capabilites in version 2.0.0"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.equals("/*:WFS_Capabilities/@version", "Capabilities version", "2.0.0");</scriptText></con:configuration></con:assertion><con:credentials><con:selectedAuthProfile>Basic</con:selectedAuthProfile><con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes><con:authType>Global HTTP Settings</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
<con:jmsPropertyConfig/>
<con:parameters>
<con:parameter>
<con:name>REQUEST</con:name>
<con:value>GetCapabilities</con:value>
<con:style>QUERY</con:style>
<con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type>
<con:default>GetCapabilities</con:default>
<con:description xsi:nil="true"/>
</con:parameter>
<con:parameter><con:name>SERVICE</con:name><con:value>${#TestSuite#service}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>ACCEPTVERSIONS</con:name><con:value>${#TestSuite#version}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>VERSION</con:name><con:value>${#TestSuite#version}</con:value><con:style>QUERY</con:style></con:parameter></con:parameters>
</con:config>
</con:testStep><con:testStep type="transfer" name="Transfer Capabilities, service and version 2" id="4592de3e-0025-469c-8f1c-a905c5dbeac2"><con:settings/><con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" useXQuery="false" entitize="false" transferChildNodes="false"><con:name>Capabilities</con:name><con:sourceType>ResponseAsXml</con:sourceType><con:sourceStep>Get Capabilities with parameters</con:sourceStep><con:targetType>capabilities</con:targetType><con:targetStep>#TestCase#</con:targetStep><con:upgraded>true</con:upgraded></con:transfers><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" transferToAll="false" entitize="false"><con:name>service</con:name><con:sourceType>service</con:sourceType><con:sourceStep>#TestSuite#</con:sourceStep><con:targetType>service</con:targetType><con:targetStep>#TestCase#</con:targetStep><con:upgraded>true</con:upgraded></con:transfers><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true"><con:name>version</con:name><con:sourceType>version</con:sourceType><con:sourceStep>#TestSuite#</con:sourceStep><con:targetType>version</con:targetType><con:targetStep>#TestCase#</con:targetStep><con:upgraded>true</con:upgraded></con:transfers><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"><con:name>endpt.GetCapabilities.Get</con:name><con:sourceType>ResponseAsXml</con:sourceType><con:sourceStep>Get Capabilities with parameters</con:sourceStep><con:sourcePath>/*:WFS_Capabilities/*:OperationsMetadata/*:Operation[@name='GetCapabilities']/*:DCP/*:HTTP/*:Get/@*:href
</con:sourcePath><con:targetType>endpt.GetCapabilities.Get</con:targetType><con:targetStep>#Project#</con:targetStep><con:upgraded>true</con:upgraded></con:transfers></con:config></con:testStep><con:testStep type="properties" name="END" id="c8ce3ab9-4f76-4953-93d8-ccd32767cd50"><con:settings/><con:config xsi:type="con:PropertiesStep" saveFirst="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:properties/></con:config></con:testStep><con:properties><con:property><con:name>capabilities</con:name><con:value/></con:property><con:property><con:name>service</con:name><con:value>WFS</con:value></con:property><con:property><con:name>version</con:name><con:value>2.0.0</con:value></con:property><con:property><con:name>qaf.ShortDescription</con:name><con:value/></con:property><con:property><con:name>qaf.Author</con:name><con:value>herrmann</con:value></con:property><con:property><con:name>qaf.CreationDate</con:name><con:value>2014-01-13T12:24:44.124+01:00</con:value></con:property><con:property><con:name>qaf.Version</con:name><con:value>1.0.0</con:value></con:property><con:property><con:name>qaf.AssociatedRequirements</con:name><con:value/></con:property><con:property><con:name>qaf.ExpectedResults</con:name><con:value/></con:property><con:property><con:name>qaf.Status</con:name><con:value>IMPLEMENTED</con:value></con:property><con:property><con:name>qaf.LastUpdateDate</con:name><con:value>2014-01-13T14:10:42.863+01:00</con:value></con:property></con:properties><con:reportParameters/></con:testCase><con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="GetCapabilities is schema valid" searchProperties="true" id="25d17081-ffd3-4ac0-a55f-ddac2bb62e3f"><con:description>Validate Capabilites response against xsi:schemaLocation.</con:description><con:settings/><con:testStep name="GetCapabilities" type="httprequest" id="c76de6b0-89c6-4097-a71e-1ea62c568736">
<con:settings/>
<con:config method="GET" name="GetCapabilities" timeout="0" xsi:type="con:HttpRequest" id="4850c8d2-28de-499e-82a8-7bf221f0ea14" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<con:description>Implementation note: The GetCapabilities request includes both the "AcceptVersions" and the "version" parameters. Strictly, for WFS 2.0 / OWS Common 1.1, only the "AcceptVersions" parameter is specified. However, for backward compatibility, the "version" parameter, which has been used in earlier versions of the WFS standard, is still included as a deprecated parameter in OWS Common 1.1. OWS Common 1.1.0 states: "A server may also optionally implement the old-style version negotiation mechanism so that old clients that send GetCapabilities requests containing a 'version' parameter can be served." To cover both the old and the newer version negotiation approach, the request includes both parameters. User specified parameters are dropped in this request.</con:description><con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
</con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>${#Project#endpt.GetCapabilities.Get}</con:endpoint>
<con:request/>
<con:assertion type="OwsExceptionReportAssertion" name="Expect no exception" id="e5ffedd2-dbba-45ff-9fc7-0ff804501a51"/><con:assertion type="Valid HTTP Status Codes" id="e11365e2-a2d0-4c80-8831-9880ea455af5" name="HTTP status code 200 is returned"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="Response SLA Assertion" id="8882b4e8-2fcd-4716-92f3-cd4d9f4d3615" name="30 seconds timeout"><con:configuration><SLA>30000</SLA></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="68a7abcd-c568-45be-9f43-5245dd47f3a6" name="xsi:schemaLocation attribute exists"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.exists("/*:WFS_Capabilities/@*:schemaLocation", "TR.missingSchemaLocation");</scriptText></con:configuration></con:assertion><con:assertion type="Simple Schema Validator" name="Response validates against schema" id="f19a8f8e-9649-4910-9073-e15c0ae2a7f9"><con:configuration><pathToXSD>xsi:schemaLocation</pathToXSD></con:configuration></con:assertion><con:credentials><con:selectedAuthProfile>Basic</con:selectedAuthProfile><con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes><con:authType>Global HTTP Settings</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
<con:jmsPropertyConfig/>
<con:parameters>
<con:parameter>
<con:name>REQUEST</con:name>
<con:value>GetCapabilities</con:value>
<con:style>QUERY</con:style>
<con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type>
<con:default>GetCapabilities</con:default>
<con:description xsi:nil="true"/>
</con:parameter>
<con:parameter><con:name>SERVICE</con:name><con:value>${#TestSuite#service}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>ACCEPTVERSIONS</con:name><con:value>${#TestSuite#version}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>VERSION</con:name><con:value>${#TestSuite#version}</con:value><con:style>QUERY</con:style></con:parameter></con:parameters>
</con:config>
</con:testStep><con:properties><con:property><con:name>qaf.ShortDescription</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.Author</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.CreationDate</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.Version</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.AssociatedRequirements</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.ExpectedResults</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.Status</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.LastUpdateDate</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property></con:properties><con:reportParameters/></con:testCase><con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Operation endpoints are available" searchProperties="true" id="75450e95-f59e-430e-8bbc-57148b51edd1"><con:description>Check if the endpoints from the Capabilites are accesable and if basic requirements are met to query the service. The first found FeatureType and the first found OutputFormat from the Capabilities are taken for one GetFeature and one DescribeFeatureType request. This test case will most likely fail if FeatureTypes or OutputFormats are listed in the (manually edited) Capabilities document which the underlying service implementation is not capabile to serve. </con:description><con:settings/><con:testStep type="properties" name="Transfer_Properties" id="bf4d4a91-1e6c-4cd9-b70c-78bd52342695"><con:settings/><con:config xsi:type="con:PropertiesStep" saveFirst="true" discardValuesOnSave="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:properties><con:property><con:name>featureTypeName</con:name><con:value xsi:nil="true"/></con:property><con:property><con:name>outputFormat</con:name><con:value xsi:nil="true"/></con:property><con:property><con:name>featureTypeNamespace</con:name><con:value xsi:nil="true"/></con:property><con:property><con:name>featureTypeNamespacePrefix</con:name><con:value xsi:nil="true"/></con:property></con:properties></con:config></con:testStep><con:testStep name="GetCapabilities" type="httprequest" id="d2d9ad0c-b008-47f3-996a-fe179954e807">
<con:settings/>
<con:config method="GET" name="GetCapabilities" timeout="0" xsi:type="con:HttpRequest" id="6fd0260e-1400-423b-849c-c8db40695594" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<con:description>Request Capabilities, expect a Capabilites document is returned which lists at least one usable FeatureType.</con:description><con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
</con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>${#Project#endpt.GetCapabilities.Get}</con:endpoint>
<con:request/>
<con:assertion type="Response SLA Assertion" name="30 seconds timeout" id="255f84a8-9493-4716-87a4-8ea47285057b"><con:configuration><SLA>30000</SLA></con:configuration></con:assertion><con:assertion type="Valid HTTP Status Codes" id="aba4a9cc-6ed7-4f96-be82-b200874b530a" name="HTTP status code is 200"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="2c543f8d-f848-43ee-b108-7a6450e28d11" name="At least one FeatureType is listed"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.exists("//*:FeatureType[1]");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="a74eed0c-dd43-491b-8128-0f50d5732f84" name="FeatureTypep prefixes can be resolved"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.notExists(" //*:FeatureType[1]/*:Name[not(namespace::*[name()=substring-before(//*:FeatureType[1]/*:Name, ':')])] ", "TR.featureTypeUnknownNamespace")</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="4c4f100c-aa79-43b4-8313-8b9bd36d36b3" name="At least one OutputFormat is listed"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.exists("//*:FeatureType[1]/*:OutputFormats/*:Format, /*:WFS_Capabilities/*:OperationsMetadata/*:Operation[@name='GetFeature']/*:Parameter[@name='outputFormat']/*:AllowedValues/*:Value", "TR.noOutputFormats");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="610cd535-5fdf-43bb-8f72-473c3b3b5299" name="Root element is WFS_Capabilties"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.exists("/*:WFS_Capabilities", "TR.missingCapabilitiesRootElement");</scriptText></con:configuration></con:assertion><con:assertion type="OwsExceptionReportAssertion" id="e5e66064-e63a-4b01-afe1-8055aeb57143" name="Service does not return an Exception report"/><con:credentials><con:selectedAuthProfile>Basic</con:selectedAuthProfile><con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes><con:authType>Global HTTP Settings</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
<con:jmsPropertyConfig/>
<con:parameters>
<con:parameter>
<con:name>REQUEST</con:name>
<con:value>GetCapabilities</con:value>
<con:style>QUERY</con:style>
<con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type>
<con:default>GetCapabilities</con:default>
<con:description xsi:nil="true"/>
</con:parameter>
<con:parameter><con:name>SERVICE</con:name><con:value>${#TestSuite#service}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>ACCEPTVERSIONS</con:name><con:value>${#TestSuite#version}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>VERSION</con:name><con:value>${#TestSuite#version}</con:value><con:style>QUERY</con:style></con:parameter></con:parameters>
</con:config>
</con:testStep><con:testStep type="transfer" name="Select one FeatureType" id="104eb115-ba5e-4add-8950-8b5c7bf51e4d"><con:description>Extract FeatureType name, namespace, namespace prefix and an OutputFormat</con:description><con:settings/><con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:transfers setNullOnMissingSource="false" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" useXQuery="false" entitize="false" transferChildNodes="false"><con:name>Extract name of FeatureType</con:name><con:sourceType>ResponseAsXml</con:sourceType><con:sourceStep>GetCapabilities</con:sourceStep><con:sourcePath>//*:FeatureType[1]/*:Name</con:sourcePath><con:targetType>featureTypeName</con:targetType><con:targetStep>Transfer_Properties</con:targetStep><con:upgraded>true</con:upgraded></con:transfers><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" transferToAll="false" transferChildNodes="false" useXQuery="false" ignoreEmpty="false" entitize="false"><con:name>Extract OutputFormat of FeatureType</con:name><con:sourceType>ResponseAsXml</con:sourceType><con:sourceStep>GetCapabilities</con:sourceStep><con:sourcePath>if (exists(//*:FeatureType[1]/*:OutputFormats/*:Format))
then //*:FeatureType[1]/*:OutputFormats/*:Format
else /*:WFS_Capabilities/*:OperationsMetadata/*:Operation[@name='GetFeature']/*:Parameter[@name='outputFormat']/*:AllowedValues/*:Value[1]</con:sourcePath><con:targetType>outputFormat</con:targetType><con:targetStep>Transfer_Properties</con:targetStep><con:upgraded>true</con:upgraded></con:transfers><con:transfers setNullOnMissingSource="false" transferTextContent="true" failOnError="true" useXQuery="false" entitize="false" transferChildNodes="false" transferToAll="false" ignoreEmpty="true"><con:name>Extract namespace of FeatureType</con:name><con:sourceType>ResponseAsXml</con:sourceType><con:sourceStep>GetCapabilities</con:sourceStep><con:sourcePath>//*:FeatureType[1]/*:Name/namespace::*[name()=substring-before(//*:FeatureType[1]/*:Name, ':')]</con:sourcePath><con:targetType>featureTypeNamespace</con:targetType><con:targetStep>Transfer_Properties</con:targetStep><con:upgraded>true</con:upgraded></con:transfers><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false"><con:name>Extract namespace prefix</con:name><con:sourceType>ResponseAsXml</con:sourceType><con:sourceStep>GetCapabilities</con:sourceStep><con:sourcePath>substring-before(//*:FeatureType[1]/*:Name, ':')</con:sourcePath><con:targetType>featureTypeNamespacePrefix</con:targetType><con:targetStep>Transfer_Properties</con:targetStep><con:upgraded>true</con:upgraded></con:transfers></con:config></con:testStep><con:testStep type="groovy" name="Activate Operations" id="daf321dc-9b15-403c-82f1-4a0730a75b4f"><con:description>Technical test step, which extracts the endpoints from the Capabilities and executes the test steps 'GetFeature' and 'DescribeFeatureType' with the first found FeatureTypeName, found in the Capabilities (previous test step 'GetCapabilities').</con:description><con:settings/><con:config><script>import de.interactive_instruments.xtf.*;
SOAPUI_I.init(log,context,testRunner);
import com.eviware.soapui.support.XmlHolder;
def ph = new ProjectHelper();
ph.getTestCase().setPropertyValue("EndpointsAvailable", "false");
def operations = ['GetFeature', 'DescribeFeatureType', 'GetPropertyValue', 'ListStoredQueries', 'DescribeStoredQueries'];
def checkedOperations = ['GetFeature', 'DescribeFeatureType'];
ph.disableTestSteps(checkedOperations);
XmlHolder capResp = ph.getTestStepResult("GetCapabilities");
for(operation in operations) {
String getEndpt=Util.getHttpGetOnlineResourceForOperation(capResp, operation);
if(getEndpt!=null) {
def testStep = testRunner.testCase.getTestStepByName(operation)
if(testStep!=null) {
testStep.setDisabled(false);
}
Util.setProjectProperty(testRunner, "endpt."+operation+".Get", getEndpt);
}
String postEndpt=Util.getHttpPostOnlineResourceForOperation(capResp, operation);
if(postEndpt!=null) {
Util.setProjectProperty(testRunner, "endpt."+operation+".Post", postEndpt);
}
}</script></con:config></con:testStep><con:testStep type="httprequest" name="GetFeature" id="a1841be8-a70e-48be-8333-7ea30f1ef0a3"><con:settings/><con:config method="GET" xsi:type="con:HttpRequest" name="GetFeature" id="bb4b1e1b-3b30-4e40-ace5-59fb047acdb2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:description>Request the first found FeatureType from the Capabilities to check if the GetFeature endpoint is available. Called by 'Activate Operations'.</con:description><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>${#Project#endpt.GetFeature.Get}</con:endpoint><con:request/><con:assertion type="OwsExceptionReportAssertion" name="Expect no exception" id="7c11a80b-954c-436d-a670-d0e190ff1ca4"/><con:assertion type="Valid HTTP Status Codes" id="c6c5d8d1-88a5-4cd4-bbf9-e4f72854185c" name="HTTP status code is 200"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="Response SLA Assertion" id="e0484ceb-1c6c-48c0-a302-e25ed761d057" name="30 seconds timeout"><con:configuration><SLA>30000</SLA></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="e4db394e-6f90-4994-bf72-33a22bdb1640" name="Root element is FeatureCollection"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.exists("/*:FeatureCollection", "TR.missingFeatureCollectionRootElement");</scriptText></con:configuration></con:assertion><con:credentials><con:selectedAuthProfile>Basic</con:selectedAuthProfile><con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes><con:authType>Global HTTP Settings</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters><con:parameter><con:name>SERVICE</con:name><con:value>${#TestSuite#service}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>VERSION</con:name><con:value>${#TestSuite#version}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>REQUEST</con:name><con:value>GetFeature</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>RESULTTYPE</con:name><con:value>hits</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>TYPENAMES</con:name><con:value>${Transfer_Properties#featureTypeName}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>OUTPUTFORMAT</con:name><con:value>${Transfer_Properties#outputFormat}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>NAMESPACES</con:name><con:value>xmlns(${Transfer_Properties#featureTypeNamespacePrefix},${Transfer_Properties#featureTypeNamespace})</con:value><con:style>QUERY</con:style></con:parameter></con:parameters></con:config></con:testStep><con:testStep type="httprequest" name="DescribeFeatureType" id="0ec06352-378e-4b66-a19f-3b9ac42f8e40"><con:settings/><con:config method="GET" xsi:type="con:HttpRequest" name="DescribeFeatureType" id="cdd5c5df-7c40-4162-a0bd-6d90a0c41ba1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:description>Request the first found OutputFormat from the Capabilities to check if the DescribeFeatureType endpoint is available. This test step will most likely fail, if the Output Format is listed in the Capabilities but not supported by the implementing service. If the service is capable to serve the requested Output Format but rejects the request, there might be an issue with the encoding of whitespaces ( %20 ) from the request. Called by 'Activate Operations'.</con:description><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:encoding xsi:nil="true"/><con:endpoint>${#Project#endpt.DescribeFeatureType.Get}</con:endpoint><con:request/><con:assertion type="OwsExceptionReportAssertion" name="Expect no exception" id="446e9584-658b-4836-bcad-551b2ef5ae28"/><con:assertion type="Valid HTTP Status Codes" id="a264f995-c9f8-46b0-9f26-f1694cba2755" name="HTTP status code is 200"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="Response SLA Assertion" id="465e2953-f07d-4631-9fbb-7824fe6ee30a" name="30 seconds timeout"><con:configuration><SLA>30000</SLA></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="73f85cd6-fcd8-4781-9afb-c04e10b89ad2" name="Root element is schema"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.exists("/*:schema", "TR.missingSchemaRootElement");</scriptText></con:configuration></con:assertion><con:credentials><con:selectedAuthProfile>Basic</con:selectedAuthProfile><con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes><con:authType>Global HTTP Settings</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters><con:parameter><con:name>SERVICE</con:name><con:value>${#TestSuite#service}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>VERSION</con:name><con:value>${#TestSuite#version}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>REQUEST</con:name><con:value>DescribeFeatureType</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>OUTPUTFORMAT</con:name><con:value>application/gml+xml; version=3.2</con:value><con:style>QUERY</con:style></con:parameter></con:parameters></con:config></con:testStep><con:testStep type="groovy" name="Set EndpointsAvailable" id="4e63e4af-084a-4de2-8035-36573276aa9d"><con:settings/><con:config><script>import de.interactive_instruments.xtf.*;
SOAPUI_I.init(log,context,testRunner);
def ph = new ProjectHelper();
ph.getTestCase().setPropertyValue("EndpointsAvailable", "true");</script></con:config></con:testStep><con:properties><con:property><con:name>qaf.ShortDescription</con:name><con:value/></con:property><con:property><con:name>qaf.Author</con:name><con:value>herrmann</con:value></con:property><con:property><con:name>qaf.CreationDate</con:name><con:value>2014-01-13T12:24:44.130+01:00</con:value></con:property><con:property><con:name>qaf.Version</con:name><con:value>1.0.0</con:value></con:property><con:property><con:name>qaf.AssociatedRequirements</con:name><con:value/></con:property><con:property><con:name>qaf.ExpectedResults</con:name><con:value/></con:property><con:property><con:name>qaf.Status</con:name><con:value>IMPLEMENTED</con:value></con:property><con:property><con:name>qaf.LastUpdateDate</con:name><con:value>2014-01-13T14:10:42.866+01:00</con:value></con:property><con:property><con:name>EndpointsAvailable</con:name><con:value>true</con:value></con:property></con:properties><con:reportParameters/></con:testCase><con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Basic checks passed and Capabilities still accessible" searchProperties="true" id="f739929b-aa73-4a10-ac57-ffdf5ee50c14"><con:description>Check if the service is still available and the Test initialisation phase has been completed successfully.</con:description><con:settings/><con:testStep name="GetCapabilities" type="httprequest" id="d19a66c9-6fad-4170-b2bf-dd11c74d5d77">
<con:settings/>
<con:config method="GET" name="GetCapabilities" timeout="0" xsi:type="con:HttpRequest" sslKeystore="" id="ca9d8cbc-47ec-49c9-92ad-5764b787ae31" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<con:description>Requests the Capabilities document to check if the service is still up and running</con:description><con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
<con:setting id="com.eviware.soapui.impl.support.AbstractHttpRequest@follow-redirects">true</con:setting><con:setting id="com.eviware.soapui.settings.CommonSettings@entitizeProperties">false</con:setting><con:setting id="com.eviware.soapui.impl.support.AbstractHttpRequest@dump-file"/><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@bind_address"/></con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>${#Project#endpt.GetCapabilities.Get}</con:endpoint>
<con:request/>
<con:assertion type="Response SLA Assertion" name="30 seconds timeout" id="18afe6c9-ff44-41c7-820d-a57ed0719dbe"><con:configuration><SLA>30000</SLA></con:configuration></con:assertion><con:assertion type="OwsExceptionReportAssertion" name="Expect no exception" id="ce43a36d-d47b-483d-b2cf-600ee0b27088"/><con:assertion type="XPath Match" name="Expect Capabilites in requested version" id="30170a15-9ae1-4538-aa07-034e63e7d371"><con:configuration><path>/*/@version</path><content>${#TestSuite#version}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="Valid HTTP Status Codes" id="ff3b3e30-971e-4258-b21c-9770d9a8c23a" name="HTTP status code is 200"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="beb1b6cc-b576-44b5-b0cf-3cbf4e2a7a76" name="Root element is WFS_Capabilties"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.exists("/*:WFS_Capabilities", "TR.missingCapabilitiesRootElement");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="8a0e365b-8897-411b-a3c6-c4fc17a5445a" name="Expect Capabilites in version 2.0.0"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.equals("/*:WFS_Capabilities/@version", "Capabilities version", "2.0.0");</scriptText></con:configuration></con:assertion><con:credentials><con:selectedAuthProfile>Basic</con:selectedAuthProfile><con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes><con:authType>Global HTTP Settings</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
<con:jmsPropertyConfig/>
<con:parameters>
<con:parameter>
<con:name>REQUEST</con:name>
<con:value>GetCapabilities</con:value>
<con:style>QUERY</con:style>
<con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type>
<con:default>GetCapabilities</con:default>
<con:description xsi:nil="true"/>
</con:parameter>
<con:parameter><con:name>SERVICE</con:name><con:value>${#TestSuite#service}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>ACCEPTVERSIONS</con:name><con:value>${#TestSuite#version}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>VERSION</con:name><con:value>${#TestSuite#version}</con:value><con:style>QUERY</con:style></con:parameter></con:parameters>
</con:config>
</con:testStep><con:testStep type="transfer" name="Transfer Capabilities, service and version" id="34c824b0-4dd3-463c-bd87-02f76fe80ee8"><con:description>Technical test step. Transfer basic data.</con:description><con:settings/><con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" useXQuery="false" entitize="false" transferChildNodes="false"><con:name>Capabilities</con:name><con:sourceType>ResponseAsXml</con:sourceType><con:sourceStep>GetCapabilities</con:sourceStep><con:targetType>capabilities</con:targetType><con:targetStep>#TestCase#</con:targetStep><con:upgraded>true</con:upgraded></con:transfers><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true"><con:name>service</con:name><con:sourceType>service</con:sourceType><con:sourceStep>#TestSuite#</con:sourceStep><con:targetType>service</con:targetType><con:targetStep>#TestCase#</con:targetStep><con:upgraded>true</con:upgraded></con:transfers><con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" useXQuery="false" entitize="false" transferChildNodes="false"><con:name>version</con:name><con:sourceType>version</con:sourceType><con:sourceStep>#TestSuite#</con:sourceStep><con:targetType>version</con:targetType><con:targetStep>#TestCase#</con:targetStep><con:upgraded>true</con:upgraded></con:transfers></con:config></con:testStep><con:testStep type="groovy" name="Check if TestSetup has been completed" id="887c0480-e925-4b8c-b72b-53906add48f4"><con:settings/><con:config><script>import de.interactive_instruments.etf.suim.*;
import de.interactive_instruments.xtf.*;
SOAPUI_I.init(log,context,testRunner);
ProjectHelper ph = new ProjectHelper();
String endpointsAvailable = ph.getTestCase("Operation endpoints are available").getPropertyValue("EndpointsAvailable")
if(!"true".equals(endpointsAvailable)) {
throw new TranslatableAssertionError("TR.initializationAndBasicChecksFailed");
}</script></con:config></con:testStep><con:properties><con:property><con:name>capabilities</con:name><con:value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>service</con:name><con:value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">WFS</con:value></con:property><con:property><con:name>version</con:name><con:value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2.0.0</con:value></con:property><con:property><con:name>qaf.ShortDescription</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.Author</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.CreationDate</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.Version</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.AssociatedRequirements</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.ExpectedResults</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.Status</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property><con:property><con:name>qaf.LastUpdateDate</con:name><con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></con:property></con:properties><con:reportParameters/></con:testCase><con:setupScript/><con:reportParameters/></con:testSuite><con:testSuite id="f2ea72a9-a16f-4d3f-9809-baa2f7902db4" name="Capabilities"><con:description>Test module for checking Capabilities related information.</con:description><con:settings/><con:runType>SEQUENTIAL</con:runType><con:testCase id="5d92da69-7bdb-4f71-8c27-71f845644727" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Conformance Classes" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""><con:description><![CDATA[The test case performs a GetCapabilities request and checks if the service supports all required Conformance Classes.
<br/>
<br/>
Relevant Requirements:
<ul>
<li>TG Requirement 61: Implementations shall meet TG Requirement 48 (conformance to [ISO 19142] 'HTTP GET' conformance class) and TG Requirement 52 (one endpoint for each INSPIRE dataset).</li>
<li>TG Requirement 62: Implementations shall conform to ISO 19142 Conformance Class 'Basic WFS'</li>
<li>TG Requirement 63: A Direct Access Download Service shall conform to ISO 19143 'Ad hoc Query' Conformance Class.</li>
<li>TG Requirement 64: A Direct Access Download Service shall conform to ISO 19143 'Resource Identification' Conformance Class.</li>
<li>TG Requirement 65: A Direct Access Download Service shall conform to ISO 19143 'Minimum Standard Filter' Conformance Class.</li>
<li>TG Requirement 66: A Direct Access Download Service shall conform to ISO 19143 'Minimum Spatial Filter' Conformance Class.</li>
<li>TG Requirement 67: A Direct Access Download Service shall conform to ISO 19143 'Minimum Temporal Filter' Conformance Class.</li>
<li>TG Requirement 68: A Direct Access Download Service shall conform to ISO 19143 'Minimum XPath' Conformance Class.</li>
</ul>
<br/>
<br/>
Source: <a href="http://inspire.ec.europa.eu/id/ats/download-wfs/3.1/wfs-direct" target="_blank">Abstract Test Case 'Conformance Classes'</a>]]></con:description><con:settings/><con:testStep type="calltestcase" name="Initialization and basic checks" id="d5b1a68b-665e-41c0-8b2c-d23e782f316a"><con:settings/><con:config xsi:type="con:RunTestCaseStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:targetTestCase>f739929b-aa73-4a10-ac57-ffdf5ee50c14</con:targetTestCase><con:properties><con:property><con:name>capabilities</con:name></con:property><con:property><con:name>service</con:name></con:property><con:property><con:name>version</con:name></con:property><con:property><con:name>qaf.ShortDescription</con:name></con:property><con:property><con:name>qaf.Author</con:name></con:property><con:property><con:name>qaf.CreationDate</con:name></con:property><con:property><con:name>qaf.Version</con:name></con:property><con:property><con:name>qaf.AssociatedRequirements</con:name></con:property><con:property><con:name>qaf.ExpectedResults</con:name></con:property><con:property><con:name>qaf.Status</con:name></con:property><con:property><con:name>qaf.LastUpdateDate</con:name></con:property></con:properties><con:returnProperties/><con:runMode>SINGLETON_AND_WAIT</con:runMode></con:config></con:testStep><con:testStep name="GetCapabilities" type="httprequest" id="004d0f9c-b6ff-401c-8f2d-b9b1fd33c9ee">
<con:settings/>
<con:config method="GET" name="GetCapabilities" timeout="0" xsi:type="con:HttpRequest" id="bc8d7083-5383-4e96-a8d9-bf1830d4f5c5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
</con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>${#Project#endpt.GetCapabilities.Get}</con:endpoint>
<con:request/>
<con:assertion type="OwsExceptionReportAssertion" name="Expect no exception" id="75bb32f5-a66b-4dab-aeaf-802273796454"/><con:assertion type="GroovyScriptAssertion" id="fabcb0fd-05db-4ecf-b7af-fe500b0111c1" name="Conformance Class 'ImplementsBasicWFS' set to 'TRUE'"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.equals("/*:WFS_Capabilities/ows:OperationsMetadata/ows:Constraint[@name='ImplementsBasicWFS']/ows:DefaultValue", "ImplementsBasicWFS", "TRUE", "TR.operationsMetadataConformanceClassNotSupported");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="ce726f85-5186-40d0-91bb-683ac8ef1c87" name="Conformance Class 'KVPEncoding' set to 'TRUE'"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.equals("/*:WFS_Capabilities/ows:OperationsMetadata/ows:Constraint[@name='KVPEncoding']/ows:DefaultValue", "KVPEncoding", "TRUE", "operationsMetadataConformanceClassNotSupported");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="861afb60-0b79-4a47-b9bb-b6ee8694d4bb" name="Conformance Class 'ImplementsAdHocQuery' set to 'TRUE'"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.equals("/*:WFS_Capabilities/fes:Filter_Capabilities/fes:Conformance/fes:Constraint[@name='ImplementsAdHocQuery']/ows:DefaultValue", "ImplementsAdHocQuery", "TRUE", "TR.filterConformanceClassNotSupported");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="6aad85b9-2e2d-4cbe-9fab-8040fd052a90" name="Conformance Class 'ImplementsResourceId' set to 'TRUE'"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.equals("/*:WFS_Capabilities/fes:Filter_Capabilities/fes:Conformance/fes:Constraint[@name='ImplementsResourceId']/ows:DefaultValue", "ImplementsResourceId", "TRUE", "TR.filterConformanceClassNotSupported");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="e80912f3-cf08-4585-9c7a-eac28ca108be" name="Conformance Class 'ImplementsMinStandardFilter' set to 'TRUE'"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.equals("/*:WFS_Capabilities/fes:Filter_Capabilities/fes:Conformance/fes:Constraint[@name='ImplementsMinStandardFilter']/ows:DefaultValue", "ImplementsMinStandardFilter", "TRUE", "TR.filterConformanceClassNotSupported");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="dbf4e08c-1857-45fd-9db6-c8b6ab61f164" name="Conformance Class 'ImplementsMinSpatialFilter' set to 'TRUE'"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.equals("/*:WFS_Capabilities/fes:Filter_Capabilities/fes:Conformance/fes:Constraint[@name='ImplementsMinSpatialFilter']/ows:DefaultValue", "ImplementsMinSpatialFilter", "TRUE", "TR.filterConformanceClassNotSupported");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="dcf84c32-8522-4612-9fed-5c16de53aa52" name="Conformance Class 'ImplementsMinTemporalFilter' set to 'TRUE'"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.equals("/*:WFS_Capabilities/fes:Filter_Capabilities/fes:Conformance/fes:Constraint[@name='ImplementsMinTemporalFilter']/ows:DefaultValue", "ImplementsMinTemporalFilter", "TRUE", "TR.filterConformanceClassNotSupported");</scriptText></con:configuration></con:assertion><con:assertion type="GroovyScriptAssertion" id="13fdab8e-1972-4cc9-93f3-2d034fd9667b" name="Conformance Class 'ImplementsMinimumXPath' set to 'TRUE'"><con:configuration><scriptText>import de.interactive_instruments.etf.suim.*
Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);
a.equals("/*:WFS_Capabilities/fes:Filter_Capabilities/fes:Conformance/fes:Constraint[@name='ImplementsMinimumXPath']/ows:DefaultValue", "ImplementsMinimumXPath", "TRUE", "TR.filterConformanceClassNotSupported");</scriptText></con:configuration></con:assertion><con:credentials><con:selectedAuthProfile>Basic</con:selectedAuthProfile><con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes><con:authType>Global HTTP Settings</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
<con:jmsPropertyConfig/>
<con:parameters>
<con:parameter>
<con:name>request</con:name>
<con:value>GetCapabilities</con:value>
<con:style>QUERY</con:style>
<con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type>
<con:default>GetCapabilities</con:default>
<con:description xsi:nil="true"/>
</con:parameter>
<con:parameter><con:name>ACCEPTVERSIONS</con:name><con:value>${#TestSuite#version}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>service</con:name><con:value>${#TestSuite#service}</con:value><con:style>QUERY</con:style></con:parameter><con:parameter><con:name>VERSION</con:name><con:value>${#TestSuite#version}</con:value></con:parameter></con:parameters>
</con:config>
</con:testStep><con:properties/></con:testCase><con:properties><con:property><con:name>SERVICE</con:name><con:value>WFS</con:value></con:property><con:property><con:name>VERSION</con:name><con:value>2.0.0</con:value></con:property></con:properties></con:testSuite>
<con:properties>
<con:property><con:name>excludeFeatureTypes</con:name><con:value/></con:property>
<con:property><con:name>authUser</con:name><con:value/></con:property><con:property><con:name>authPwd</con:name><con:value/></con:property><con:property><con:name>etf.ignore.properties</con:name><con:value>excludeFeatureTypes, srsnamelist, blacklisted.outputFormats, authUser, authPwd, authMethod, FirstFeature, FirstFeatureId, GetFeatureURL, featureTypeList, datasetIdentifiersList, featureTypeList, FirstFeatureTypeName, testIntensive, endpt.GetFeature.Get, endpt.DescribeFeatureType.Get, endpt.GetFeature.Post, endpt.DescribeFeatureType.Post, endpt.GetPropertyValue.Get, endpt.GetPropertyValue.Post, endpt.ListStoredQueries.Get, endpt.ListStoredQueries.Post, endpt.DescribeStoredQueries.Get, endpt.DescribeStoredQueries.Post, etf.translation.template.collection.id, etf.tag.ids, etf.author, etf.version, etf.last.editor, etf.reference, etf.creation.date</con:value></con:property><con:property><con:name>authMethod</con:name><con:value>basic</con:value></con:property><con:property><con:name>FirstFeatureTypeName</con:name><con:value/></con:property><con:property><con:name>testIntensive</con:name><con:value/></con:property><con:property><con:name>endpt.GetCapabilities.Get</con:name><con:value/></con:property><con:property><con:name>endpt.GetFeature.Get</con:name><con:value/></con:property><con:property><con:name>endpt.DescribeFeatureType.Get</con:name><con:value/></con:property><con:property><con:name>endpt.GetFeature.Post</con:name><con:value/></con:property><con:property><con:name>endpt.DescribeFeatureType.Post</con:name><con:value/></con:property><con:property><con:name>endpt.GetPropertyValue.Get</con:name><con:value/></con:property><con:property><con:name>endpt.GetPropertyValue.Post</con:name><con:value/></con:property><con:property><con:name>endpt.ListStoredQueries.Get</con:name><con:value/></con:property><con:property><con:name>endpt.ListStoredQueries.Post</con:name><con:value/></con:property><con:property><con:name>endpt.DescribeStoredQueries.Get</con:name><con:value/></con:property><con:property><con:name>endpt.DescribeStoredQueries.Post</con:name><con:value/></con:property><con:property><con:name>blacklisted.outputFormats</con:name><con:value>text/xml; subtype=gml/3.1.1, application/gml+xml; version=3.1</con:value></con:property><con:property><con:name>etf.tag.ids</con:name><con:value>EIDe51620af-bcf5-4719-ab0e-ef6226a572fa</con:value></con:property><con:property><con:name>etf.translation.template.collection.id</con:name><con:value>EIDfadd4929-fa60-4781-b658-703bbfe3f4eb</con:value></con:property><con:property><con:name>etf.author</con:name><con:value>interactive instruments GmbH</con:value></con:property><con:property><con:name>etf.version</con:name><con:value>1.0.4</con:value></con:property><con:property><con:name>etf.last.editor</con:name><con:value>Consortium Bilbomatica, Guadaltel & Geograma</con:value></con:property><con:property><con:name>etf.reference</con:name><con:value>https://github.com/inspire-eu-validation/ets-repository/tree/master/service/ds-wfs-direct-soapui-project.xml</con:value></con:property><con:property><con:name>etf.creation.date</con:name><con:value>2017-05-15T00:00:00</con:value></con:property><con:property><con:name>etf.supported.test.object.type.ids</con:name><con:value>EID9b6ef734-981e-4d60-aa81-d6730a1c6389</con:value></con:property><con:property><con:name>etf.last.update.date</con:name><con:value>2020-05-295T09:47:00</con:value></con:property><con:property><con:name>etf.dependency.ids</con:name><con:value>EID18d66578-6ad6-3d3d-a090-0cf885c61de1</con:value></con:property><con:property><con:name>serviceEndpoint</con:name><con:value/></con:property></con:properties>
<con:afterLoadScript>
</con:afterLoadScript>
<con:wssContainer/>
<con:oAuth2ProfileContainer/><con:oAuth1ProfileContainer/><con:afterRunScript>import com.eviware.soapui.impl.wsdl.teststeps.HttpTestRequestStep;
import com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep
import com.eviware.soapui.model.testsuite.TestStepResult;
// Get the "requirements" test step
def requirements = project.getTestSuiteByName("TestSetup")?.
getTestCaseByName("Requirements")?.getTestStepByName("Requirements");
log.info("Results: ");
for( testSuiteR in runner?.getResults() ) {
for( testCaseR in testSuiteR?.getResults() ) {
for( testStepR in testCaseR?.getResults() ) {
if(testStepR.getStatus()!=TestStepResult.TestStepStatus.OK) {
if (testStepR.testStep instanceof HttpTestRequestStep || testStepR.testStep instanceof RestTestRequestStep) {
testStepR.testStep.testRequest.assertionList.each{
// Extract ID which is seperated with a whitespace and a doublecolon
String assertionName = it.name;
if (assertionName.indexOf(": ") > -1) {
String id = assertionName?.substring( 0, assertionName.indexOf(": ") );
if(it.valid) {
log.info("Assertion "+assertionName+" passed");
}else if(it.failed) {
log.error("Assertion "+assertionName+" failed with error:");
log.error(" - "+it.getErrors()[0].getMessage());
log.error(" - Requirements:");
// Todo: Save the requirements as an object in a map
requirements.getPropertyList().each {
log.info(it.getName())
if(it.getName().contains(id)) {
log.error(" - "+it.getName()+" :" );
log.error(" "+it.getValue());
}
}
}else{
log.warn("Assertion "+assertionName+" is deactivated");
}
}
}
}
}
}
}
}
</con:afterRunScript>
<con:sensitiveInformation/></con:soapui-project>