Added additional OData-Version response tests, improved logging, and revised the JSON Schema resource data to not require @odata.context (but still validate it) since it may not be an OData resource, and the specification doesn't require it to be present
This commit is contained in:
parent
4b84bc5ead
commit
1f2beff9f1
Binary file not shown.
|
@ -18,9 +18,11 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-END3 - Request and Validate Server Metadata
|
||||
When XML Metadata are requested from the service root in "ClientSettings_WebAPIURI"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the XML metadata returned by the server are valid
|
||||
And Edm metadata are requested from the service root in "ClientSettings_WebAPIURI"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the Edm metadata returned by the server are valid
|
||||
And the metadata contains a valid service document
|
||||
And the metadata contains the "Parameter_EndpointResource" resource
|
||||
|
@ -31,6 +33,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-END2 - Data System Endpoint test
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-END2"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And the results match the expected DataSystem JSON schema
|
||||
|
@ -39,6 +42,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QR1 - Search Parameters: Select KeyOrKeyNumeric Field
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QR1"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has singleton results in "Parameter_KeyOrKeyNumericField"
|
||||
And the provided "Parameter_KeyOrKeyNumericValue" is returned in "Parameter_KeyOrKeyNumericField"
|
||||
|
@ -47,6 +51,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QR3 - Query Support: $select
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QR3"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -56,6 +61,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QR4 - Query Support: $top
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QR4"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -66,12 +72,14 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QR5 - Query Support: $skip
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QR5"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
And data are present for fields contained within the given select list
|
||||
And a GET request is made to the resolved Url in "REQ-WA103-QR5" with $skip="Parameter_TopCount"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -81,27 +89,36 @@ Feature: Web API Server 1.0.2 Certification
|
|||
@REQ-WA103-QO1.1 @core @2.4.4 @core-endorsement @OData-4.0
|
||||
Scenario: REQ-WA103-QO1.1 - Query Support: $select case-sensitivity for OData 4.0
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO1.1"
|
||||
Then the server responds with a status code of 400 if the server headers report OData version "4.0"
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
Then the server responds with a status code of 400 if the server reports OData-Version "4.0"
|
||||
And the server responds with a status code of 200 if the server reports OData-Version "4.01"
|
||||
|
||||
@REQ-WA103-QO1.2 @core @2.4.4 @core-endorsement @OData-4.0
|
||||
Scenario: REQ-WA103-QO1.2 - Query Support: $filter case-sensitivity for OData 4.0
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO1.2"
|
||||
Then the server responds with a status code of 400 if the server headers report OData version "4.0"
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
Then the server responds with a status code of 400 if the server reports OData-Version "4.0"
|
||||
And the server responds with a status code of 200 if the server reports OData-Version "4.01"
|
||||
|
||||
@REQ-WA103-QO1.3 @core @2.4.4 @core-endorsement @OData-4.0
|
||||
Scenario: REQ-WA103-QO1.3 - Query Support: $orderby asc case-sensitivity for OData 4.0
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO1.3"
|
||||
Then the server responds with a status code of 400 if the server headers report OData version "4.0"
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
Then the server responds with a status code of 400 if the server reports OData-Version "4.0"
|
||||
And the server responds with a status code of 200 if the server reports OData-Version "4.01"
|
||||
|
||||
@REQ-WA103-QO1.4 @core @2.4.4 @core-endorsement @OData-4.0
|
||||
Scenario: REQ-WA103-QO1.4 - Query Support: $orderby desc case-sensitivity for OData 4.0
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO1.4"
|
||||
Then the server responds with a status code of 400 if the server headers report OData version "4.0"
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
Then the server responds with a status code of 400 if the server reports OData-Version "4.0"
|
||||
And the server responds with a status code of 200 if the server reports OData-Version "4.01"
|
||||
|
||||
@REQ-WA103-QO2 @core @2.4.4 @filterability-endorsement
|
||||
Scenario: REQ-WA103-QO2 - Query Support: $filter - Integer Comparison: eq
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO2"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -112,6 +129,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO3 - Query Support: $filter - Integer Comparison: ne
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO3"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -122,6 +140,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO4 - Query Support: $filter - Integer Comparison: gt
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO4"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -132,6 +151,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO5 - Query Support: $filter - Integer Comparison: ge
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO5"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -142,6 +162,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO6 - Query Support: $filter - Integer Comparison: lt
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO6"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -152,6 +173,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO7 - Query Support: $filter - Integer Comparison: le
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO7"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -162,6 +184,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO9 - Query Support: $filter - Integer Comparison: and
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO9"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -172,6 +195,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO10 - Query Support: $filter - Integer Comparison: or
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO10"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -182,6 +206,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO11 - Query Support: $filter - Integer Comparison: not() (operator)
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO11"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -192,6 +217,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO25 - Query Support: $filter: Date portion of EdmDateTimeOffset field is greater than EdmDate value
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO25"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -202,6 +228,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO26 - Query Support: $filter: Time portion of EdmDateTimeOffset field is less than EdmTime value
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO26"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -212,6 +239,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO26.2 - Query Support: $filter: Date: EdmDateTimeOffset field is less than EdmDateTimeOffset value
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO26.2"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -222,6 +250,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO27 - Query Support: $filter: DateTimeOffset le now()
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO27"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -237,31 +266,37 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-END1 - Service Endpoint
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-END1"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
|
||||
@REQ-WA103-RC3 @core @2.5.2 @core-endorsement
|
||||
Scenario: REQ-WA103-RC3 - 200 OK Request
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-RC3"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
|
||||
@REQ-WA103-RC5 @core @2.4.2 @core-endorsement
|
||||
Scenario: REQ-WA103-RC5 - 400 Bad Request
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-RC5"
|
||||
Then the server responds with a status code of 400
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
|
||||
@REQ-WA103-RC06 @core @2.5.2 @core-endorsement
|
||||
Scenario: REQ-WA103-RC06 - 403 Forbidden Request
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-RC06"
|
||||
Then the server responds with a status code of 403
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
|
||||
@REQ-WA103-RC07 @core @2.5.2 @core-endorsement
|
||||
Scenario: REQ-WA103-RC07 - 404 Not Found Request
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-RC07"
|
||||
Then the server responds with a status code of 404
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
|
||||
@REQ-WA103-RC11 @core @2.5.2 @core-endorsement
|
||||
Scenario: REQ-WA103-RC11 - 501 Not Implemented Request
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-RC11"
|
||||
Then the server responds with a status code of 501
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
|
||||
|
||||
#######################################
|
||||
|
@ -272,6 +307,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QM7 - Support Single Value Lookups
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QM7"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -282,6 +318,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QM8 - Support Multi Value Lookups
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QM8"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -292,6 +329,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QM8.2 - Support Multi Value Lookups multiple values
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QM8.2"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -303,6 +341,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO8 - Query Support: $filter - Comparison: has
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO8"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -313,6 +352,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO28.1 - Query Support: $orderby asc filtered
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO28.1"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -323,6 +363,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO28.2 - Query Support: $orderby asc no filter
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO28.2"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -333,6 +374,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO28.3 - Query Support: $orderby desc filtered
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO28.3"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -343,6 +385,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO28.4 - Query Support: $orderby desc no filter
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO28.4"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -358,6 +401,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO18.1 - Query Support: $filter: Date: year
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO18.1"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -368,6 +412,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO18.2 - Query Support: $filter: Date: year comparison with timestamp
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO18.2"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -378,6 +423,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO19.1 - Query Support: $filter: Date: month
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO19.1"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -388,6 +434,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO19.2 - Query Support: $filter: Date: month comparison with timestamp
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO19.2"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -398,6 +445,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO20.1 - Query Support: $filter: Date: day
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO20.1"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -408,6 +456,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO20.2 - Query Support: $filter: Date: day comparison with timestamp
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO20.2"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -418,6 +467,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO21 - Query Support: $filter: Date: hour comparison with timestamp
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO21"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -428,6 +478,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO22 - Query Support: $filter: Date: minute comparison with timestamp
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO22"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -438,6 +489,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO23 - Query Support: $filter: Date: second comparison with timestamp
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO23"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -448,6 +500,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO24 - Query Support: $filter: Date: fractional seconds comparison with timestamp
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO24"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -462,6 +515,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO13 - Query Support: $filter - String: contains
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO13"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -472,6 +526,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO14 - Query Support: $filter - String: ends with
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO14"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -482,6 +537,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO15 - Query Support: $filter - String: starts with
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO15"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -492,6 +548,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO16 - Query Support: $filter - String: tolower() support
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO16"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -502,6 +559,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO17 - Query Support: $filter - String: toupper() support
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO17"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -512,6 +570,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO29.1 - Query Support: $expand
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO29.1"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -524,6 +583,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
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"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -533,6 +593,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
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"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -542,6 +603,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QM3 - Support Literals: any() Lambda Expression (TODO)
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QM3"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -551,6 +613,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
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"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -560,6 +623,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
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"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -569,6 +633,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
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"
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the response is valid JSON
|
||||
And the response has results
|
||||
And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list
|
||||
|
@ -578,6 +643,7 @@ Feature: Web API Server 1.0.2 Certification
|
|||
Scenario: REQ-WA103-QO12 - Query Support: $filter - Grouping: filter (ge, le) and (gt, lt) and expect (gt, lt)
|
||||
When a GET request is made to the resolved Url in "REQ-WA103-QO12" using the OData Client
|
||||
Then the server responds with a status code of 200
|
||||
And the server has an OData-Version header value of "4.0" or "4.01"
|
||||
And the OData client response has client entity set data
|
||||
And client entity set Integer data in "Parameter_IntegerField" "gt" "Parameter_IntegerValueLow"
|
||||
And client entity set Integer data in "Parameter_IntegerField" "lt" "Parameter_IntegerValueHigh"
|
||||
|
|
|
@ -324,7 +324,7 @@ public class WebAPIServer_1_0_2 implements En {
|
|||
/*
|
||||
* GET request by requirementId (see generic.resoscript)
|
||||
*/
|
||||
When("^a GET request is made to the resolved Url in \"([^\"]*)\"$", this::executeGetRequest);
|
||||
When("^a GET request is made to the resolved Url in \"([^\"]*)\"$", this::prepareAndExecuteGetRequest);
|
||||
|
||||
/*
|
||||
* Assert response code
|
||||
|
@ -336,7 +336,13 @@ public class WebAPIServer_1_0_2 implements En {
|
|||
|
||||
if (assertedResponseCode.intValue() != getTestContainer().getResponseCode().intValue()) {
|
||||
if (getTestContainer().getODataClientErrorException() != null) {
|
||||
LOG.error("OData Client Exception: " + getTestContainer().getODataClientErrorException().getODataError().getMessage());
|
||||
if (getTestContainer().getODataClientErrorException().getODataError().getMessage() != null) {
|
||||
LOG.error("Request failed with the following message: "
|
||||
+ getTestContainer().getODataClientErrorException().getODataError().getMessage());
|
||||
} else if (getTestContainer().getODataClientErrorException() != null) {
|
||||
LOG.error("Request failed with the following message: "
|
||||
+ getTestContainer().getODataClientErrorException().getMessage());
|
||||
}
|
||||
}
|
||||
fail("ERROR: asserted response code does not match the one returned from the server!");
|
||||
}
|
||||
|
@ -377,7 +383,7 @@ public class WebAPIServer_1_0_2 implements En {
|
|||
*
|
||||
* TODO: make a general Header assertion function
|
||||
*/
|
||||
Then("^the server responds with a status code of (\\d+) if the server headers report OData version \"([^\"]*)\"$", (Integer assertedHttpResponseCode, String assertedODataVersion) -> {
|
||||
Then("^the server responds with a status code of (\\d+) if the server reports OData-Version \"([^\"]*)\"$", (Integer assertedHttpResponseCode, String assertedODataVersion) -> {
|
||||
try {
|
||||
boolean versionsMatch = getTestContainer().getServerODataHeaderVersion().equals(assertedODataVersion),
|
||||
responseCodesMatch = getTestContainer().getResponseCode().intValue() == assertedHttpResponseCode.intValue();
|
||||
|
@ -387,6 +393,8 @@ public class WebAPIServer_1_0_2 implements En {
|
|||
if (versionsMatch) {
|
||||
LOG.info("Asserted Response Code: " + assertedHttpResponseCode + ", Response code: " + getTestContainer().getResponseCode());
|
||||
assertTrue("ERROR: asserted response code does not match the one returned from the server!", responseCodesMatch);
|
||||
} else {
|
||||
LOG.info("Test skipped! Only applies when the asserted version matches the reported server version.");
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
//Don't fail tests like in other cases because get requests may generate exceptions that we want to
|
||||
|
@ -428,8 +436,8 @@ public class WebAPIServer_1_0_2 implements En {
|
|||
And("^the response has results$", () -> {
|
||||
try {
|
||||
int count = from(getTestContainer().getResponseData()).getList(JSON_VALUE_PATH, HashMap.class).size();
|
||||
assertTrue("ERROR: no results were found in the '" + JSON_VALUE_PATH + "' path of the JSON response!", count > 0);
|
||||
LOG.info("Results count is: " + count);
|
||||
assertTrue("ERROR: no results returned from the server!", count > 0);
|
||||
} catch (Exception ex) {
|
||||
fail(ex.toString());
|
||||
}
|
||||
|
@ -782,7 +790,7 @@ public class WebAPIServer_1_0_2 implements En {
|
|||
LOG.info("Searching metadata for fields in given select list: " + getTestContainer().getSelectList().toString());
|
||||
getTestContainer().getSelectList().forEach(fieldName -> {
|
||||
//need to skip the expand field when looking through the metadata
|
||||
if (!fieldName.contentEquals(getTestContainer().getExpandField())) {
|
||||
if (getTestContainer().getExpandField() == null || !fieldName.contentEquals(getTestContainer().getExpandField())) {
|
||||
assertNotNull("ERROR: Field name '" + fieldName + "' is not present in server metadata!", getTestContainer().getCsdlForFieldName(fieldName));
|
||||
LOG.info("Found: '" + fieldName.trim() + "'");
|
||||
}
|
||||
|
@ -1015,12 +1023,32 @@ public class WebAPIServer_1_0_2 implements En {
|
|||
});
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* Ensures that the server reports one of the currently supported version headers, being 4.0 or 4.01 at the time of writing
|
||||
* TODO: add additional items for additional subsequent OData versions, as released
|
||||
*/
|
||||
And("^the server has an OData-Version header value of \"([^\"]*)\" or \"([^\"]*)\"$", (String val1, String val2) -> {
|
||||
assertNotNull("ERROR: must enter a first value", val1);
|
||||
assertNotNull("ERROR: must enter a second value", val2);
|
||||
|
||||
assertNotNull("ERROR: must specify an 'OData-Version' in the response header!"
|
||||
+ "\nSee: http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752225" ,
|
||||
getTestContainer().getServerODataHeaderVersion());
|
||||
|
||||
LOG.info("Reported OData-Version header value: '" + getTestContainer().getServerODataHeaderVersion() + "'");
|
||||
|
||||
assertTrue("ERROR: the 'OData-Version' response header must either be '" + val1 + "' or '" + val2 + "' (without quotes).",
|
||||
getTestContainer().getServerODataHeaderVersion().contentEquals(val1)
|
||||
|| getTestContainer().getServerODataHeaderVersion().contentEquals(val2) );
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Execute Get Request Wrapper
|
||||
*/
|
||||
void executeGetRequest(String requestId) {
|
||||
void prepareAndExecuteGetRequest(String requestId) {
|
||||
try {
|
||||
//reset local state each time a get request is run
|
||||
getTestContainer().resetState();
|
||||
|
@ -1029,9 +1057,12 @@ public class WebAPIServer_1_0_2 implements En {
|
|||
getTestContainer().setRequest(getTestContainer().getSettings().getRequest(requestId));
|
||||
LOG.info("Request ID: " + requestId);
|
||||
|
||||
//prepare request URI
|
||||
getTestContainer().setRequestUri(Commander.prepareURI(Settings.resolveParameters(
|
||||
getTestContainer().getSettings().getRequest(requestId), getTestContainer().getSettings()).getUrl()));
|
||||
LOG.info("Request URI: " + getTestContainer().getRequestUri().toString());
|
||||
|
||||
//execute request
|
||||
getTestContainer().executePreparedGetRequest();
|
||||
} catch (Exception ex) {
|
||||
LOG.debug("Exception was thrown in " + this.getClass() + ": " + ex.toString());
|
||||
|
|
|
@ -5,6 +5,7 @@ import org.apache.http.Header;
|
|||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.apache.olingo.client.api.communication.response.ODataRawResponse;
|
||||
import org.apache.olingo.client.api.communication.response.ODataResponse;
|
||||
import org.apache.olingo.client.api.edm.xml.XMLMetadata;
|
||||
import org.apache.olingo.commons.api.edm.Edm;
|
||||
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
|
||||
|
@ -27,9 +28,7 @@ import java.sql.Timestamp;
|
|||
import java.time.LocalDate;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.Year;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import static io.restassured.path.json.JsonPath.from;
|
||||
|
@ -319,7 +318,13 @@ public final class TestUtils {
|
|||
return convertInputStreamToString(oDataRawResponse.getRawResponse());
|
||||
}
|
||||
|
||||
public static String getHeaderData(String key, Header[] headers) {
|
||||
/**
|
||||
* Helper method to find headers with a given key in an an array of headers
|
||||
* @param key the header to get
|
||||
* @param headers an array containing Header objects
|
||||
* @return the value of the header with key, or null
|
||||
*/
|
||||
public static String getHeaderData(String key, Collection<Header> headers) {
|
||||
String data = null;
|
||||
|
||||
for (Header header : headers) {
|
||||
|
@ -330,6 +335,24 @@ public final class TestUtils {
|
|||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to unpack headers from a raw OData response
|
||||
* @param key the header to get
|
||||
* @param oDataResponse the OData raw response from the request
|
||||
* @return the value of the header with key, or null
|
||||
*/
|
||||
public static String getHeaderData(String key, ODataResponse oDataResponse) {
|
||||
if (key == null || oDataResponse.getHeader(key) == null) return null;
|
||||
ArrayList<String> result = new ArrayList<>(oDataResponse.getHeader(key));
|
||||
|
||||
if (result.size() > 0) {
|
||||
return result.get(0);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the given edmDateTimeOffsetString into a Java Instant (the type expected by the Olingo type converter).
|
||||
*
|
||||
|
|
|
@ -92,6 +92,27 @@ public final class WebApiTestContainer implements TestContainer {
|
|||
private AtomicReference<ODataRetrieveResponse<ClientEntitySet>> clientEntitySetResponse = new AtomicReference<>();
|
||||
private AtomicReference<ClientEntitySet> clientEntitySet = new AtomicReference<>();
|
||||
|
||||
/**
|
||||
* Resets the state of the test container
|
||||
*/
|
||||
public void resetState() {
|
||||
clientEntitySetRequest.set(null);
|
||||
clientEntitySetResponse.set(null);
|
||||
clientEntitySet.set(null);
|
||||
oDataRawResponse.set(null);
|
||||
request.set(null);
|
||||
requestUri.set(null);
|
||||
responseCode.set(null);
|
||||
responseData.set(null);
|
||||
initialResponseData.set(null);
|
||||
rawRequest.set(null);
|
||||
oDataClientErrorException.set(null);
|
||||
oDataServerErrorException.set(null);
|
||||
serverODataHeaderVersion.set(null);
|
||||
selectList.set(null);
|
||||
testAppliesToServerODataHeaderVersion.set(false);
|
||||
}
|
||||
|
||||
public void initialize() {
|
||||
setServiceRoot(getSettings().getClientSettings().get(ClientSettings.SERVICE_ROOT));
|
||||
|
||||
|
@ -146,22 +167,6 @@ public final class WebApiTestContainer implements TestContainer {
|
|||
return dataSystemEndpoint.startsWith(serviceRoot);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the state of the test container
|
||||
*/
|
||||
public void resetState() {
|
||||
oDataRawResponse.set(null);
|
||||
request.set(null);
|
||||
responseCode.set(null);
|
||||
responseData.set(null);
|
||||
initialResponseData.set(null);
|
||||
rawRequest.set(null);
|
||||
oDataClientErrorException.set(null);
|
||||
oDataServerErrorException.set(null);
|
||||
serverODataHeaderVersion.set(null);
|
||||
testAppliesToServerODataHeaderVersion.set(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes HTTP GET request and sets the expected local variables in the WebApiTestContainer
|
||||
* Handles exceptions and sets response codes as well.
|
||||
|
@ -172,14 +177,14 @@ public final class WebApiTestContainer implements TestContainer {
|
|||
getRawRequest().setFormat(ContentType.JSON.toContentTypeString());
|
||||
setODataRawResponse(getRawRequest().execute());
|
||||
setResponseData(TestUtils.convertInputStreamToString(getODataRawResponse().getRawResponse()));
|
||||
setServerODataHeaderVersion(getODataRawResponse().getHeader(HEADER_ODATA_VERSION).toString());
|
||||
setServerODataHeaderVersion(TestUtils.getHeaderData(HEADER_ODATA_VERSION, getODataRawResponse()));
|
||||
setResponseCode(getODataRawResponse().getStatusCode());
|
||||
LOG.info("Request succeeded..." + getResponseData().getBytes().length + " bytes received.");
|
||||
} catch (ODataClientErrorException cex) {
|
||||
LOG.debug("ODataClientErrorException caught. Check tests for asserted conditions...");
|
||||
LOG.debug(cex);
|
||||
setODataClientErrorException(cex);
|
||||
setServerODataHeaderVersion(TestUtils.getHeaderData(HEADER_ODATA_VERSION, cex.getHeaderInfo()));
|
||||
setServerODataHeaderVersion(TestUtils.getHeaderData(HEADER_ODATA_VERSION, Arrays.asList(cex.getHeaderInfo())));
|
||||
setResponseCode(cex.getStatusLine().getStatusCode());
|
||||
} catch (ODataServerErrorException ode) {
|
||||
LOG.debug("ODataServerErrorException thrown in executeGetRequest. Check tests for asserted conditions...");
|
||||
|
@ -256,6 +261,7 @@ public final class WebApiTestContainer implements TestContainer {
|
|||
if (edm.get() == null) {
|
||||
ODataRetrieveResponse<Edm> response = getCommander().prepareEdmMetadataRequest().execute();
|
||||
responseCode.set(response.getStatusCode());
|
||||
setServerODataHeaderVersion(TestUtils.getHeaderData(HEADER_ODATA_VERSION, response));
|
||||
edm.set(response.getBody());
|
||||
}
|
||||
return edm.get();
|
||||
|
@ -271,6 +277,7 @@ public final class WebApiTestContainer implements TestContainer {
|
|||
if (xmlMetadata.get() == null) {
|
||||
ODataRetrieveResponse<XMLMetadata> response = getCommander().prepareXMLMetadataRequest().execute();
|
||||
responseCode.set(response.getStatusCode());
|
||||
setServerODataHeaderVersion(TestUtils.getHeaderData(HEADER_ODATA_VERSION, response));
|
||||
xmlMetadata.set(response.getBody());
|
||||
}
|
||||
return xmlMetadata.get();
|
||||
|
@ -361,7 +368,7 @@ public final class WebApiTestContainer implements TestContainer {
|
|||
}
|
||||
|
||||
public String getServerODataHeaderVersion() {
|
||||
return serverODataHeaderVersion.get();
|
||||
return this.serverODataHeaderVersion.get();
|
||||
}
|
||||
|
||||
public void setServerODataHeaderVersion(String serverODataHeaderVersion) {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"type": "object",
|
||||
"title": "The Root Schema of the DataSystem resource",
|
||||
"description": "The root schema comprises the entire JSON document.",
|
||||
"description": "The root schema comprises the entire JSON document. See: https://members.reso.org/pages/viewpage.action?pageId=17629564#Appendix4-DataSystemXMLSchema-sample4Figure4-ODataJSONencapsulatedinstanceoftheschemaforreference.",
|
||||
"required": [
|
||||
"value"
|
||||
],
|
||||
|
|
Loading…
Reference in New Issue