preliminary check for multi-valued enumerations and some assert cleanup
This commit is contained in:
parent
0784c2e693
commit
e9e6eecd1f
Binary file not shown.
|
@ -436,11 +436,11 @@
|
||||||
|
|
||||||
<Request
|
<Request
|
||||||
TestDescription="Support Multi Value Lookups (2)"
|
TestDescription="Support Multi Value Lookups (2)"
|
||||||
RequirementId="REQ-WA103-QM8"
|
RequirementId="REQ-WA103-QM8.2"
|
||||||
MetallicLevel="Bronze"
|
MetallicLevel="Bronze"
|
||||||
Capability="Query functions"
|
Capability="Query functions"
|
||||||
WebAPIReference="2.4.10"
|
WebAPIReference="2.4.10"
|
||||||
OutputFile="REQ-WA103-QM8_Enum_MVL_Multi.json"
|
OutputFile="REQ-WA103-QM8.2.json"
|
||||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&$filter=*Parameter_MultipleValueLookupField* ne null and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue1* and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue2**Parameter_RequiredParameters*"
|
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&$filter=*Parameter_MultipleValueLookupField* ne null and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue1* and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue2**Parameter_RequiredParameters*"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
|
@ -188,4 +188,12 @@ Feature: Web API Server 1.0.2 Certification
|
||||||
Then the server responds with a status code of 200
|
Then the server responds with a status code of 200
|
||||||
And the response is valid JSON
|
And the response is valid JSON
|
||||||
And the response has results
|
And the response has results
|
||||||
And Data in "Parameter_SingleValueLookupField" has "Parameter_SingleLookupValue"
|
And Single Valued Enumeration Data in "Parameter_SingleValueLookupField" has "Parameter_SingleLookupValue"
|
||||||
|
|
||||||
|
@REQ-WA103-QM8 @bronze @2.4.10 @queryability-endorsement
|
||||||
|
Scenario: Support Multi Value Lookups
|
||||||
|
When a GET request is made to the resolved Url in "REQ-WA103-QM8"
|
||||||
|
Then the server responds with a status code of 200
|
||||||
|
And the response is valid JSON
|
||||||
|
And the response has results
|
||||||
|
And Multiple Valued Enumeration Data in "Parameter_MultipleValueLookupField" has "Parameter_MultipleLookupValue1"
|
|
@ -1,6 +1,7 @@
|
||||||
package org.reso.certification.stepdefs;
|
package org.reso.certification.stepdefs;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import com.fasterxml.jackson.databind.node.POJONode;
|
import com.fasterxml.jackson.databind.node.POJONode;
|
||||||
import io.cucumber.java8.En;
|
import io.cucumber.java8.En;
|
||||||
import io.restassured.response.Response;
|
import io.restassured.response.Response;
|
||||||
|
@ -77,10 +78,12 @@ public class WebAPIServer_1_0_2 implements En {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Resets the local instance state used during test time. TODO: refactor into collection of AtomicReference<T>
|
* Resets the local instance state used during test time.
|
||||||
|
* NOTE: you should add any local variables you need reset between tests here.
|
||||||
|
*
|
||||||
|
* TODO: refactor into collection of AtomicReference<T>
|
||||||
*/
|
*/
|
||||||
Runnable resetState = () -> {
|
Runnable resetRequestState = () -> {
|
||||||
commander.set(null);
|
|
||||||
oDataRawResponse.set(null);
|
oDataRawResponse.set(null);
|
||||||
request.set(null);
|
request.set(null);
|
||||||
responseCode.set(null);
|
responseCode.set(null);
|
||||||
|
@ -105,6 +108,7 @@ public class WebAPIServer_1_0_2 implements En {
|
||||||
oDataRawResponse.set(rawRequest.get().execute());
|
oDataRawResponse.set(rawRequest.get().execute());
|
||||||
responseData.set(Utils.convertInputStreamToString(oDataRawResponse.get().getRawResponse()));
|
responseData.set(Utils.convertInputStreamToString(oDataRawResponse.get().getRawResponse()));
|
||||||
serverODataHeaderVersion.set(oDataRawResponse.get().getHeader(HEADER_ODATA_VERSION).toString());
|
serverODataHeaderVersion.set(oDataRawResponse.get().getHeader(HEADER_ODATA_VERSION).toString());
|
||||||
|
responseCode.set(oDataRawResponse.get().getStatusCode());
|
||||||
LOG.info("Request succeeded..." + responseData.get().getBytes().length + " bytes received.");
|
LOG.info("Request succeeded..." + responseData.get().getBytes().length + " bytes received.");
|
||||||
} catch (ODataClientErrorException cex) {
|
} catch (ODataClientErrorException cex) {
|
||||||
LOG.debug("OData Client Error Exception caught. Check subsequent test output for asserted conditions...");
|
LOG.debug("OData Client Error Exception caught. Check subsequent test output for asserted conditions...");
|
||||||
|
@ -120,11 +124,6 @@ public class WebAPIServer_1_0_2 implements En {
|
||||||
* Background
|
* Background
|
||||||
*/
|
*/
|
||||||
Given("^a RESOScript file was provided$", () -> {
|
Given("^a RESOScript file was provided$", () -> {
|
||||||
/* NOTE: this item is the first step in the Background */
|
|
||||||
|
|
||||||
//Reset ALL local state variables prior to each run.
|
|
||||||
resetState.run();
|
|
||||||
|
|
||||||
if (pathToRESOScript == null) {
|
if (pathToRESOScript == null) {
|
||||||
pathToRESOScript = System.getProperty("pathToRESOScript");
|
pathToRESOScript = System.getProperty("pathToRESOScript");
|
||||||
}
|
}
|
||||||
|
@ -300,6 +299,9 @@ public class WebAPIServer_1_0_2 implements En {
|
||||||
* GET request by requirementId (see generic.resoscript)
|
* GET request by requirementId (see generic.resoscript)
|
||||||
*/
|
*/
|
||||||
When("^a GET request is made to the resolved Url in \"([^\"]*)\"$", (String requirementId) -> {
|
When("^a GET request is made to the resolved Url in \"([^\"]*)\"$", (String requirementId) -> {
|
||||||
|
//reset local state each time a get request is run
|
||||||
|
resetRequestState.run();
|
||||||
|
|
||||||
URI requestUri = Commander.prepareURI(Settings.resolveParameters(settings.getRequests().get(requirementId), settings).getUrl());
|
URI requestUri = Commander.prepareURI(Settings.resolveParameters(settings.getRequests().get(requirementId), settings).getUrl());
|
||||||
executeGetRequest.apply(requestUri);
|
executeGetRequest.apply(requestUri);
|
||||||
});
|
});
|
||||||
|
@ -308,12 +310,9 @@ public class WebAPIServer_1_0_2 implements En {
|
||||||
* Assert response code
|
* Assert response code
|
||||||
*/
|
*/
|
||||||
Then("^the server responds with a status code of (\\d+)$", (Integer assertedResponseCode) -> {
|
Then("^the server responds with a status code of (\\d+)$", (Integer assertedResponseCode) -> {
|
||||||
responseCode.set(oDataClientErrorException.get() != null
|
LOG.info("Server Response Code: " + responseCode + ", " + "Asserted Response Code: " + assertedResponseCode);
|
||||||
? oDataClientErrorException.get().getStatusLine().getStatusCode()
|
assertTrue(responseCode.get() > 0 && assertedResponseCode > 0);
|
||||||
: oDataRawResponse.get().getStatusCode());
|
assertEquals(assertedResponseCode.intValue(), responseCode.get().intValue());
|
||||||
|
|
||||||
LOG.info("Asserted Response Code: " + assertedResponseCode + ", " + "Server Response Code: " + responseCode);
|
|
||||||
assertEquals(responseCode.get().intValue(), assertedResponseCode.intValue());
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -510,9 +509,9 @@ public class WebAPIServer_1_0_2 implements En {
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Lookups
|
* Single-Valued enumerations
|
||||||
*/
|
*/
|
||||||
And("^Data in \"([^\"]*)\" has \"([^\"]*)\"$", (String parameterFieldName, String parameterAssertedValue) -> {
|
And("^Single Valued Enumeration Data in \"([^\"]*)\" has \"([^\"]*)\"$", (String parameterFieldName, String parameterAssertedValue) -> {
|
||||||
String fieldName = Settings.resolveParametersString(parameterFieldName, settings);
|
String fieldName = Settings.resolveParametersString(parameterFieldName, settings);
|
||||||
AtomicReference<String> fieldValue = new AtomicReference<>();
|
AtomicReference<String> fieldValue = new AtomicReference<>();
|
||||||
AtomicReference<String> assertedValue = new AtomicReference<>();
|
AtomicReference<String> assertedValue = new AtomicReference<>();
|
||||||
|
@ -529,6 +528,26 @@ public class WebAPIServer_1_0_2 implements En {
|
||||||
assertTrue(result.get());
|
assertTrue(result.get());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
And("^Multiple Valued Enumeration Data in \"([^\"]*)\" has \"([^\"]*)\"$", (String parameterFieldName, String parameterAssertedValue) -> {
|
||||||
|
String fieldName = Settings.resolveParametersString(parameterFieldName, settings);
|
||||||
|
AtomicReference<String> fieldValue = new AtomicReference<>();
|
||||||
|
AtomicReference<String> assertedValue = new AtomicReference<>();
|
||||||
|
|
||||||
|
AtomicBoolean result = new AtomicBoolean(false);
|
||||||
|
|
||||||
|
assertedValue.set(Settings.resolveParametersString(parameterAssertedValue, settings));
|
||||||
|
LOG.info("Asserted value is: " + assertedValue.get());
|
||||||
|
|
||||||
|
from(responseData.get()).getList(JSON_VALUE_PATH, ObjectNode.class).forEach(item -> {
|
||||||
|
fieldValue.set(item.get(fieldName).toString());
|
||||||
|
result.set(fieldValue.get().contains(assertedValue.get()));
|
||||||
|
LOG.info("Assert True: " + fieldValue.get() + " has " + assertedValue.get() + " ==> " + result.get());
|
||||||
|
assertTrue(result.get());
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue