Removed testing and stats from the Commander jarfile during runRESOScript option, and updated RESOScript templates

This commit is contained in:
Joshua Darnell 2020-03-18 16:00:13 -07:00
parent cccd671c99
commit a788bf0309
11 changed files with 243 additions and 997 deletions

View File

@ -255,7 +255,7 @@ For those wanting more information, a `log4j.properties` file may be created (as
use the DEBUG build of the application located in `/build/libs/` identified by `-DEBUG` in the Commander jar's file name. use the DEBUG build of the application located in `/build/libs/` identified by `-DEBUG` in the Commander jar's file name.
RESOScript files contain zero or more Settings, Parameters, and Requests. For example: RESOScript files contain zero or more Settings, Parameters, and Requests. For example:
``` ```xml
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<OutputScript> <OutputScript>
<ClientSettings> <ClientSettings>
@ -287,8 +287,7 @@ The XML DTD for this schema is as follows:
<!DOCTYPE OutputScript [ <!DOCTYPE OutputScript [
<!ELEMENT OutputScript (RESOScriptVersion|ClientSettings|Parameters|Requests)*> <!ELEMENT OutputScript (RESOScriptVersion|ClientSettings|Parameters|Requests)*>
<!ELEMENT RESOScriptVersion (#PCDATA)> <!ELEMENT RESOScriptVersion (#PCDATA)>
<!ELEMENT ClientSettings <!ELEMENT ClientSettings (WebAPIURI|AuthenticationType|BearerToken|ClientIdentification|ClientSecret|TokenURI|ClientScope)*>
(RESOScriptVersion|WebAPIURI|AuthenticationType|BearerToken|ClientIdentification|ClientSecret|TokenURI|ClientScope)*>
<!ELEMENT WebAPIURI (#PCDATA)> <!ELEMENT WebAPIURI (#PCDATA)>
<!ELEMENT AuthenticationType (#PCDATA)> <!ELEMENT AuthenticationType (#PCDATA)>
<!ELEMENT BearerToken (#PCDATA)> <!ELEMENT BearerToken (#PCDATA)>
@ -304,13 +303,9 @@ The XML DTD for this schema is as follows:
<!ELEMENT Requests (Request)*> <!ELEMENT Requests (Request)*>
<!ELEMENT Request (#PCDATA)> <!ELEMENT Request (#PCDATA)>
<!ATTLIST Request <!ATTLIST Request
Capability CDATA #REQUIRED
MetallicLevel CDATA #REQUIRED
OutputFile CDATA #REQUIRED OutputFile CDATA #REQUIRED
RequirementId CDATA #REQUIRED RequestId CDATA #REQUIRED
TestDescription CDATA #REQUIRED Url CDATA #REQUIRED>
Url CDATA #REQUIRED
WebAPIReference CDATA #REQUIRED>
]> ]>
``` ```

Binary file not shown.

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<!-- <!--
>>> To be used as a template for Web API Server 1.0.2 Gold Certification <<< >>> To be used as a template for Web API Server 1.0.2 Gold Certification <<<
NOTES: NOTES:
@ -12,15 +12,10 @@
Contact josh@reso.org with further questions. Contact josh@reso.org with further questions.
--> -->
<!--
############################################################
XML DTD - Must come first
############################################################-->
<!DOCTYPE OutputScript [ <!DOCTYPE OutputScript [
<!ELEMENT OutputScript (RESOScriptVersion|ClientSettings|Parameters|Requests)*> <!ELEMENT OutputScript (RESOScriptVersion|ClientSettings|Parameters|Requests)*>
<!ELEMENT RESOScriptVersion (#PCDATA)> <!ELEMENT RESOScriptVersion (#PCDATA)>
<!ELEMENT ClientSettings <!ELEMENT ClientSettings (WebAPIURI|AuthenticationType|BearerToken|ClientIdentification|ClientSecret|TokenURI|ClientScope)*>
(RESOScriptVersion|WebAPIURI|AuthenticationType|BearerToken|ClientIdentification|ClientSecret|TokenURI|ClientScope)*>
<!ELEMENT WebAPIURI (#PCDATA)> <!ELEMENT WebAPIURI (#PCDATA)>
<!ELEMENT AuthenticationType (#PCDATA)> <!ELEMENT AuthenticationType (#PCDATA)>
<!ELEMENT BearerToken (#PCDATA)> <!ELEMENT BearerToken (#PCDATA)>
@ -36,29 +31,11 @@
<!ELEMENT Requests (Request)*> <!ELEMENT Requests (Request)*>
<!ELEMENT Request (#PCDATA)> <!ELEMENT Request (#PCDATA)>
<!ATTLIST Request <!ATTLIST Request
Capability CDATA #REQUIRED
MetallicLevel CDATA #REQUIRED
OutputFile CDATA #REQUIRED OutputFile CDATA #REQUIRED
RequirementId CDATA #REQUIRED RequestId CDATA #REQUIRED
TestDescription CDATA #REQUIRED Url CDATA #REQUIRED>
Url CDATA #REQUIRED
WebAPIReference CDATA #REQUIRED>
]> ]>
<!--
############################################################
TODO: this document will be updated with language
matching the OAuth 2.0 Specification and ClientSettings
will be removed.
See:
https://tools.ietf.org/html/rfc8252
Watch for subsequent changes to this file.
ClientSettings will be converted to Parameters forthwith.
############################################################-->
<OutputScript> <OutputScript>
<!-- <!--
@ -67,7 +44,7 @@
############################################################--> ############################################################-->
<!-- The current version of this RESOScript --> <!-- The current version of this RESOScript -->
<RESOScriptVersion>1.0.7</RESOScriptVersion> <RESOScriptVersion>1.1.0</RESOScriptVersion>
<!-- <!--
@ -261,554 +238,334 @@
Requests Section - Queries used during testing, Requests Section - Queries used during testing,
DO NOT CHANGE DO NOT CHANGE
############################################################--> ############################################################-->
<Requests> <Requests>
<Request <Request
TestDescription="Metadata Endpoint" RequestId="REQ-WA103-END3"
RequirementId="REQ-WA103-END3"
MetallicLevel="Core"
Capability="Core"
WebAPIReference=""
OutputFile="REQ-WA103-END3.metadata.xml" OutputFile="REQ-WA103-END3.metadata.xml"
Url="*ClientSettings_WebAPIURI*/$metadata*Parameter_OptionalMetadataFormatParameter*" Url="*ClientSettings_WebAPIURI*/$metadata*Parameter_OptionalMetadataFormatParameter*"
/> />
<Request <Request
TestDescription="Data System" RequestId="REQ-WA103-END2"
RequirementId="REQ-WA103-END2"
MetallicLevel="Core"
Capability="Core Support"
WebAPIReference=""
OutputFile="REQ-WA103-END2.datasystem.json" OutputFile="REQ-WA103-END2.datasystem.json"
Url="*Parameter_EndpointDataSystem*" Url="*Parameter_EndpointDataSystem*"
/> />
<Request <Request
TestDescription="Search Parameters: Select KeyOrKeyNumeric Field" RequestId="REQ-WA103-QR1"
RequirementId="REQ-WA103-QR1"
MetallicLevel="Core"
Capability="Query functions"
WebAPIReference="2.4.1"
OutputFile="REQ-WA103-QR1.json" OutputFile="REQ-WA103-QR1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*(*Parameter_KeyOrKeyNumericValue*)?$select=*Parameter_KeyOrKeyNumericField*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*(*Parameter_KeyOrKeyNumericValue*)?$select=*Parameter_KeyOrKeyNumericField*"
/> />
<Request <Request
TestDescription="Query Support: $select" RequestId="REQ-WA103-QR3"
RequirementId="REQ-WA103-QR3"
MetallicLevel="Core"
Capability="Query functions"
WebAPIReference="2.4.2"
OutputFile="REQ-WA103-QR3.json" OutputFile="REQ-WA103-QR3.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $top" RequestId="REQ-WA103-QR4"
RequirementId="REQ-WA103-QR4"
MetallicLevel="Core"
Capability="Client paging ($top, $skip)"
WebAPIReference="2.4.2"
OutputFile="REQ-WA103-QR4.json" OutputFile="REQ-WA103-QR4.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $skip" RequestId="REQ-WA103-QR5"
RequirementId="REQ-WA103-QR5"
MetallicLevel="Core"
Capability="Client pageability ($top, $skip)"
WebAPIReference="2.4.2"
OutputFile="REQ-WA103-QR5.json" OutputFile="REQ-WA103-QR5.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $select case-sensitivity. Expect 400 response on OData 4.0" RequestId="REQ-WA103-QO1.1"
RequirementId="REQ-WA103-QO1.1"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO1.1.json" OutputFile="REQ-WA103-QO1.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$SeLeCt=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$SeLeCt=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter case-sensitivity. Expect 400 response on OData 4.0" RequestId="REQ-WA103-QO1.2"
RequirementId="REQ-WA103-QO1.2"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO1.2.json" OutputFile="REQ-WA103-QO1.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$FiLtEr=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$FiLtEr=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $orderby asc case-sensitivity. Expect 400 response on OData 4.0" RequestId="REQ-WA103-QO1.3"
RequirementId="REQ-WA103-QO1.3"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO1.3.json" OutputFile="REQ-WA103-QO1.3.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*&amp;$OrDeRbY=*Parameter_FilterIntegerField* asc" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*&amp;$OrDeRbY=*Parameter_FilterIntegerField* asc"
/> />
<Request <Request
TestDescription="Query Support: $orderby desc case-sensitivity. Expect 400 response on OData 4.0" RequestId="REQ-WA103-QO1.4"
RequirementId="REQ-WA103-QO1.4"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO1.4.json" OutputFile="REQ-WA103-QO1.4.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*&amp;$oRdErBy=*Parameter_FilterIntegerField* desc" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*&amp;$oRdErBy=*Parameter_FilterIntegerField* desc"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: eq (equal)" RequestId="REQ-WA103-QO2"
RequirementId="REQ-WA103-QO2"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO2" OutputFile="REQ-WA103-QO2"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: ne (not equal)" RequestId="REQ-WA103-QO3"
RequirementId="REQ-WA103-QO3"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO3" OutputFile="REQ-WA103-QO3"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ne *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ne *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: gt (greater than)" RequestId="REQ-WA103-QO4"
RequirementId="REQ-WA103-QO4"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO4" OutputFile="REQ-WA103-QO4"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: ge (greater or equal)" RequestId="REQ-WA103-QO5"
RequirementId="REQ-WA103-QO5"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO5.json" OutputFile="REQ-WA103-QO5.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ge *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ge *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: lt (less than)" RequestId="REQ-WA103-QO6"
RequirementId="REQ-WA103-QO6"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO6.json" OutputFile="REQ-WA103-QO6.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: le (less or equal)" RequestId="REQ-WA103-QO7"
RequirementId="REQ-WA103-QO7"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO7.json" OutputFile="REQ-WA103-QO7.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* le *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* le *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: and" RequestId="REQ-WA103-QO9"
RequirementId="REQ-WA103-QO9"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO9.json" OutputFile="REQ-WA103-QO9.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow* and *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueHigh**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow* and *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueHigh**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: or" RequestId="REQ-WA103-QO10"
RequirementId="REQ-WA103-QO10"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO10.json" OutputFile="REQ-WA103-QO10.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueHigh* or *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueHigh* or *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer: not operator" RequestId="REQ-WA103-QO11"
RequirementId="REQ-WA103-QO11"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO11.json" OutputFile="REQ-WA103-QO11.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and not(*Parameter_FilterNotField* le *Parameter_FilterNotValue*)*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and not(*Parameter_FilterNotField* le *Parameter_FilterNotValue*)*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date portion of EdmDateTimeOffset field is less than EdmDate value." RequestId="REQ-WA103-QO25"
RequirementId="REQ-WA103-QO25"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO25.json" OutputFile="REQ-WA103-QO25.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and date(*Parameter_TimestampField*) gt *Parameter_DateValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and date(*Parameter_TimestampField*) gt *Parameter_DateValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Time portion of EdmDateTimeOffset field is less than EdmTime value." RequestId="REQ-WA103-QO26"
RequirementId="REQ-WA103-QO26"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO26.json" OutputFile="REQ-WA103-QO26.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and time(*Parameter_TimestampField*) lt *Parameter_TimeValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and time(*Parameter_TimestampField*) lt *Parameter_TimeValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: EdmDateTimeOffset field is less than EdmDateTimeOffset value." RequestId="REQ-WA103-QO26.2"
RequirementId="REQ-WA103-QO26.2"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO26.2.json" OutputFile="REQ-WA103-QO26.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and *Parameter_TimestampField* lt *Parameter_DateTimeValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and *Parameter_TimestampField* lt *Parameter_DateTimeValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: DateTimeOffset le now()" RequestId="REQ-WA103-QO27"
RequirementId="REQ-WA103-QO27"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO27.json" OutputFile="REQ-WA103-QO27.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and *Parameter_TimestampField* le now()*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and *Parameter_TimestampField* le now()*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Support Single Value Lookups" RequestId="REQ-WA103-QM7"
RequirementId="REQ-WA103-QM7"
MetallicLevel="Bronze"
Capability="Query functions"
WebAPIReference="2.4.9"
OutputFile="REQ-WA103-QM7.json" OutputFile="REQ-WA103-QM7.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_SingleValueLookupField*&amp;$filter=*Parameter_SingleValueLookupField* ne null and *Parameter_SingleValueLookupField* has *Parameter_SingleValueLookupValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_SingleValueLookupField*&amp;$filter=*Parameter_SingleValueLookupField* ne null and *Parameter_SingleValueLookupField* has *Parameter_SingleValueLookupValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Support Multi Value Lookups" RequestId="REQ-WA103-QM8"
RequirementId="REQ-WA103-QM8"
MetallicLevel="Bronze"
Capability="Query functions"
WebAPIReference="2.4.10"
OutputFile="REQ-WA103-QM8.json" OutputFile="REQ-WA103-QM8.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&amp;$filter=*Parameter_MultipleValueLookupField* ne null and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue1**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&amp;$filter=*Parameter_MultipleValueLookupField* ne null and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue1**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Support Multi Value Lookups (2)" RequestId="REQ-WA103-QM8.2"
RequirementId="REQ-WA103-QM8.2"
MetallicLevel="Bronze"
Capability="Query functions"
WebAPIReference="2.4.10"
OutputFile="REQ-WA103-QM8.2.json" OutputFile="REQ-WA103-QM8.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&amp;$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*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&amp;$filter=*Parameter_MultipleValueLookupField* ne null and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue1* and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue2**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Comparison: has" RequestId="REQ-WA103-QO8"
RequirementId="REQ-WA103-QO8"
MetallicLevel="Bronze"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO8.json" OutputFile="REQ-WA103-QO8.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterHasField* ne null and *Parameter_FilterHasField* has *Parameter_FilterHasValueLookupValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterHasField* ne null and *Parameter_FilterHasField* has *Parameter_FilterHasValueLookupValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $orderby asc filtered" RequestId="REQ-WA103-QO28.1"
RequirementId="REQ-WA103-QO28.1"
MetallicLevel="Bronze"
Capability="Sortability ($orderby)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO28.1.json" OutputFile="REQ-WA103-QO28.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* asc&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* asc&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $orderby asc no filter" RequestId="REQ-WA103-QO28.2"
RequirementId="REQ-WA103-QO28.2"
MetallicLevel="Bronze"
Capability="Sortability ($orderby)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO28.2.json" OutputFile="REQ-WA103-QO28.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* asc" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* asc"
/> />
<Request <Request
TestDescription="Query Support: $orderby desc filtered" RequestId="REQ-WA103-QO28.3"
RequirementId="REQ-WA103-QO28.3"
MetallicLevel="Bronze"
Capability="Sortability ($orderby)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO28.3.json" OutputFile="REQ-WA103-QO28.3.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* desc&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* desc&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $orderby desc no filter" RequestId="REQ-WA103-QO28.4"
RequirementId="REQ-WA103-QO28.4"
MetallicLevel="Bronze"
Capability="Sortability ($orderby)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO28.4.json" OutputFile="REQ-WA103-QO28.4.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* desc" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* desc"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: year" RequestId="REQ-WA103-QO18.1"
RequirementId="REQ-WA103-QO18.1"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO18.1.json" OutputFile="REQ-WA103-QO18.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and year(*Parameter_DateField*) eq *Parameter_YearValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and year(*Parameter_DateField*) eq *Parameter_YearValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Time: year" RequestId="REQ-WA103-QO18.2"
RequirementId="REQ-WA103-QO18.2"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO18.2.json" OutputFile="REQ-WA103-QO18.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and year(*Parameter_TimestampField*) eq *Parameter_YearValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and year(*Parameter_TimestampField*) eq *Parameter_YearValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: month" RequestId="REQ-WA103-QO19.1"
RequirementId="REQ-WA103-QO19.1"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO19.1.json" OutputFile="REQ-WA103-QO19.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and month(*Parameter_DateField*) eq *Parameter_MonthValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and month(*Parameter_DateField*) eq *Parameter_MonthValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Time: month" RequestId="REQ-WA103-QO19.2"
RequirementId="REQ-WA103-QO19.2"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO19.2.json" OutputFile="REQ-WA103-QO19.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and month(*Parameter_TimestampField*) eq *Parameter_MonthValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and month(*Parameter_TimestampField*) eq *Parameter_MonthValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: day" RequestId="REQ-WA103-QO20.1"
RequirementId="REQ-WA103-QO20.1"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO20.1.json" OutputFile="REQ-WA103-QO20.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and day(*Parameter_DateField*) eq *Parameter_DayValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and day(*Parameter_DateField*) eq *Parameter_DayValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Time: day" RequestId="REQ-WA103-QO20.2"
RequirementId="REQ-WA103-QO20.2"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO20.2.json" OutputFile="REQ-WA103-QO20.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and day(*Parameter_TimestampField*) eq *Parameter_DayValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and day(*Parameter_TimestampField*) eq *Parameter_DayValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: hour" RequestId="REQ-WA103-QO21"
RequirementId="REQ-WA103-QO21"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO21.json" OutputFile="REQ-WA103-QO21.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and hour(*Parameter_TimestampField*) eq *Parameter_HourValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and hour(*Parameter_TimestampField*) eq *Parameter_HourValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: minute" RequestId="REQ-WA103-QO22"
RequirementId="REQ-WA103-QO22"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO22.json" OutputFile="REQ-WA103-QO22.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and minute(*Parameter_TimestampField*) gt *Parameter_MinuteValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and minute(*Parameter_TimestampField*) gt *Parameter_MinuteValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: second" RequestId="REQ-WA103-QO23"
RequirementId="REQ-WA103-QO23"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO23.json" OutputFile="REQ-WA103-QO23.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and second(*Parameter_TimestampField*) lt *Parameter_SecondValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and second(*Parameter_TimestampField*) lt *Parameter_SecondValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: fractionalseconds" RequestId="REQ-WA103-QO24"
RequirementId="REQ-WA103-QO24"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO24.json" OutputFile="REQ-WA103-QO24.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and fractionalseconds(*Parameter_TimestampField*) lt *Parameter_FractionalValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and fractionalseconds(*Parameter_TimestampField*) lt *Parameter_FractionalValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $expand" RequestId="REQ-WA103-QO29.1"
RequirementId="REQ-WA103-QO29.1"
MetallicLevel="Platinum"
Capability="Expandability ($expand)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO29.1.json" OutputFile="REQ-WA103-QO29.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField*"
/> />
<Request <Request
TestDescription="Query Support: $expand media photo count" RequestId="REQ-WA103-QO29.2"
RequirementId="REQ-WA103-QO29.2"
MetallicLevel="Platinum"
Capability="Expandability ($expand)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO29.2.json" OutputFile="REQ-WA103-QO29.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField*&amp;$filter=PhotosCount gt 0" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField*&amp;$filter=PhotosCount gt 0"
/> />
<Request <Request
TestDescription="Query Support: $expand required field" RequestId="REQ-WA103-QO29.3"
RequirementId="REQ-WA103-QO29.3"
MetallicLevel="Platinum"
Capability="Expandability ($expand)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO29.3.json" OutputFile="REQ-WA103-QO29.3.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField**Parameter_RequiredParametersFilter*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField**Parameter_RequiredParametersFilter*"
/> />
<Request <Request
TestDescription="Support Literals: $any" RequestId="REQ-WA103-QM3"
RequirementId="REQ-WA103-QM3"
MetallicLevel="Platinum"
Capability="Query functions"
WebAPIReference="2.4.6"
OutputFile="REQ-WA103-QM3.json" OutputFile="REQ-WA103-QM3.json"
Url="*ClientSettings_WebAPIURI*/$any?$top=1" Url="*ClientSettings_WebAPIURI*/$any?$top=1"
/> />
<Request <Request
TestDescription="Support Literals: $all" RequestId="REQ-WA103-QM4"
RequirementId="REQ-WA103-QM4"
MetallicLevel="Platinum"
Capability="Query functions"
WebAPIReference="2.4.6"
OutputFile="REQ-WA103-QM4_All.json" OutputFile="REQ-WA103-QM4_All.json"
Url="*ClientSettings_WebAPIURI*/$all?$top=1" Url="*ClientSettings_WebAPIURI*/$all?$top=1"
/> />
<Request <Request
TestDescription="Support GeoSpatial Search Implementation" RequestId="REQ-WA103-QM5.1"
RequirementId="REQ-WA103-QM5.1"
MetallicLevel="Platinum"
Capability="Query functions"
WebAPIReference="2.4.7"
OutputFile="REQ-WA103-QM5_GeoSpatialLongLat_PointGeo.json" OutputFile="REQ-WA103-QM5_GeoSpatialLongLat_PointGeo.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=geo.distance(*Parameter_GeoSpatialField*, geography'SRID=*Parameter_SRID*;POINT(*Parameter_GeoSpatialValue*)' le *Parameter_GeoSpatialDistanceValue*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=geo.distance(*Parameter_GeoSpatialField*, geography'SRID=*Parameter_SRID*;POINT(*Parameter_GeoSpatialValue*)' le *Parameter_GeoSpatialDistanceValue*"
/> />
<Request <Request
TestDescription="Support GeoSpatial Search Implementation" RequestId="REQ-WA103-QM5.2"
RequirementId="REQ-WA103-QM5.2"
MetallicLevel="Platinum"
Capability="Query functions"
WebAPIReference="2.4.7"
OutputFile="REQ-WA103-QM5_GeoSpatialLongLat_LatGT1_PointGeo.json" OutputFile="REQ-WA103-QM5_GeoSpatialLongLat_LatGT1_PointGeo.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=geo.distance(*Parameter_GeoSpatialField*, geography'SRID=*Parameter_SRID*;POINT(*Parameter_GeoSpatialValue*)' le *Parameter_GeoSpatialDistanceValue* and *Parameter_GeoSpatialLatitudeField* gt 1" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=geo.distance(*Parameter_GeoSpatialField*, geography'SRID=*Parameter_SRID*;POINT(*Parameter_GeoSpatialValue*)' le *Parameter_GeoSpatialDistanceValue* and *Parameter_GeoSpatialLatitudeField* gt 1"
/> />
<Request <Request
TestDescription="Query Support: $filter - Grouping: ()" RequestId="REQ-WA103-QO12"
RequirementId="REQ-WA103-QO12"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO12_Grouping.json" OutputFile="REQ-WA103-QO12_Grouping.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and (*Parameter_FilterIntegerField* ge *Parameter_FilterIntegerValueLow* and *Parameter_FilterIntegerField* le *Parameter_FilterIntegerValueHigh*) and (*Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueHigh* and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow*)*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and (*Parameter_FilterIntegerField* ge *Parameter_FilterIntegerValueLow* and *Parameter_FilterIntegerField* le *Parameter_FilterIntegerValueHigh*) and (*Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueHigh* and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow*)*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - String: contains" RequestId="REQ-WA103-QO13"
RequirementId="REQ-WA103-QO13"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO13.json" OutputFile="REQ-WA103-QO13.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ContainsField* ne null and contains(*Parameter_ContainsField*,'*Parameter_ContainsValue*')*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ContainsField* ne null and contains(*Parameter_ContainsField*,'*Parameter_ContainsValue*')*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - String: endswith" RequestId="REQ-WA103-QO14"
RequirementId="REQ-WA103-QO14"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO14_EndsWith.json" OutputFile="REQ-WA103-QO14_EndsWith.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_EndsWithField* ne null and endswith(*Parameter_EndsWithField*,'*Parameter_EndsWithValue*')*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_EndsWithField* ne null and endswith(*Parameter_EndsWithField*,'*Parameter_EndsWithValue*')*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - String: startswith" RequestId="REQ-WA103-QO15"
RequirementId="REQ-WA103-QO15"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO15_StartsWith.json" OutputFile="REQ-WA103-QO15_StartsWith.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_StartsWithField* ne null and startswith(*Parameter_StartsWithField*,'*Parameter_StartsWithValue*')*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_StartsWithField* ne null and startswith(*Parameter_StartsWithField*,'*Parameter_StartsWithValue*')*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - String: tolower" RequestId="REQ-WA103-QO16"
RequirementId="REQ-WA103-QO16"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO16_ToLowerEQ.json" OutputFile="REQ-WA103-QO16_ToLowerEQ.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ToLowerField* ne null and tolower(*Parameter_ToLowerField*) eq '*Parameter_ToLowerValue*'*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ToLowerField* ne null and tolower(*Parameter_ToLowerField*) eq '*Parameter_ToLowerValue*'*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - String: toupper" RequestId="REQ-WA103-QO17"
RequirementId="REQ-WA103-QO17"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO17_ToUpperEQ.json" OutputFile="REQ-WA103-QO17_ToUpperEQ.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ToUpperField* ne null and toupper(*Parameter_ToUpperField*) eq '*Parameter_ToUpperValue*'*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ToUpperField* ne null and toupper(*Parameter_ToUpperField*) eq '*Parameter_ToUpperValue*'*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Service Endpoint" RequestId="REQ-WA103-END1"
RequirementId="REQ-WA103-END1"
MetallicLevel="Core"
Capability="Core"
WebAPIReference=""
OutputFile="REQ-WA103-END1_Service.json" OutputFile="REQ-WA103-END1_Service.json"
Url="*ClientSettings_WebAPIURI*/" Url="*ClientSettings_WebAPIURI*/"
/> />
@ -816,51 +573,31 @@
<!-- RESPONSE CODE SUPPORT --> <!-- RESPONSE CODE SUPPORT -->
<Request <Request
TestDescription="200 OK Request" RequestId="REQ-WA103-RC3"
RequirementId="REQ-WA103-RC3"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.5.2"
OutputFile="REQ-WA103-RC05_200OKRequest.json" OutputFile="REQ-WA103-RC05_200OKRequest.json"
Url="ClientSettings_WebAPIURI*/*Parameter_200_OK*" Url="ClientSettings_WebAPIURI*/*Parameter_200_OK*"
/> />
<Request <Request
TestDescription="400 Bad Request" RequestId="REQ-WA103-RC5"
RequirementId="REQ-WA103-RC5"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.5.2"
OutputFile="REQ-WA103-RC05_400BadRequest.json" OutputFile="REQ-WA103-RC05_400BadRequest.json"
Url="ClientSettings_WebAPIURI*/*Parameter_400BadRequest*" Url="ClientSettings_WebAPIURI*/*Parameter_400BadRequest*"
/> />
<Request <Request
TestDescription="403 Forbidden Request" RequestId="REQ-WA103-RC06"
RequirementId="REQ-WA103-RC06"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.5.2"
OutputFile="REQ-WA103-RC06_403Forbidden_Generic.json" OutputFile="REQ-WA103-RC06_403Forbidden_Generic.json"
Url="ClientSettings_WebAPIURI*/*Parameter_403Forbidden*" Url="ClientSettings_WebAPIURI*/*Parameter_403Forbidden*"
/> />
<Request <Request
TestDescription="404 Not Found Request" RequestId="REQ-WA103-RC07"
RequirementId="REQ-WA103-RC07"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.5.2"
OutputFile="REQ-WA103-RC07_404NotFound.json" OutputFile="REQ-WA103-RC07_404NotFound.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_404NotFound*" Url="*ClientSettings_WebAPIURI*/*Parameter_404NotFound*"
/> />
<Request <Request
TestDescription="501 Not Implemented Request" RequestId="REQ-WA103-RC11"
RequirementId="REQ-WA103-RC11"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.5.2"
OutputFile="REQ-WA103-RC11_501NotImplemented.json" OutputFile="REQ-WA103-RC11_501NotImplemented.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_501NotImplemented*" Url="*ClientSettings_WebAPIURI*/*Parameter_501NotImplemented*"
/> />

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<!--
<!--
>>> To be used as a template for Web API Server 1.0.2 Platinum Certification <<< >>> To be used as a template for Web API Server 1.0.2 Platinum Certification <<<
NOTES: NOTES:
@ -12,15 +12,10 @@
Contact josh@reso.org with further questions. Contact josh@reso.org with further questions.
--> -->
<!--
############################################################
XML DTD - Must come first
############################################################-->
<!DOCTYPE OutputScript [ <!DOCTYPE OutputScript [
<!ELEMENT OutputScript (RESOScriptVersion|ClientSettings|Parameters|Requests)*> <!ELEMENT OutputScript (RESOScriptVersion|ClientSettings|Parameters|Requests)*>
<!ELEMENT RESOScriptVersion (#PCDATA)> <!ELEMENT RESOScriptVersion (#PCDATA)>
<!ELEMENT ClientSettings <!ELEMENT ClientSettings (WebAPIURI|AuthenticationType|BearerToken|ClientIdentification|ClientSecret|TokenURI|ClientScope)*>
(RESOScriptVersion|WebAPIURI|AuthenticationType|BearerToken|ClientIdentification|ClientSecret|TokenURI|ClientScope)*>
<!ELEMENT WebAPIURI (#PCDATA)> <!ELEMENT WebAPIURI (#PCDATA)>
<!ELEMENT AuthenticationType (#PCDATA)> <!ELEMENT AuthenticationType (#PCDATA)>
<!ELEMENT BearerToken (#PCDATA)> <!ELEMENT BearerToken (#PCDATA)>
@ -36,29 +31,11 @@
<!ELEMENT Requests (Request)*> <!ELEMENT Requests (Request)*>
<!ELEMENT Request (#PCDATA)> <!ELEMENT Request (#PCDATA)>
<!ATTLIST Request <!ATTLIST Request
Capability CDATA #REQUIRED
MetallicLevel CDATA #REQUIRED
OutputFile CDATA #REQUIRED OutputFile CDATA #REQUIRED
RequirementId CDATA #REQUIRED RequestId CDATA #REQUIRED
TestDescription CDATA #REQUIRED Url CDATA #REQUIRED>
Url CDATA #REQUIRED
WebAPIReference CDATA #REQUIRED>
]> ]>
<!--
############################################################
TODO: this document will be updated with language
matching the OAuth 2.0 Specification and ClientSettings
will be removed.
See:
https://tools.ietf.org/html/rfc8252
Watch for subsequent changes to this file.
ClientSettings will be converted to Parameters forthwith.
############################################################-->
<OutputScript> <OutputScript>
<!-- <!--
@ -67,7 +44,7 @@
############################################################--> ############################################################-->
<!-- The current version of this RESOScript --> <!-- The current version of this RESOScript -->
<RESOScriptVersion>1.0.7</RESOScriptVersion> <RESOScriptVersion>1.1.0</RESOScriptVersion>
<!-- <!--
@ -312,551 +289,331 @@
<Requests> <Requests>
<Request <Request
TestDescription="Metadata Endpoint" RequestId="REQ-WA103-END3"
RequirementId="REQ-WA103-END3"
MetallicLevel="Core"
Capability="Core"
WebAPIReference=""
OutputFile="REQ-WA103-END3.metadata.xml" OutputFile="REQ-WA103-END3.metadata.xml"
Url="*ClientSettings_WebAPIURI*/$metadata*Parameter_OptionalMetadataFormatParameter*" Url="*ClientSettings_WebAPIURI*/$metadata*Parameter_OptionalMetadataFormatParameter*"
/> />
<Request <Request
TestDescription="Data System" RequestId="REQ-WA103-END2"
RequirementId="REQ-WA103-END2"
MetallicLevel="Core"
Capability="Core Support"
WebAPIReference=""
OutputFile="REQ-WA103-END2.datasystem.json" OutputFile="REQ-WA103-END2.datasystem.json"
Url="*Parameter_EndpointDataSystem*" Url="*Parameter_EndpointDataSystem*"
/> />
<Request <Request
TestDescription="Search Parameters: Select KeyOrKeyNumeric Field" RequestId="REQ-WA103-QR1"
RequirementId="REQ-WA103-QR1"
MetallicLevel="Core"
Capability="Query functions"
WebAPIReference="2.4.1"
OutputFile="REQ-WA103-QR1.json" OutputFile="REQ-WA103-QR1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*(*Parameter_KeyOrKeyNumericValue*)?$select=*Parameter_KeyOrKeyNumericField*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*(*Parameter_KeyOrKeyNumericValue*)?$select=*Parameter_KeyOrKeyNumericField*"
/> />
<Request <Request
TestDescription="Query Support: $select" RequestId="REQ-WA103-QR3"
RequirementId="REQ-WA103-QR3"
MetallicLevel="Core"
Capability="Query functions"
WebAPIReference="2.4.2"
OutputFile="REQ-WA103-QR3.json" OutputFile="REQ-WA103-QR3.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $top" RequestId="REQ-WA103-QR4"
RequirementId="REQ-WA103-QR4"
MetallicLevel="Core"
Capability="Client paging ($top, $skip)"
WebAPIReference="2.4.2"
OutputFile="REQ-WA103-QR4.json" OutputFile="REQ-WA103-QR4.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $skip" RequestId="REQ-WA103-QR5"
RequirementId="REQ-WA103-QR5"
MetallicLevel="Core"
Capability="Client pageability ($top, $skip)"
WebAPIReference="2.4.2"
OutputFile="REQ-WA103-QR5.json" OutputFile="REQ-WA103-QR5.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $select case-sensitivity. Expect 400 response on OData 4.0" RequestId="REQ-WA103-QO1.1"
RequirementId="REQ-WA103-QO1.1"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO1.1.json" OutputFile="REQ-WA103-QO1.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$SeLeCt=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$SeLeCt=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter case-sensitivity. Expect 400 response on OData 4.0" RequestId="REQ-WA103-QO1.2"
RequirementId="REQ-WA103-QO1.2"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO1.2.json" OutputFile="REQ-WA103-QO1.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$FiLtEr=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$FiLtEr=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $orderby asc case-sensitivity. Expect 400 response on OData 4.0" RequestId="REQ-WA103-QO1.3"
RequirementId="REQ-WA103-QO1.3"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO1.3.json" OutputFile="REQ-WA103-QO1.3.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*&amp;$OrDeRbY=*Parameter_FilterIntegerField* asc" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*&amp;$OrDeRbY=*Parameter_FilterIntegerField* asc"
/> />
<Request <Request
TestDescription="Query Support: $orderby desc case-sensitivity. Expect 400 response on OData 4.0" RequestId="REQ-WA103-QO1.4"
RequirementId="REQ-WA103-QO1.4"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO1.4.json" OutputFile="REQ-WA103-QO1.4.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*&amp;$oRdErBy=*Parameter_FilterIntegerField* desc" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*&amp;$oRdErBy=*Parameter_FilterIntegerField* desc"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: eq (equal)" RequestId="REQ-WA103-QO2"
RequirementId="REQ-WA103-QO2"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO2" OutputFile="REQ-WA103-QO2"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* eq *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: ne (not equal)" RequestId="REQ-WA103-QO3"
RequirementId="REQ-WA103-QO3"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO3" OutputFile="REQ-WA103-QO3"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ne *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ne *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: gt (greater than)" RequestId="REQ-WA103-QO4"
RequirementId="REQ-WA103-QO4"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO4" OutputFile="REQ-WA103-QO4"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: ge (greater or equal)" RequestId="REQ-WA103-QO5"
RequirementId="REQ-WA103-QO5"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO5.json" OutputFile="REQ-WA103-QO5.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ge *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* ge *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: lt (less than)" RequestId="REQ-WA103-QO6"
RequirementId="REQ-WA103-QO6"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO6.json" OutputFile="REQ-WA103-QO6.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: le (less or equal)" RequestId="REQ-WA103-QO7"
RequirementId="REQ-WA103-QO7"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO7.json" OutputFile="REQ-WA103-QO7.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* le *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* le *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: and" RequestId="REQ-WA103-QO9"
RequirementId="REQ-WA103-QO9"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO9.json" OutputFile="REQ-WA103-QO9.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow* and *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueHigh**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow* and *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueHigh**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer Comparison: or" RequestId="REQ-WA103-QO10"
RequirementId="REQ-WA103-QO10"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO10.json" OutputFile="REQ-WA103-QO10.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueHigh* or *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueHigh* or *Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Integer: not operator" RequestId="REQ-WA103-QO11"
RequirementId="REQ-WA103-QO11"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO11.json" OutputFile="REQ-WA103-QO11.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and not(*Parameter_FilterNotField* le *Parameter_FilterNotValue*)*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and not(*Parameter_FilterNotField* le *Parameter_FilterNotValue*)*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date portion of EdmDateTimeOffset field is less than EdmDate value." RequestId="REQ-WA103-QO25"
RequirementId="REQ-WA103-QO25"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO25.json" OutputFile="REQ-WA103-QO25.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and date(*Parameter_TimestampField*) gt *Parameter_DateValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and date(*Parameter_TimestampField*) gt *Parameter_DateValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Time portion of EdmDateTimeOffset field is less than EdmTime value." RequestId="REQ-WA103-QO26"
RequirementId="REQ-WA103-QO26"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO26.json" OutputFile="REQ-WA103-QO26.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and time(*Parameter_TimestampField*) lt *Parameter_TimeValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and time(*Parameter_TimestampField*) lt *Parameter_TimeValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: EdmDateTimeOffset field is less than EdmDateTimeOffset value." RequestId="REQ-WA103-QO26.2"
RequirementId="REQ-WA103-QO26.2"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO26.2.json" OutputFile="REQ-WA103-QO26.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and *Parameter_TimestampField* lt *Parameter_DateTimeValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and *Parameter_TimestampField* lt *Parameter_DateTimeValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: DateTimeOffset le now()" RequestId="REQ-WA103-QO27"
RequirementId="REQ-WA103-QO27"
MetallicLevel="Core"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO27.json" OutputFile="REQ-WA103-QO27.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and *Parameter_TimestampField* le now()*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and *Parameter_TimestampField* le now()*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Support Single Value Lookups" RequestId="REQ-WA103-QM7"
RequirementId="REQ-WA103-QM7"
MetallicLevel="Bronze"
Capability="Query functions"
WebAPIReference="2.4.9"
OutputFile="REQ-WA103-QM7.json" OutputFile="REQ-WA103-QM7.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_SingleValueLookupField*&amp;$filter=*Parameter_SingleValueLookupField* ne null and *Parameter_SingleValueLookupField* has *Parameter_SingleValueLookupValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_SingleValueLookupField*&amp;$filter=*Parameter_SingleValueLookupField* ne null and *Parameter_SingleValueLookupField* has *Parameter_SingleValueLookupValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Support Multi Value Lookups" RequestId="REQ-WA103-QM8"
RequirementId="REQ-WA103-QM8"
MetallicLevel="Bronze"
Capability="Query functions"
WebAPIReference="2.4.10"
OutputFile="REQ-WA103-QM8.json" OutputFile="REQ-WA103-QM8.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&amp;$filter=*Parameter_MultipleValueLookupField* ne null and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue1**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&amp;$filter=*Parameter_MultipleValueLookupField* ne null and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue1**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Support Multi Value Lookups (2)" RequestId="REQ-WA103-QM8.2"
RequirementId="REQ-WA103-QM8.2"
MetallicLevel="Bronze"
Capability="Query functions"
WebAPIReference="2.4.10"
OutputFile="REQ-WA103-QM8.2.json" OutputFile="REQ-WA103-QM8.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&amp;$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*&amp;$select=*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&amp;$filter=*Parameter_MultipleValueLookupField* ne null and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue1* and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue2**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - Comparison: has" RequestId="REQ-WA103-QO8"
RequirementId="REQ-WA103-QO8"
MetallicLevel="Bronze"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO8.json" OutputFile="REQ-WA103-QO8.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterHasField* ne null and *Parameter_FilterHasField* has *Parameter_FilterHasValueLookupValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterHasField* ne null and *Parameter_FilterHasField* has *Parameter_FilterHasValueLookupValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $orderby asc filtered" RequestId="REQ-WA103-QO28.1"
RequirementId="REQ-WA103-QO28.1"
MetallicLevel="Bronze"
Capability="Sortability ($orderby)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO28.1.json" OutputFile="REQ-WA103-QO28.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* asc&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* asc&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $orderby asc no filter" RequestId="REQ-WA103-QO28.2"
RequirementId="REQ-WA103-QO28.2"
MetallicLevel="Bronze"
Capability="Sortability ($orderby)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO28.2.json" OutputFile="REQ-WA103-QO28.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* asc" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* asc"
/> />
<Request <Request
TestDescription="Query Support: $orderby desc filtered" RequestId="REQ-WA103-QO28.3"
RequirementId="REQ-WA103-QO28.3"
MetallicLevel="Bronze"
Capability="Sortability ($orderby)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO28.3.json" OutputFile="REQ-WA103-QO28.3.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* desc&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* desc&amp;$filter=*Parameter_FilterIntegerField* ne null and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $orderby desc no filter" RequestId="REQ-WA103-QO28.4"
RequirementId="REQ-WA103-QO28.4"
MetallicLevel="Bronze"
Capability="Sortability ($orderby)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO28.4.json" OutputFile="REQ-WA103-QO28.4.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* desc" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&amp;$select=*Parameter_FilterIntegerField*,*Parameter_TimestampField*&amp;$orderby=*Parameter_TimestampField* desc"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: year" RequestId="REQ-WA103-QO18.1"
RequirementId="REQ-WA103-QO18.1"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO18.1.json" OutputFile="REQ-WA103-QO18.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and year(*Parameter_DateField*) eq *Parameter_YearValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and year(*Parameter_DateField*) eq *Parameter_YearValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Time: year" RequestId="REQ-WA103-QO18.2"
RequirementId="REQ-WA103-QO18.2"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO18.2.json" OutputFile="REQ-WA103-QO18.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and year(*Parameter_TimestampField*) eq *Parameter_YearValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and year(*Parameter_TimestampField*) eq *Parameter_YearValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: month" RequestId="REQ-WA103-QO19.1"
RequirementId="REQ-WA103-QO19.1"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO19.1.json" OutputFile="REQ-WA103-QO19.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and month(*Parameter_DateField*) eq *Parameter_MonthValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and month(*Parameter_DateField*) eq *Parameter_MonthValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Time: month" RequestId="REQ-WA103-QO19.2"
RequirementId="REQ-WA103-QO19.2"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO19.2.json" OutputFile="REQ-WA103-QO19.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and month(*Parameter_TimestampField*) eq *Parameter_MonthValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and month(*Parameter_TimestampField*) eq *Parameter_MonthValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: day" RequestId="REQ-WA103-QO20.1"
RequirementId="REQ-WA103-QO20.1"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO20.1.json" OutputFile="REQ-WA103-QO20.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and day(*Parameter_DateField*) eq *Parameter_DayValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_DateField* ne null and day(*Parameter_DateField*) eq *Parameter_DayValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Time: day" RequestId="REQ-WA103-QO20.2"
RequirementId="REQ-WA103-QO20.2"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO20.2.json" OutputFile="REQ-WA103-QO20.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and day(*Parameter_TimestampField*) eq *Parameter_DayValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and day(*Parameter_TimestampField*) eq *Parameter_DayValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: hour" RequestId="REQ-WA103-QO21"
RequirementId="REQ-WA103-QO21"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO21.json" OutputFile="REQ-WA103-QO21.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and hour(*Parameter_TimestampField*) eq *Parameter_HourValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and hour(*Parameter_TimestampField*) eq *Parameter_HourValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: minute" RequestId="REQ-WA103-QO22"
RequirementId="REQ-WA103-QO22"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO22.json" OutputFile="REQ-WA103-QO22.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and minute(*Parameter_TimestampField*) gt *Parameter_MinuteValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and minute(*Parameter_TimestampField*) gt *Parameter_MinuteValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: second" RequestId="REQ-WA103-QO23"
RequirementId="REQ-WA103-QO23"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO23.json" OutputFile="REQ-WA103-QO23.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and second(*Parameter_TimestampField*) lt *Parameter_SecondValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and second(*Parameter_TimestampField*) lt *Parameter_SecondValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter: Date: fractionalseconds" RequestId="REQ-WA103-QO24"
RequirementId="REQ-WA103-QO24"
MetallicLevel="Gold"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO24.json" OutputFile="REQ-WA103-QO24.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and fractionalseconds(*Parameter_TimestampField*) lt *Parameter_FractionalValue**Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_TimestampField* ne null and fractionalseconds(*Parameter_TimestampField*) lt *Parameter_FractionalValue**Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $expand" RequestId="REQ-WA103-QO29.1"
RequirementId="REQ-WA103-QO29.1"
MetallicLevel="Platinum"
Capability="Expandability ($expand)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO29.1.json" OutputFile="REQ-WA103-QO29.1.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField*"
/> />
<Request <Request
TestDescription="Query Support: $expand media photo count" RequestId="REQ-WA103-QO29.2"
RequirementId="REQ-WA103-QO29.2"
MetallicLevel="Platinum"
Capability="Expandability ($expand)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO29.2.json" OutputFile="REQ-WA103-QO29.2.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField*&amp;$filter=PhotosCount gt 0" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField*&amp;$filter=PhotosCount gt 0"
/> />
<Request <Request
TestDescription="Query Support: $expand required field" RequestId="REQ-WA103-QO29.3"
RequirementId="REQ-WA103-QO29.3"
MetallicLevel="Platinum"
Capability="Expandability ($expand)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO29.3.json" OutputFile="REQ-WA103-QO29.3.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField**Parameter_RequiredParametersFilter*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*,*Parameter_ExpandField*&amp;$expand=*Parameter_ExpandField**Parameter_RequiredParametersFilter*"
/> />
<Request <Request
TestDescription="Support Literals: $any" RequestId="REQ-WA103-QM3"
RequirementId="REQ-WA103-QM3"
MetallicLevel="Platinum"
Capability="Query functions"
WebAPIReference="2.4.6"
OutputFile="REQ-WA103-QM3.json" OutputFile="REQ-WA103-QM3.json"
Url="*ClientSettings_WebAPIURI*/$any?$top=1" Url="*ClientSettings_WebAPIURI*/$any?$top=1"
/> />
<Request <Request
TestDescription="Support Literals: $all" RequestId="REQ-WA103-QM4"
RequirementId="REQ-WA103-QM4"
MetallicLevel="Platinum"
Capability="Query functions"
WebAPIReference="2.4.6"
OutputFile="REQ-WA103-QM4_All.json" OutputFile="REQ-WA103-QM4_All.json"
Url="*ClientSettings_WebAPIURI*/$all?$top=1" Url="*ClientSettings_WebAPIURI*/$all?$top=1"
/> />
<Request <Request
TestDescription="Support GeoSpatial Search Implementation" RequestId="REQ-WA103-QM5.1"
RequirementId="REQ-WA103-QM5.1"
MetallicLevel="Platinum"
Capability="Query functions"
WebAPIReference="2.4.7"
OutputFile="REQ-WA103-QM5_GeoSpatialLongLat_PointGeo.json" OutputFile="REQ-WA103-QM5_GeoSpatialLongLat_PointGeo.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=geo.distance(*Parameter_GeoSpatialField*, geography'SRID=*Parameter_SRID*;POINT(*Parameter_GeoSpatialValue*)' le *Parameter_GeoSpatialDistanceValue*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=geo.distance(*Parameter_GeoSpatialField*, geography'SRID=*Parameter_SRID*;POINT(*Parameter_GeoSpatialValue*)' le *Parameter_GeoSpatialDistanceValue*"
/> />
<Request <Request
TestDescription="Support GeoSpatial Search Implementation" RequestId="REQ-WA103-QM5.2"
RequirementId="REQ-WA103-QM5.2"
MetallicLevel="Platinum"
Capability="Query functions"
WebAPIReference="2.4.7"
OutputFile="REQ-WA103-QM5_GeoSpatialLongLat_LatGT1_PointGeo.json" OutputFile="REQ-WA103-QM5_GeoSpatialLongLat_LatGT1_PointGeo.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=geo.distance(*Parameter_GeoSpatialField*, geography'SRID=*Parameter_SRID*;POINT(*Parameter_GeoSpatialValue*)' le *Parameter_GeoSpatialDistanceValue* and *Parameter_GeoSpatialLatitudeField* gt 1" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=geo.distance(*Parameter_GeoSpatialField*, geography'SRID=*Parameter_SRID*;POINT(*Parameter_GeoSpatialValue*)' le *Parameter_GeoSpatialDistanceValue* and *Parameter_GeoSpatialLatitudeField* gt 1"
/> />
<Request <Request
TestDescription="Query Support: $filter - Grouping: ()" RequestId="REQ-WA103-QO12"
RequirementId="REQ-WA103-QO12"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO12_Grouping.json" OutputFile="REQ-WA103-QO12_Grouping.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and (*Parameter_FilterIntegerField* ge *Parameter_FilterIntegerValueLow* and *Parameter_FilterIntegerField* le *Parameter_FilterIntegerValueHigh*) and (*Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueHigh* and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow*)*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_FilterIntegerField* ne null and (*Parameter_FilterIntegerField* ge *Parameter_FilterIntegerValueLow* and *Parameter_FilterIntegerField* le *Parameter_FilterIntegerValueHigh*) and (*Parameter_FilterIntegerField* lt *Parameter_FilterIntegerValueHigh* and *Parameter_FilterIntegerField* gt *Parameter_FilterIntegerValueLow*)*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - String: contains" RequestId="REQ-WA103-QO13"
RequirementId="REQ-WA103-QO13"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO13.json" OutputFile="REQ-WA103-QO13.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ContainsField* ne null and contains(*Parameter_ContainsField*,'*Parameter_ContainsValue*')*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ContainsField* ne null and contains(*Parameter_ContainsField*,'*Parameter_ContainsValue*')*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - String: endswith" RequestId="REQ-WA103-QO14"
RequirementId="REQ-WA103-QO14"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO14_EndsWith.json" OutputFile="REQ-WA103-QO14_EndsWith.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_EndsWithField* ne null and endswith(*Parameter_EndsWithField*,'*Parameter_EndsWithValue*')*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_EndsWithField* ne null and endswith(*Parameter_EndsWithField*,'*Parameter_EndsWithValue*')*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - String: startswith" RequestId="REQ-WA103-QO15"
RequirementId="REQ-WA103-QO15"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO15_StartsWith.json" OutputFile="REQ-WA103-QO15_StartsWith.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_StartsWithField* ne null and startswith(*Parameter_StartsWithField*,'*Parameter_StartsWithValue*')*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_StartsWithField* ne null and startswith(*Parameter_StartsWithField*,'*Parameter_StartsWithValue*')*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - String: tolower" RequestId="REQ-WA103-QO16"
RequirementId="REQ-WA103-QO16"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO16_ToLowerEQ.json" OutputFile="REQ-WA103-QO16_ToLowerEQ.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ToLowerField* ne null and tolower(*Parameter_ToLowerField*) eq '*Parameter_ToLowerValue*'*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ToLowerField* ne null and tolower(*Parameter_ToLowerField*) eq '*Parameter_ToLowerValue*'*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Query Support: $filter - String: toupper" RequestId="REQ-WA103-QO17"
RequirementId="REQ-WA103-QO17"
MetallicLevel="Platinum"
Capability="Filterability ($filter)"
WebAPIReference="2.4.4"
OutputFile="REQ-WA103-QO17_ToUpperEQ.json" OutputFile="REQ-WA103-QO17_ToUpperEQ.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ToUpperField* ne null and toupper(*Parameter_ToUpperField*) eq '*Parameter_ToUpperValue*'*Parameter_RequiredParameters*" Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&amp;$select=*Parameter_SelectList*&amp;$filter=*Parameter_ToUpperField* ne null and toupper(*Parameter_ToUpperField*) eq '*Parameter_ToUpperValue*'*Parameter_RequiredParameters*"
/> />
<Request <Request
TestDescription="Service Endpoint" RequestId="REQ-WA103-END1"
RequirementId="REQ-WA103-END1"
MetallicLevel="Core"
Capability="Core"
WebAPIReference=""
OutputFile="REQ-WA103-END1_Service.json" OutputFile="REQ-WA103-END1_Service.json"
Url="*ClientSettings_WebAPIURI*/" Url="*ClientSettings_WebAPIURI*/"
/> />
@ -864,51 +621,31 @@
<!-- RESPONSE CODE SUPPORT --> <!-- RESPONSE CODE SUPPORT -->
<Request <Request
TestDescription="200 OK Request" RequestId="REQ-WA103-RC3"
RequirementId="REQ-WA103-RC3"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.5.2"
OutputFile="REQ-WA103-RC05_200OKRequest.json" OutputFile="REQ-WA103-RC05_200OKRequest.json"
Url="ClientSettings_WebAPIURI*/*Parameter_200_OK*" Url="ClientSettings_WebAPIURI*/*Parameter_200_OK*"
/> />
<Request <Request
TestDescription="400 Bad Request" RequestId="REQ-WA103-RC5"
RequirementId="REQ-WA103-RC5"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.5.2"
OutputFile="REQ-WA103-RC05_400BadRequest.json" OutputFile="REQ-WA103-RC05_400BadRequest.json"
Url="ClientSettings_WebAPIURI*/*Parameter_400BadRequest*" Url="ClientSettings_WebAPIURI*/*Parameter_400BadRequest*"
/> />
<Request <Request
TestDescription="403 Forbidden Request" RequestId="REQ-WA103-RC06"
RequirementId="REQ-WA103-RC06"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.5.2"
OutputFile="REQ-WA103-RC06_403Forbidden_Generic.json" OutputFile="REQ-WA103-RC06_403Forbidden_Generic.json"
Url="ClientSettings_WebAPIURI*/*Parameter_403Forbidden*" Url="ClientSettings_WebAPIURI*/*Parameter_403Forbidden*"
/> />
<Request <Request
TestDescription="404 Not Found Request" RequestId="REQ-WA103-RC07"
RequirementId="REQ-WA103-RC07"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.5.2"
OutputFile="REQ-WA103-RC07_404NotFound.json" OutputFile="REQ-WA103-RC07_404NotFound.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_404NotFound*" Url="*ClientSettings_WebAPIURI*/*Parameter_404NotFound*"
/> />
<Request <Request
TestDescription="501 Not Implemented Request" RequestId="REQ-WA103-RC11"
RequirementId="REQ-WA103-RC11"
MetallicLevel="Core"
Capability="Core"
WebAPIReference="2.5.2"
OutputFile="REQ-WA103-RC11_501NotImplemented.json" OutputFile="REQ-WA103-RC11_501NotImplemented.json"
Url="*ClientSettings_WebAPIURI*/*Parameter_501NotImplemented*" Url="*ClientSettings_WebAPIURI*/*Parameter_501NotImplemented*"
/> />

View File

@ -440,43 +440,43 @@ Feature: Web API Server 1.0.2 Certification
And an OData NavigationProperty exists for the given "Parameter_EndpointResource" And an OData NavigationProperty exists for the given "Parameter_EndpointResource"
And the expanded data were found in the related resource And the expanded data were found in the related resource
@REQ-WA103-QO29.2 @platinum @2.4.4 @expandability-endorsement @REQ-WA103-QO29.2 @platinum @2.4.4 @expandability-endorsement @todo
Scenario: REQ-WA103-QO29.2 - Query Support: $expand media photo count Scenario: REQ-WA103-QO29.2 - Query Support: $expand media photo count (TODO)
When a GET request is made to the resolved Url in "REQ-WA103-QO29.2" When a GET request is made to the resolved Url in "REQ-WA103-QO29.2"
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
@REQ-WA103-QO29.3 @platinum @2.4.4 @expandability-endorsement @REQ-WA103-QO29.3 @platinum @2.4.4 @expandability-endorsement @todo
Scenario: REQ-WA103-QO29.3 - Query Support: $expand required field Scenario: REQ-WA103-QO29.3 - Query Support: $expand required field (TODO)
When a GET request is made to the resolved Url in "REQ-WA103-QO29.3" When a GET request is made to the resolved Url in "REQ-WA103-QO29.3"
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
@REQ-WA103-QM3 @platinum @2.4.6 @queryability-endorsement @deprecated @REQ-WA103-QM3 @platinum @2.4.6 @queryability-endorsement @todo
Scenario: REQ-WA103-QM3 - Support Literals: $any Scenario: REQ-WA103-QM3 - Support Literals: any() Lambda Expression (TODO)
When a GET request is made to the resolved Url in "REQ-WA103-QM3" When a GET request is made to the resolved Url in "REQ-WA103-QM3"
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
@REQ-WA103-QM4 @platinum @2.4.6 @queryability-endorsement @REQ-WA103-QM4 @platinum @2.4.6 @queryability-endorsement @todo
Scenario: REQ-WA103-QM4 - Query Support Literals: $all Scenario: REQ-WA103-QM4 - Query Support Literals: all() Lambda Operator (TODO)
When a GET request is made to the resolved Url in "REQ-WA103-QM4" When a GET request is made to the resolved Url in "REQ-WA103-QM4"
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
@REQ-WA103-QM5.1 @platinum @2.4.7 @queryability-endorsement @geospatial @REQ-WA103-QM5.1 @platinum @2.4.7 @queryability-endorsement @geospatial @todo
Scenario: REQ-WA103-QM5.1 - Query Support: GeoSpatial Search Implementation Scenario: REQ-WA103-QM5.1 - Query Support: GeoSpatial Search Implementation (TODO)
When a GET request is made to the resolved Url in "REQ-WA103-QM5.1" When a GET request is made to the resolved Url in "REQ-WA103-QM5.1"
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
@REQ-WA103-QM5.2 @platinum @2.4.7 @queryability-endorsement @geospatial @REQ-WA103-QM5.2 @platinum @2.4.7 @queryability-endorsement @geospatial @todo
Scenario: REQ-WA103-QM5.2 - Query Support: GeoSpatial Search Implementation Scenario: REQ-WA103-QM5.2 - Query Support: GeoSpatial Search Implementation (TODO)
When a GET request is made to the resolved Url in "REQ-WA103-QM5.2" When a GET request is made to the resolved Url in "REQ-WA103-QM5.2"
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

View File

@ -403,7 +403,8 @@ public class WebAPIServer_1_0_2 implements En {
initialResponseData.set(responseData.get()); initialResponseData.set(responseData.get());
//TODO: convert to OData filter factory //TODO: convert to OData filter factory
requestUri.set(Commander.prepareURI(Settings.resolveParameters(settings.getRequests().get(requirementId), settings).getUrl() + "&$skip=" + skipCount)); requestUri.set(Commander.prepareURI(Settings.resolveParameters(settings.getRequestById(requirementId), settings).getUrl()
+ "&" + Commander.ODATA_QUERY_OPTIONS.SKIP +"=" + skipCount));
executeGetRequest.apply(requestUri.get()); executeGetRequest.apply(requestUri.get());
} catch (Exception ex) { } catch (Exception ex) {
fail(ex.getMessage()); fail(ex.getMessage());
@ -437,13 +438,13 @@ 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 requestId) -> {
try { try {
//reset local state each time a get request is run //reset local state each time a get request is run
resetRequestState.run(); resetRequestState.run();
LOG.info("RequirementId: " + requirementId); LOG.info("Request ID: " + requestId);
requestUri.set(Commander.prepareURI(Settings.resolveParameters(settings.getRequests().get(requirementId), settings).getUrl())); requestUri.set(Commander.prepareURI(Settings.resolveParameters(settings.getRequestById(requestId), settings).getUrl()));
executeGetRequest.apply(requestUri.get()); executeGetRequest.apply(requestUri.get());
} catch (Exception ex) { } catch (Exception ex) {
LOG.debug("Exception was thrown in " + this.getClass() + ": " + ex.toString()); LOG.debug("Exception was thrown in " + this.getClass() + ": " + ex.toString());
@ -1054,11 +1055,11 @@ public class WebAPIServer_1_0_2 implements En {
}); });
When("^a GET request is made to the resolved Url in \"([^\"]*)\" using the OData Client$", (String parameterRequirementId) -> { When("^a GET request is made to the resolved Url in \"([^\"]*)\" using the OData Client$", (String parameterRequestId) -> {
String uriString = Settings.resolveParameters(settings.getRequests().get(parameterRequirementId), settings).getUrl(); String uriString = Settings.resolveParameters(settings.getRequestById(parameterRequestId), settings).getUrl();
assertTrue("ERROR: the resolved Url in '" + parameterRequirementId + "' was invalid!", uriString != null && uriString.length() > 0); assertTrue("ERROR: the resolved Url in '" + parameterRequestId + "' was invalid!", uriString != null && uriString.length() > 0);
LOG.info("Requirement Id: " + parameterRequirementId); LOG.info("Request Id: " + parameterRequestId);
try { try {
requestUri.set(prepareUri.apply(uriString)); requestUri.set(prepareUri.apply(uriString));
clientEntitySetRequest.set(commander.get().getClient().getRetrieveRequestFactory().getEntitySetRequest(requestUri.get())); clientEntitySetRequest.set(commander.get().getClient().getRetrieveRequestFactory().getEntitySetRequest(requestUri.get()));

View File

@ -3,7 +3,6 @@ package org.reso.commander;
//import io.cucumber.core.cli.Main; //import io.cucumber.core.cli.Main;
import org.apache.commons.cli.*; import org.apache.commons.cli.*;
import org.apache.http.HttpStatus;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.apache.olingo.client.api.domain.ClientEntitySet; import org.apache.olingo.client.api.domain.ClientEntitySet;
@ -14,13 +13,10 @@ import org.reso.models.Request;
import org.reso.models.Settings; import org.reso.models.Settings;
import java.io.File; import java.io.File;
import java.io.FileWriter;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function; import java.util.function.Function;
@ -46,9 +42,6 @@ public class App {
private static final Logger LOG = LogManager.getLogger(App.class); private static final Logger LOG = LogManager.getLogger(App.class);
//use only one instance of the stats class per run
private static final Stats STATS = new Stats();
private static final String DIVIDER = "=============================================================="; private static final String DIVIDER = "==============================================================";
private static final String SMALL_DIVIDER = "==========================="; private static final String SMALL_DIVIDER = "===========================";
private static final String RESOSCRIPT_EXTENSION = ".resoscript"; private static final String RESOSCRIPT_EXTENSION = ".resoscript";
@ -162,9 +155,6 @@ public class App {
String outputFilePath; String outputFilePath;
//start timer for entire run
STATS.startTimer();
for (int i = 0; i < numRequests; i++) { for (int i = 0; i < numRequests; i++) {
try { try {
request = settings.getRequestsAsList().get(i); request = settings.getRequestsAsList().get(i);
@ -173,73 +163,40 @@ public class App {
LOG.info(SMALL_DIVIDER); LOG.info(SMALL_DIVIDER);
LOG.info("Request: #" + (i + 1)); LOG.info("Request: #" + (i + 1));
LOG.info(SMALL_DIVIDER); LOG.info(SMALL_DIVIDER);
LOG.info("Request Name: " + request.getName());
//TODO: function-ize the property test if (request.getRequestId() != null && request.getRequestId().length() > 0) {
LOG.info("Description: " + (request.getTestDescription().length() > 0 ? request.getTestDescription() : "Not Specified")); LOG.info("Request Id: " + request.getRequestId());
LOG.info("Requirement Id: " + (request.getRequirementId().length() > 0 ? request.getRequirementId() : "Not Specified")); }
LOG.info("Metallic Level: " + (request.getMetallicLevel().length() > 0 ? request.getMetallicLevel() : "Not Specified"));
LOG.info("Capability: " + (request.getCapability().length() > 0 ? request.getCapability() : "Not Specified"));
LOG.info("Web API Reference: " + (request.getWebApiReference().length() > 0 ? request.getWebApiReference() : "Not Specified"));
resolvedUrl = Settings.resolveParameters(request, settings).getUrl(); resolvedUrl = Settings.resolveParameters(request, settings).getUrl();
LOG.info("Resolved URL: " + resolvedUrl); LOG.info("Resolved URL: " + resolvedUrl);
STATS.startRequest(request);
//only run tests if they have URLs that resolve //only run tests if they have URLs that resolve
if (resolvedUrl != null && resolvedUrl.length() > 0) { if (resolvedUrl != null && resolvedUrl.length() > 0 && request.getOutputFile() != null && request.getOutputFile().length() > 0) {
outputFilePath = directoryName + outputPath + File.separator + request.getOutputFile(); outputFilePath = directoryName + outputPath + File.separator + request.getOutputFile();
LOG.info("Output File: " + outputFilePath);
//get the response code from the request //get the response code from the request
responseCode = commander.saveGetRequest(resolvedUrl, outputFilePath); responseCode = commander.saveGetRequest(resolvedUrl, outputFilePath);
request.setHttpResponseCode(responseCode); request.setHttpResponseCode(responseCode);
LOG.info("Response Code: " + responseCode); LOG.info("Response Code: " + responseCode);
if (responseCode == HttpStatus.SC_OK) {
STATS.updateRequest(request, Request.Status.SUCCEEDED);
} else {
STATS.updateRequest(request, Request.Status.FAILED);
}
if (request.getOutputFile().toLowerCase().contains(EDMX_EXTENSION.toLowerCase())) {
//Main.main(new String[]{"-g", "org.reso.certification.stepdefs#WebAPIServer_1_0_2", "/home/jdarnell/work/reso/github/web-api-commander/src/main/java/org/reso/certification/features/web-api-server-1.0.2.feature"});
if (validateMetadata(commander, outputFilePath)) {
metadata = commander.readEdm(outputFilePath);
} else {
LOG.error("Error: Invalid metadata retrieved. Cannot continue!!");
System.exit(NOT_OK);
}
}
} else { } else {
LOG.info("Request " + request.getRequirementId() + " has an empty URL. Skipping..."); LOG.info("Request " + request.getRequestId() + " has an empty URL. Skipping...");
STATS.updateRequest(request, Request.Status.SKIPPED);
} }
} catch (Exception ex) { } catch (Exception ex) {
STATS.updateRequest(request, Request.Status.FAILED, ex);
LOG.error("Exception thrown in RUN_RESOSCRIPT Action. Exception is: \n" + ex.toString()); LOG.error("Exception thrown in RUN_RESOSCRIPT Action. Exception is: \n" + ex.toString());
LOG.error("Stack trace:"); LOG.error("Stack trace:");
Arrays.stream(ex.getStackTrace()).forEach(stackTraceElement -> LOG.error(stackTraceElement.toString())); Arrays.stream(ex.getStackTrace()).forEach(stackTraceElement -> LOG.error(stackTraceElement.toString()));
} finally {
if (resolvedUrl != null && resolvedUrl.length() > 0) {
LOG.info("Elapsed Time: " + String.format("%.2f", (STATS.getRequests().get(request).getElapsedTimeMillis() / 1000.0)) + "s");
}
} }
LOG.info("\n\n"); LOG.info("\n ");
} }
//stop global timer
STATS.stopTimer();
LOG.info(DIVIDER); LOG.info(DIVIDER);
LOG.info("RESOScript Complete!"); LOG.info("RESOScript Complete!");
LOG.info(DIVIDER + "\n"); LOG.info(DIVIDER + "\n");
LOG.info(generateReport(STATS, metadata, directoryName + outputPath));
System.exit(OK); //terminate the program after the batch completes System.exit(OK); //terminate the program after the batch completes
} }
@ -349,7 +306,6 @@ public class App {
new HelpFormatter().printHelp("java -jar web-api-commander", options); new HelpFormatter().printHelp("java -jar web-api-commander", options);
} }
/** /**
* Generates totals report from aggregates. * Generates totals report from aggregates.
* @param totalRequestCount total request count * @param totalRequestCount total request count
@ -414,80 +370,6 @@ public class App {
return reportBuilder.toString(); return reportBuilder.toString();
} }
private static String generateReport(Stats stats, Edm metadata, String outputPath) {
StringBuilder reportBuilder = new StringBuilder();
int numSucceeded, numFailed, numSkipped, numIncomplete, requestCount;
Set<String> metallicLevels = new HashSet<>();
Set<String> capabilityNames = new HashSet<>();
for(Request req : stats.getRequests().values()) {
metallicLevels.add(req.getMetallicLevel());
capabilityNames.add(req.getCapability());
}
numSucceeded = stats.getRequestCount(Request.Status.SUCCEEDED);
numFailed = stats.getRequestCount(Request.Status.FAILED);
numSkipped = stats.getRequestCount(Request.Status.SKIPPED);
numIncomplete = stats.getRequestCount(Request.Status.STARTED);
reportBuilder.append("\n\n" + DIVIDER);
reportBuilder.append("\nRequest Statistics");
reportBuilder.append("\n" + DIVIDER);
reportBuilder.append(generateTotalsReport(stats.totalRequestCount(), numSucceeded, numFailed, numSkipped, numIncomplete));
reportBuilder.append("\n" + "Total Time Taken: ").append(String.format("%.2f", (stats.getElapsedTimeMillis() / 1000.0))).append("s");
reportBuilder.append("\n" + "Average Time Taken: ").append(String.format("%.2f", (stats.getElapsedTimeMillis() / 1000.0) / stats.totalRequestCount())).append("s");
// Generate Metallic Certification Report
reportBuilder.append("\n\n" + DIVIDER);
reportBuilder.append("\nMetallic Certification Report");
reportBuilder.append("\n" + DIVIDER);
for (String metallicKey : metallicLevels) {
requestCount = stats.filterByMetallicCertification(metallicKey).size();
numSucceeded = stats.filterByMetallicCertification(metallicKey, stats.filterByStatus(Request.Status.SUCCEEDED)).size();
numFailed = stats.filterByMetallicCertification(metallicKey, stats.filterByStatus(Request.Status.FAILED)).size();
numSkipped = stats.filterByMetallicCertification(metallicKey, stats.filterByStatus(Request.Status.SKIPPED)).size();
numIncomplete = stats.filterByMetallicCertification(metallicKey, stats.filterByStatus(Request.Status.STARTED)).size();
reportBuilder.append("\n\n").append(metallicKey).append(numSucceeded > 0 && numSucceeded == (requestCount - numSkipped) ? " - ALL REQUESTS SUCCEEDED!" : "");
reportBuilder.append(generateTotalsReport(requestCount, numSucceeded, numFailed, numSkipped, numIncomplete));
}
// Generate Capabilities Report
reportBuilder.append("\n\n" + DIVIDER);
reportBuilder.append("\nCapabilities Certification Report");
reportBuilder.append("\n" + DIVIDER);
for (String capabilityKey : capabilityNames) {
requestCount = stats.filterByCapability(capabilityKey).size();
numSucceeded = stats.filterByCapability(capabilityKey, stats.filterByStatus(Request.Status.SUCCEEDED)).size();
numFailed = stats.filterByCapability(capabilityKey, stats.filterByStatus(Request.Status.FAILED)).size();
numSkipped = stats.filterByCapability(capabilityKey, stats.filterByStatus(Request.Status.SKIPPED)).size();
numIncomplete = stats.filterByCapability(capabilityKey, stats.filterByStatus(Request.Status.STARTED)).size();
reportBuilder.append("\n\n").append(capabilityKey).append(numSucceeded > 0 && numSucceeded == (requestCount - numSkipped) ? " - ALL REQUESTS SUCCEEDED!" : "");
reportBuilder.append(generateTotalsReport(requestCount, numSucceeded, numFailed, numSkipped, numIncomplete));
}
reportBuilder.append("\n" + DIVIDER + "\n");
String reportContent = reportBuilder.toString();
try {
FileWriter writer = new FileWriter(outputPath + File.separator + "CertificationReport.txt" );
writer.write(reportContent);
writer.write(getMetadataReport(metadata));
writer.flush();
writer.close();
} catch (Exception ex) {
LOG.error("Could not create Certification Report!");
LOG.error(ex.toString());
}
return reportBuilder.toString();
}
/** /**
* Helps with various app options used by the main application when processing input from the command line. * Helps with various app options used by the main application when processing input from the command line.
*/ */

View File

@ -1,87 +0,0 @@
package org.reso.commander;
import org.reso.models.Request;
import java.util.*;
import java.util.stream.Collectors;
/**
* The Stats class keeps information about a Commander run.
*/
public class Stats {
Date startDate, endDate;
private Map<Request, Request> requests = new HashMap<>();
public Stats () { /* */ }
public void startRequest(Request request) {
if (request != null) {
requests.put(request, request.setStatus(Request.Status.STARTED).startTimer());
}
}
public void updateRequest(Request request, Request.Status status) {
// only affects existing requestStatuses, use startRequest to register a Request
requests.get(request).stopTimer().setStatus(status);
}
public void updateRequest(Request request, Request.Status status, Exception ex) {
requests.get(request).setFailedRequestException(ex);
updateRequest(request, status);
}
public Map<Request, Request> getRequests() {
return requests;
}
public int totalRequestCount() {
return requests.size();
}
public int getRequestCount(Request.Status status) {
return filterByStatus(status, requests.values()).size();
}
public Collection<Request> filterByStatus(Request.Status status) {
return filterByStatus(status, requests.values());
}
public Collection<Request> filterByStatus(Request.Status status, Collection<Request> collection) {
return collection.stream()
.filter(requestStatus -> requestStatus.getStatus().compareTo(status) == 0).collect(Collectors.toList());
}
public Collection<Request> filterByMetallicCertification(String metallicName) {
return filterByMetallicCertification(metallicName, requests.values());
}
public Collection<Request> filterByMetallicCertification(String metallicName, Collection<Request> collection) {
return collection.stream()
.filter(request -> request.getMetallicLevel().compareTo(metallicName) == 0).collect(Collectors.toList());
}
public Collection<Request> filterByCapability(String capabilityName) {
return filterByCapability(capabilityName, requests.values());
}
public Collection<Request> filterByCapability(String capabilityName, Collection<Request> collection) {
return collection.stream()
.filter(request -> request.getCapability().compareTo(capabilityName) == 0).collect(Collectors.toList());
}
public HashMap<String, Integer> metallicStats;
public HashMap<String, Integer> capabilitiesStats;
public void startTimer() {
startDate = new Date();
}
public void stopTimer() {
endDate = new Date();
}
public long getElapsedTimeMillis() {
return endDate.getTime() - startDate.getTime();
}
}

View File

@ -21,7 +21,6 @@ public class Parameters {
parameters = new LinkedHashMap<>(); parameters = new LinkedHashMap<>();
} }
public static Parameters loadFromRESOScript(File file) { public static Parameters loadFromRESOScript(File file) {
final String PARAMETERS_KEY = "Parameters"; final String PARAMETERS_KEY = "Parameters";
final String NAME_FIELD = "Name"; final String NAME_FIELD = "Name";

View File

@ -16,14 +16,9 @@ import java.util.Date;
import java.util.List; import java.util.List;
public class Request { public class Request {
private String requirementId; private String requestId;
private String name;
private String outputFile; private String outputFile;
private String url; private String url;
private String testDescription;
private String metallicLevel;
private String capability;
private String webApiReference;
private Request request; private Request request;
private Status status; private Status status;
@ -39,55 +34,84 @@ public class Request {
* @param outputFile * @param outputFile
* @param url * @param url
*/ */
public Request(String requirementId, String outputFile, String url, String testDescription, String metallicLevel, public Request(String url, String outputFile, String requestId) {
String capability, String webApiReference) {
//TODO: add Builder
setRequirementId(requirementId);
setOutputFile(outputFile);
setUrl(url); setUrl(url);
setTestDescription(testDescription); setOutputFile(outputFile);
setMetallicLevel(metallicLevel); setRequestId(requestId);
setCapability(capability);
setWebApiReference(webApiReference);
} }
/**
* Gets the status of the given request
* @return the status of the request
*/
public Status getStatus() { public Status getStatus() {
return status; return status;
} }
/**
* Sets the status for the give request
* @param status the status to set
* @return the current instance of the request
*/
public Request setStatus(Status status) { public Request setStatus(Status status) {
this.status = status; this.status = status;
return this; return this;
} }
/**
* Starts request timer
* @return the current request
*/
public Request startTimer() { public Request startTimer() {
startDate = new Date(); startDate = new Date();
return this; return this;
} }
/**
* Stops request timer
* @return the current request
*/
public Request stopTimer() { public Request stopTimer() {
endDate = new Date(); endDate = new Date();
return this; return this;
} }
/**
* Gets the elapsed time the request took to run
* @return the elapsed time of the request in milliseconds
*/
public long getElapsedTimeMillis() { public long getElapsedTimeMillis() {
return endDate != null && startDate != null ? endDate.getTime() - startDate.getTime() : 0L; return endDate != null && startDate != null ? endDate.getTime() - startDate.getTime() : 0L;
} }
/**
* Sets the exception for a given request
* @param failedRequestException the exception that was thrown when the request was executed
*/
public void setFailedRequestException(Exception failedRequestException) { public void setFailedRequestException(Exception failedRequestException) {
this.failedRequestException = failedRequestException; this.failedRequestException = failedRequestException;
} }
/**
* HTTP Response code getter
* @return an Integer representing the response code
*/
public Integer getHttpResponseCode() { public Integer getHttpResponseCode() {
return httpResponseCode; return httpResponseCode;
} }
/**
* HTTP Response code setter
* @param httpResponseCode an Integer representing the HTTP Response code
*/
public void setHttpResponseCode(Integer httpResponseCode) { public void setHttpResponseCode(Integer httpResponseCode) {
this.httpResponseCode = httpResponseCode; this.httpResponseCode = httpResponseCode;
} }
/**
* An enumeration of request status options
*/
public enum Status { public enum Status {
STARTED, SUCCEEDED, FAILED, SKIPPED STARTED, SUCCEEDED, FAILED, SKIPPED
} }
@ -121,7 +145,7 @@ public class Request {
String expression = "/OutputScript/" + REQUESTS_KEY + "/node()"; String expression = "/OutputScript/" + REQUESTS_KEY + "/node()";
NodeList nodes = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET); NodeList nodes = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
Node node; Node node;
String name, outputFile, url, testDescription, requirementId, metallicLevel, capability, webApiReference; String outputFile, url, requestId;
Request request; Request request;
for (int i = 0; i < nodes.getLength(); i++) { for (int i = 0; i < nodes.getLength(); i++) {
@ -130,17 +154,9 @@ public class Request {
if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getNodeType() == Node.ELEMENT_NODE) {
outputFile = safeGetNamedItem(FIELDS.OUTPUT_FILE, node); outputFile = safeGetNamedItem(FIELDS.OUTPUT_FILE, node);
url = safeGetNamedItem(FIELDS.URL, node); url = safeGetNamedItem(FIELDS.URL, node);
testDescription = safeGetNamedItem(FIELDS.TEST_DESCRIPTION, node); requestId = safeGetNamedItem(FIELDS.REQUEST_ID, node);
requirementId = safeGetNamedItem(FIELDS.REQUIREMENT_ID, node);
metallicLevel = safeGetNamedItem(FIELDS.METALLIC_LEVEL, node);
capability = safeGetNamedItem(FIELDS.CAPABILITY, node);
webApiReference = safeGetNamedItem(FIELDS.WEB_API_REFERENCE, node);
request = new Request(requirementId, outputFile, url, testDescription, metallicLevel, capability, webApiReference);
name = safeGetNamedItem(FIELDS.NAME, node);
request.setName(name == null ? outputFile : name);
request = new Request(url, outputFile, requestId);
requests.add(request); requests.add(request);
} }
} }
@ -150,35 +166,20 @@ public class Request {
return requests; return requests;
} }
private int deserializeTests(Node node) { /**
int numTests = 0; * Gets the given request by Id, if present.
* @return either the request Id or null if none was passed. May be null.
*/
return numTests; public String getRequestId() {
} return requestId;
public String getRequirementId() {
return requirementId;
}
public void setRequirementId(String requirementId) {
this.requirementId = requirementId;
} }
/** /**
* Name getter * Sets the given request Id, if present.
* @return the name of the request * @param requestId the request Id to set.
*/ */
public String getName() { public void setRequestId(String requestId) {
return name; this.requestId = requestId;
}
/**
* Name setter
* @param name the name of the request
*/
private void setName(String name) {
this.name = name;
} }
/** /**
@ -213,46 +214,12 @@ public class Request {
this.url = url; this.url = url;
} }
public String getTestDescription() { /**
return testDescription; * Represents the known fields that can be in a serialized Request
} */
public void setTestDescription(String testDescription) {
this.testDescription = testDescription;
}
public String getMetallicLevel() {
return metallicLevel;
}
public void setMetallicLevel(String metallicLevel) {
this.metallicLevel = metallicLevel;
}
public String getCapability() {
return capability;
}
public void setCapability(String capability) {
this.capability = capability;
}
public String getWebApiReference() {
return webApiReference;
}
public void setWebApiReference(String webApiReference) {
this.webApiReference = webApiReference;
}
private static final class FIELDS { private static final class FIELDS {
static final String NAME = "Name";
static final String OUTPUT_FILE = "OutputFile"; static final String OUTPUT_FILE = "OutputFile";
static final String URL = "Url"; static final String URL = "Url";
static final String TEST_DESCRIPTION = "TestDescription"; static final String REQUEST_ID = "RequestId";
static final String REQUIREMENT_ID = "RequirementId";
static final String METALLIC_LEVEL = "MetallicLevel";
static final String CAPABILITY = "Capability";
static final String WEB_API_REFERENCE = "WebAPIReference";
} }
} }

View File

@ -12,7 +12,7 @@ import java.util.*;
public class Settings { public class Settings {
private ClientSettings clientSettings; private ClientSettings clientSettings;
private Parameters parameters; private Parameters parameters;
private Map<String, Request> requests; private Map<Request, Request> requests;
public Settings() { public Settings() {
clientSettings = new ClientSettings(); clientSettings = new ClientSettings();
@ -57,9 +57,7 @@ public class Settings {
* @return a copy of the request with the URL resolved. * @return a copy of the request with the URL resolved.
*/ */
public static Request resolveParameters(Request request, Settings settings) { public static Request resolveParameters(Request request, Settings settings) {
//calls to resolve nested parameters return new Request(resolveParametersString(request.getUrl(), settings), request.getOutputFile(), request.getRequestId());
return new Request(request.getRequirementId(), request.getOutputFile(), resolveParametersString(request.getUrl(), settings), request.getTestDescription(),
request.getMetallicLevel(), request.getCapability(), request.getWebApiReference());
} }
/** /**
@ -132,10 +130,27 @@ public class Settings {
* Requests getter. * Requests getter.
* @return The request map that was loaded, indexed by request name. * @return The request map that was loaded, indexed by request name.
*/ */
public Map<String, Request> getRequests() { public Map<Request, Request> getRequests() {
return requests; return requests;
} }
/**
* Requests getter.
* @return The request map that was loaded, indexed by request name.
*/
public Request getRequestById(String requestId) {
Request found = null;
for (Map.Entry<Request, Request> entry : getRequests().entrySet()) {
Request key = entry.getKey();
Request value = entry.getValue();
if (key.getRequestId().contentEquals(requestId)) {
found = value;
break;
}
}
return found;
}
/** /**
* Requests getter. * Requests getter.
* *
@ -151,7 +166,7 @@ public class Settings {
* @param requests a list of requests to create the request map from * @param requests a list of requests to create the request map from
*/ */
private void setRequests(List<Request> requests) { private void setRequests(List<Request> requests) {
this.requests = new LinkedHashMap<String, Request>(); this.requests = new LinkedHashMap<Request, Request>();
requests.forEach(request -> this.requests.put(request.getRequirementId(), request)); requests.forEach(request -> this.requests.put(request, request));
} }
} }