Added Commander acceptance testing for XML and Metadata checking
This commit is contained in:
parent
63f1474257
commit
476d4b00ce
30
build.gradle
30
build.gradle
|
@ -42,6 +42,8 @@ dependencies {
|
|||
|
||||
compile 'com.networknt:json-schema-validator:1.0.35'
|
||||
|
||||
implementation 'org.mockito:mockito-core:3.3.3'
|
||||
|
||||
}
|
||||
|
||||
configurations {
|
||||
|
@ -91,7 +93,8 @@ task testWebApiServer_1_0_2_Gold() {
|
|||
'org.reso.certification.stepdefs#WebAPIServer_1_0_2',
|
||||
'src/main/java/org/reso/certification/features/web-api',
|
||||
'--tags',
|
||||
(systemProperties.get('cucumber.filter.tags', '').toString().trim().length() > 0 ? 'not @platinum and ' + systemProperties.get('cucumber.filter.tags') : 'not @platinum')
|
||||
(systemProperties.get('cucumber.filter.tags', '').toString().trim().length() > 0
|
||||
? 'not @platinum and ' + systemProperties.get('cucumber.filter.tags') : 'not @platinum')
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -141,7 +144,8 @@ task testDataDictionary_1_5() {
|
|||
'org.reso.certification.stepdefs#DataDictionary',
|
||||
'src/main/java/org/reso/certification/features/data-dictionary',
|
||||
'--tags',
|
||||
(systemProperties.get('cucumber.filter.tags', '').toString().trim().length() > 0 ? '@DD1.5 and ' + systemProperties.get('cucumber.filter.tags') : '@DD1.5')
|
||||
(systemProperties.get('cucumber.filter.tags', '').toString().trim().length() > 0
|
||||
? '@DD1.5 and ' + systemProperties.get('cucumber.filter.tags') : '@DD1.5')
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -167,7 +171,27 @@ task testDataDictionary_1_6() {
|
|||
'org.reso.certification.stepdefs#DataDictionary',
|
||||
'src/main/java/org/reso/certification/features/data-dictionary',
|
||||
'--tags',
|
||||
(systemProperties.get('cucumber.filter.tags', '').toString().trim().length() > 0 ? '@DD1.6 and ' + systemProperties.get('cucumber.filter.tags') : '@DD1.6')
|
||||
(systemProperties.get('cucumber.filter.tags', '').toString().trim().length() > 0
|
||||
? '@DD1.6 and ' + systemProperties.get('cucumber.filter.tags') : '@DD1.6')
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//used for internal Commander testing
|
||||
test {
|
||||
dependsOn assemble, compileTestJava
|
||||
doLast {
|
||||
javaexec {
|
||||
main = "io.cucumber.core.cli.Main"
|
||||
systemProperties = System.getProperties()
|
||||
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
|
||||
args = ['--strict',
|
||||
'--plugin',
|
||||
'pretty',
|
||||
'--glue',
|
||||
'org.reso.commander.test.stepdefs',
|
||||
'src/test/java/org/reso/commander/test/features'
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -357,6 +357,16 @@ public class Commander {
|
|||
* @return true if the metadata is valid, meaning that it's also a valid OData 4 Service Document
|
||||
*/
|
||||
public boolean validateMetadata(XMLMetadata metadata) {
|
||||
return validateMetadata(metadata, client);
|
||||
}
|
||||
|
||||
/**
|
||||
* Static version of the metadata validator that can work with a given client
|
||||
* @param metadata the XML Metadata to validate
|
||||
* @param client the OData client to use for validation
|
||||
* @return true if the given XML metadata is valid, false otherwise
|
||||
*/
|
||||
public static boolean validateMetadata(XMLMetadata metadata, ODataClient client) {
|
||||
try {
|
||||
// call the probably-useless metadata validator. can't hurt though
|
||||
// SEE: https://github.com/apache/olingo-odata4/blob/master/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataMetadataValidationImpl.java#L77-L116
|
||||
|
@ -383,10 +393,20 @@ public class Commander {
|
|||
* @return true if the metadata is valid, meaning that it's also a valid OData 4 Service Document
|
||||
*/
|
||||
public boolean validateMetadata(Edm metadata) {
|
||||
return validateMetadata(metadata, client);
|
||||
}
|
||||
|
||||
/**
|
||||
* Static version of the metadata validator that can work with a given client
|
||||
* @param edm the Edm to validate
|
||||
* @param client the OData client to use for validation
|
||||
* @return true if the given XML metadata is valid, false otherwise
|
||||
*/
|
||||
public static boolean validateMetadata(Edm edm, ODataClient client) {
|
||||
try {
|
||||
// call the probably-useless metadata validator. can't hurt though
|
||||
// SEE: https://github.com/apache/olingo-odata4/blob/master/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataMetadataValidationImpl.java#L77-L116
|
||||
client.metadataValidation().validateMetadata(metadata);
|
||||
client.metadataValidation().validateMetadata(edm);
|
||||
//if Edm metadata are invalid, the previous line will throw an exception and this line won't be reached.
|
||||
return true;
|
||||
} catch (NullPointerException nex) {
|
||||
|
@ -406,7 +426,7 @@ public class Commander {
|
|||
* @param inputStream the input stream containing the metadata to validate.
|
||||
* @return true if the given input stream contains valid XML Metadata, false otherwise.
|
||||
*/
|
||||
public boolean validateMetadata(InputStream inputStream) {
|
||||
public boolean validateXMLAndXMLMetadata(InputStream inputStream) {
|
||||
try {
|
||||
String xmlString = TestUtils.convertInputStreamToString(inputStream);
|
||||
|
||||
|
@ -429,6 +449,31 @@ public class Commander {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deserializes XML Metadata from a string
|
||||
* @param xmlMetadataString a string containing XML Metadata
|
||||
* @param client an instance of an OData Client
|
||||
* @return the XML Metadata contained within the string
|
||||
*/
|
||||
public static XMLMetadata deserializeXMLMetadata(String xmlMetadataString, ODataClient client) {
|
||||
//deserialize response into XML Metadata - will throw an exception if metadata are invalid
|
||||
return client.getDeserializer(ContentType.APPLICATION_XML)
|
||||
.toMetadata(new ByteArrayInputStream(xmlMetadataString.getBytes(StandardCharsets.UTF_8)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Deserializes Edm from XML Metadata
|
||||
* @param xmlMetadataString a string containing XML metadata
|
||||
* @param client an instance of an OData Client
|
||||
* @return the Edm contained within the xmlMetadataString
|
||||
*
|
||||
* TODO: rewrite the separate Edm request in the Web API server test code to only make one request and convert
|
||||
* to Edm from the XML Metadata that was received.
|
||||
*/
|
||||
public static Edm deserializeEdm(String xmlMetadataString, ODataClient client) {
|
||||
return client.getReader().readMetadata(new ByteArrayInputStream(xmlMetadataString.getBytes(StandardCharsets.UTF_8)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the given metadata contained in the given file path.
|
||||
*
|
||||
|
@ -437,7 +482,7 @@ public class Commander {
|
|||
*/
|
||||
public boolean validateMetadata(String pathToEdmx) {
|
||||
try {
|
||||
return validateMetadata(new FileInputStream(pathToEdmx));
|
||||
return validateXMLAndXMLMetadata(new FileInputStream(pathToEdmx));
|
||||
} catch (Exception ex) {
|
||||
LOG.error("ERROR: could not validate metadata.\nPath was:" + pathToEdmx);
|
||||
LOG.error(ex.getMessage());
|
||||
|
|
|
@ -22,14 +22,13 @@ import org.reso.models.Parameters;
|
|||
import org.reso.models.Request;
|
||||
import org.reso.models.Settings;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.net.URI;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.reso.commander.Commander.AMPERSAND;
|
||||
import static org.reso.commander.Commander.EQUALS;
|
||||
import static org.reso.commander.common.ErrorMsg.getDefaultErrorMessage;
|
||||
|
@ -300,12 +299,7 @@ public final class WebApiTestContainer implements TestContainer {
|
|||
setServerODataHeaderVersion(TestUtils.getHeaderData(HEADER_ODATA_VERSION, response));
|
||||
|
||||
xmlResponseData.set(TestUtils.convertInputStreamToString(response.getRawResponse()));
|
||||
|
||||
//deserialize response into XML Metadata - will throw an exception if metadata are in valid
|
||||
XMLMetadata metadata = getCommander().getClient().getDeserializer(ContentType.APPLICATION_XML)
|
||||
.toMetadata(new ByteArrayInputStream(xmlResponseData.get().getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
xmlMetadata.set(metadata);
|
||||
xmlMetadata.set(Commander.deserializeXMLMetadata(xmlResponseData.get(), getCommander().getClient()));
|
||||
} catch (Exception ex) {
|
||||
processODataRequestException(ex);
|
||||
} finally {
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
/*
|
||||
* This Java source file was generated by the Gradle 'init' task.
|
||||
*/
|
||||
package org.reso.commander;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class AppTest {
|
||||
@Test public void testParameterDeserialization() {
|
||||
//TODO
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
Feature: Web API 1.0.2 Server - XML and Metadata Validation
|
||||
|
||||
Background:
|
||||
Given an OData test client has been created
|
||||
|
||||
|
||||
#######################################
|
||||
# XML Validation Tests
|
||||
#######################################
|
||||
Scenario: XML Validation using OASIS reference XSDs
|
||||
Given data were loaded from the sample resource "good.edmx-and-edm.xml"
|
||||
When XML validation is performed on the resource data
|
||||
Then XML validation succeeds
|
||||
|
||||
Scenario: XML Validation fails when XML are malformed
|
||||
Given data were loaded from the sample resource "bad.edmx-unparsable-xml.xml"
|
||||
When XML validation is performed on the resource data
|
||||
Then XML validation fails
|
||||
|
||||
|
||||
#######################################
|
||||
# XML Metadata Validation Tests
|
||||
#######################################
|
||||
Scenario: XML Metadata validation succeeds when XML Metadata are valid
|
||||
Given data were loaded from the sample resource "good.edmx-and-edm.xml"
|
||||
When XML Metadata validation is performed on the resource data
|
||||
Then XML Metadata validation succeeds
|
||||
|
||||
Scenario: XML Validation fails when XML Metadata are missing Key element in EntityType definition
|
||||
Given data were loaded from the sample resource "bad.edmx-no-keyfield.xml"
|
||||
When XML Metadata validation is performed on the resource data
|
||||
Then XML Metadata validation fails
|
||||
|
||||
|
||||
#######################################
|
||||
# Edm Validation Tests
|
||||
#######################################
|
||||
Scenario: Edm validation succeeds when XML Metadata contain a valid Edm
|
||||
Given data were loaded from the sample resource "good.edmx-and-edm.xml"
|
||||
When Edm validation is performed on the resource data
|
||||
Then Edm Metadata validation succeeds
|
||||
|
||||
Scenario: Edm validation fails when XML Metadata don't contain a valid service document
|
||||
Given data were loaded from the sample resource "bad.edmx-wrong-edm-binding-target.xml"
|
||||
When Edm validation is performed on the resource data
|
||||
Then Edm Metadata validation fails
|
|
@ -0,0 +1,113 @@
|
|||
package org.reso.commander.test.stepdefs;
|
||||
|
||||
import io.cucumber.java8.En;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.apache.olingo.client.api.edm.xml.XMLMetadata;
|
||||
import org.apache.olingo.commons.api.edm.Edm;
|
||||
import org.reso.commander.Commander;
|
||||
import org.reso.commander.common.TestUtils;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.reso.commander.common.ErrorMsg.getDefaultErrorMessage;
|
||||
|
||||
public class XMLAndMetadataValidation implements En {
|
||||
private static final Logger LOG = LogManager.getLogger(XMLAndMetadataValidation.class);
|
||||
AtomicReference<String> xmlMetadataString = new AtomicReference<>();
|
||||
AtomicReference<XMLMetadata> xmlMetadata = new AtomicReference<>();
|
||||
AtomicReference<Edm> edm = new AtomicReference<>();
|
||||
AtomicReference<Commander> commander = new AtomicReference<>();
|
||||
|
||||
//state variables
|
||||
AtomicBoolean isXMLValid = new AtomicBoolean(false);
|
||||
AtomicBoolean isXMLMetadataValid = new AtomicBoolean(false);
|
||||
AtomicBoolean isEdmValid = new AtomicBoolean(false);
|
||||
|
||||
public XMLAndMetadataValidation() {
|
||||
//background
|
||||
runBackground();
|
||||
|
||||
/*
|
||||
* loads a test resource to a local string object by name
|
||||
*/
|
||||
Given("^data were loaded from the sample resource \"([^\"]*)\"$", (String resourceName) -> {
|
||||
assertNotNull(getDefaultErrorMessage("ERROR: resource name cannot be null!", resourceName));
|
||||
|
||||
try {
|
||||
xmlMetadataString.set(TestUtils.convertInputStreamToString(getClass().getClassLoader().getResourceAsStream(resourceName)));
|
||||
assertNotNull("ERROR: no string data was loaded from the given resource!", xmlMetadataString.get());
|
||||
} catch (Exception ex) {
|
||||
LOG.error("An exception was thrown trying to load the given resource name: " + resourceName);
|
||||
LOG.error(ex);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/*
|
||||
* XML validation
|
||||
*/
|
||||
When("^XML validation is performed on the resource data$", () -> {
|
||||
assertNotNull(getDefaultErrorMessage("resource data is null!", xmlMetadataString.get()));
|
||||
isXMLValid.set(Commander.validateXML(xmlMetadataString.get()));
|
||||
});
|
||||
Then("^XML validation succeeds$", () -> {
|
||||
assertTrue(getDefaultErrorMessage("expected XML validation to succeed but it failed!"), isXMLValid.get());
|
||||
});
|
||||
Then("^XML validation fails$", () -> {
|
||||
assertFalse(getDefaultErrorMessage("expected XML validation to succeed but it failed!"), isXMLValid.get());
|
||||
});
|
||||
|
||||
|
||||
/*
|
||||
* XML Metadata validation
|
||||
*/
|
||||
When("^XML Metadata validation is performed on the resource data$", () -> {
|
||||
assertNotNull(getDefaultErrorMessage("resource data is null!", xmlMetadataString.get()));
|
||||
|
||||
try {
|
||||
xmlMetadata.set(Commander.deserializeXMLMetadata(xmlMetadataString.get(), commander.get().getClient()));
|
||||
assertNotNull(getDefaultErrorMessage("XML Metadata cannot be null!"), xmlMetadata.get());
|
||||
isXMLMetadataValid.set(Commander.validateMetadata(xmlMetadata.get(), commander.get().getClient()));
|
||||
} catch (Exception ex) {
|
||||
fail(getDefaultErrorMessage("could not deserialize XML Metadata!"));
|
||||
}
|
||||
});
|
||||
Then("^XML Metadata validation succeeds$", () -> {
|
||||
assertTrue(getDefaultErrorMessage("expected XML validation to succeed but it failed!"), isXMLMetadataValid.get());
|
||||
});
|
||||
Then("^XML Metadata validation fails$", () -> {
|
||||
assertFalse(getDefaultErrorMessage("expected XML validation to fail but it succeeded!"), isXMLMetadataValid.get());
|
||||
});
|
||||
|
||||
|
||||
/*
|
||||
* Edm validation
|
||||
*/
|
||||
When("^Edm validation is performed on the resource data$", () -> {
|
||||
try {
|
||||
assertNotNull(getDefaultErrorMessage("resource data is null!", xmlMetadataString.get()));
|
||||
edm.set(Commander.deserializeEdm(xmlMetadataString.get(), commander.get().getClient()));
|
||||
isEdmValid.set(Commander.validateMetadata(edm.get(), commander.get().getClient()));
|
||||
} catch (Exception ex) {
|
||||
fail(getDefaultErrorMessage(ex));
|
||||
}
|
||||
|
||||
});
|
||||
Then("^Edm Metadata validation succeeds$", () -> {
|
||||
assertTrue(getDefaultErrorMessage("expected Entity Data Model (Edm) to succeed but it failed!"), isEdmValid.get());
|
||||
});
|
||||
Then("^Edm Metadata validation fails$", () -> {
|
||||
assertFalse(getDefaultErrorMessage("expected Entity Data Model (Edm) to fail but it succeeded!"), isEdmValid.get());
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void runBackground() {
|
||||
Given("^an OData test client has been created$", () -> {
|
||||
commander.set(Commander.Builder.class.newInstance().build());
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:DataServices>
|
||||
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="org.reso.metadata.Resources">
|
||||
<EntityType Name="Property">
|
||||
<!-- NOTE: intentionally removed keyfield to cause invalid Edmx -->
|
||||
<!-- <Key>-->
|
||||
<!-- <PropertyRef Name="ListingKey"/>-->
|
||||
<!-- </Key>-->
|
||||
<Property Name="ListingKey" Type="Edm.String" MaxLength="255" Nullable="false"/>
|
||||
<Property Name="ListingId" Type="Edm.String" MaxLength="255" />
|
||||
</EntityType>
|
||||
</Schema>
|
||||
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Default">
|
||||
<EntityContainer Name="Container">
|
||||
<EntitySet Name="Property" EntityType="org.reso.metadata.Resources.Property"/>
|
||||
</EntityContainer>
|
||||
</Schema>
|
||||
</edmx:DataServices>
|
||||
</edmx:Edmx>
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:DataServices>
|
||||
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="org.reso.metadata.Resources">
|
||||
<EntityType Name="Property">
|
||||
<Key>
|
||||
<PropertyRef Name="ListingKey"/>
|
||||
</Key>
|
||||
<Property Name="ListingKey" Type="Edm.String" MaxLength="255" Nullable="false"/>
|
||||
<Property Name="ListingId" Type="Edm.String" MaxLength="255" />
|
||||
</EntityType>
|
||||
</Schema>
|
||||
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Default">
|
||||
<EntityContainer Name="Container">
|
||||
<EntitySet Name="Property" EntityType="org.reso.metadata.Resources.Property"/>
|
||||
</EntityContainer>
|
||||
</Schema>
|
||||
</edmx:DataServices>
|
||||
<!-- NOTE: intentionally stray character-->'
|
||||
</edmx:Edmx>
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:DataServices>
|
||||
<Schema Namespace="org.reso.metadata" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<EntityType Name="Property">
|
||||
<Key>
|
||||
<PropertyRef Name="ListingKey"/>
|
||||
</Key>
|
||||
<Property Name="ListingKey" Nullable="false" Type="Edm.String"/>
|
||||
<NavigationProperty Name="ListingPhotos" Type="Collection(org.reso.metadata.resources.Media)"/>
|
||||
</EntityType>
|
||||
<EntityContainer Name="EntityContainer">
|
||||
<EntitySet EntityType="org.reso.metadata.resources.Property" Name="Property">
|
||||
<NavigationPropertyBinding Path="ListingPhotos" Target="Media"/>
|
||||
</EntitySet>
|
||||
</EntityContainer>
|
||||
</Schema>
|
||||
</edmx:DataServices>
|
||||
</edmx:Edmx>
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:DataServices>
|
||||
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="org.reso.metadata.Resources">
|
||||
<EntityType Name="Property">
|
||||
<Key>
|
||||
<PropertyRef Name="ListingKey"/>
|
||||
</Key>
|
||||
<Property Name="ListingKey" Type="Edm.String" MaxLength="255" Nullable="false"/>
|
||||
<Property Name="ModificationTimestamp" Type="Edm.DateTimeOffset" />
|
||||
</EntityType>
|
||||
</Schema>
|
||||
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Default">
|
||||
<EntityContainer Name="Container">
|
||||
<EntitySet Name="Property" EntityType="org.reso.metadata.Resources.Property"/>
|
||||
</EntityContainer>
|
||||
</Schema>
|
||||
</edmx:DataServices>
|
||||
</edmx:Edmx>
|
|
@ -0,0 +1,617 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
|
||||
<!--
|
||||
>>> To be used as a template for Web API Server 1.0.2 Platinum Certification <<<
|
||||
|
||||
NOTES:
|
||||
* Anything marked REQUIRED should be filled in.
|
||||
* Anything not market REQUIRED shouldn't have to be changed.
|
||||
* Some items are marked OPTIONAL.
|
||||
* Any item that has a blank Url will be skipped (which will be printed in the results).
|
||||
|
||||
Contact josh@reso.org with further questions.
|
||||
-->
|
||||
|
||||
<!DOCTYPE OutputScript [
|
||||
<!ELEMENT OutputScript (RESOScriptVersion|ClientSettings|Parameters|Requests)*>
|
||||
<!ELEMENT RESOScriptVersion (#PCDATA)>
|
||||
<!ELEMENT ClientSettings (WebAPIURI|AuthenticationType|BearerToken|ClientIdentification|ClientSecret|TokenURI|ClientScope)*>
|
||||
<!ELEMENT WebAPIURI (#PCDATA)>
|
||||
<!ELEMENT AuthenticationType (#PCDATA)>
|
||||
<!ELEMENT BearerToken (#PCDATA)>
|
||||
<!ELEMENT ClientIdentification (#PCDATA)>
|
||||
<!ELEMENT ClientSecret (#PCDATA)>
|
||||
<!ELEMENT TokenURI (#PCDATA)>
|
||||
<!ELEMENT ClientScope (#PCDATA)>
|
||||
<!ELEMENT Parameters (Parameter)*>
|
||||
<!ELEMENT Parameter (#PCDATA)>
|
||||
<!ATTLIST Parameter
|
||||
Name CDATA #REQUIRED
|
||||
Value CDATA #REQUIRED>
|
||||
<!ELEMENT Requests (Request)*>
|
||||
<!ELEMENT Request (#PCDATA)>
|
||||
<!ATTLIST Request
|
||||
OutputFile CDATA #REQUIRED
|
||||
RequestId CDATA #REQUIRED
|
||||
Url CDATA #REQUIRED>
|
||||
]>
|
||||
|
||||
<OutputScript>
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
Metadata
|
||||
############################################################-->
|
||||
|
||||
<!-- The current version of this RESOScript -->
|
||||
<RESOScriptVersion>2.0.2</RESOScriptVersion>
|
||||
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
Client Settings
|
||||
TODO: deprecate ClientSettings and move them to Parameters
|
||||
############################################################-->
|
||||
<ClientSettings>
|
||||
<!-- URLS -->
|
||||
<WebAPIURI></WebAPIURI>
|
||||
|
||||
<!-- Credentials -->
|
||||
|
||||
<!-- AuthenticationType
|
||||
|
||||
This is the OAuth2 grant_type.
|
||||
Use "authorization_code" for BearerToken and "client_credentials" for Client Credentials.
|
||||
|
||||
See:
|
||||
* https://www.oauth.com/oauth2-servers/access-tokens/authorization-code-request/
|
||||
* https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/
|
||||
-->
|
||||
|
||||
<!-- Grant Type: authorization_code -->
|
||||
<AuthenticationType>authorization_code</AuthenticationType>
|
||||
<BearerToken><!-- REQUIRED: Your BearerToken goes here if using Access Tokens --></BearerToken>
|
||||
|
||||
<!-- Grant Type: client_credentials -->
|
||||
<AuthenticationType>client_credentials</AuthenticationType>
|
||||
<ClientIdentification><!-- REQUIRED: Your client_id value if using Client Credentials--></ClientIdentification>
|
||||
<ClientSecret><!-- REQUIRED: Your client_secret value if using Client Credentials--></ClientSecret>
|
||||
<TokenURI><!-- REQUIRED: Your token endpoint URI--></TokenURI>
|
||||
<ClientScope>
|
||||
|
||||
<!--OPTIONAL - your client scope. See: https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/ -->
|
||||
</ClientScope>
|
||||
|
||||
</ClientSettings>
|
||||
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
Parameters Section - add your testing variables here
|
||||
############################################################-->
|
||||
|
||||
<Parameters>
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
Service Configuration
|
||||
############################################################-->
|
||||
|
||||
<!-- REQUIRED: Core - The name of the resource being tested. Should not be a path. -->
|
||||
<Parameter Name="EndpointResource" Value="REQUIRED: YOUR RESOURCE GOES HERE, FOR EXAMPLE, Property" />
|
||||
|
||||
<!-- REQUIRED: Core - The DataSystems endpoint being tested
|
||||
NOTE: the FULL DataSystems URL is required as it might not be relative to the Service Root.-->
|
||||
<Parameter Name="EndpointDataSystem" Value="REQUIRED: YOUR DATA SYSTEMS ENDPOINT GOES HERE" />
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
Required Fields and Values
|
||||
############################################################-->
|
||||
|
||||
<!-- Note: some of the required values already have sample values provided. See later sections for their values.-->
|
||||
|
||||
<!-- REQUIRED: Core - Substitute key name from your Resource here, either Key or KeyNumeric -->
|
||||
<Parameter Name="KeyOrKeyNumericField" Value="ListingKey" />
|
||||
|
||||
<!-- REQUIRED: Core - Provide a value for the KeyOrKeyNumeric from your server
|
||||
NOTE: if you are using Key instead of KeyNumeric values, wrap your Key in quotes: 'myUniqueKey123'
|
||||
-->
|
||||
<Parameter Name="KeyOrKeyNumericValue" Value="REQUIRED: YOUR KeyOrKeyNumericValue GOES HERE" />
|
||||
|
||||
<!-- REQUIRED: Core - Integer Field. Should be one of: Type="Edm.Int16", Type="Edm.Int32", or Type="Edm.Int64" -->
|
||||
<Parameter Name="IntegerField" Value="BedroomsTotal" />
|
||||
|
||||
<!-- REQUIRED: Core - Enumerated Field for Single-Value Testing -->
|
||||
<Parameter Name="SingleValueLookupField" Value="PropertyType" />
|
||||
<Parameter Name="SingleLookupValue" Value="Residential" />
|
||||
<Parameter Name="SingleValueLookupNamespace" Value="PropertyEnums.PropertyType" />
|
||||
|
||||
<!-- REQUIRED: Core - Enumerated Field for Multi-value testing -->
|
||||
<Parameter Name="MultipleValueLookupField" Value="Appliances" />
|
||||
<Parameter Name="MultipleValueLookupNamespace" Value="PropertyEnums.Appliances" />
|
||||
<Parameter Name="MultipleLookupValue1" Value="Refrigerator" />
|
||||
<Parameter Name="MultipleLookupValue2" Value="Stacked" />
|
||||
|
||||
<!-- REQUIRED: Bronze - Date Field for comparisons. Should be Type="Edm.Date" -->
|
||||
<Parameter Name="DateField" Value="ListingContractDate" />
|
||||
<Parameter Name="TimestampField" Value="ModificationTimestamp" />
|
||||
|
||||
<!-- REQUIRED: Platinum - String Field for comparisons. Should be Type="Edm.String" -->
|
||||
<Parameter Name="StringField" Value="StreetName" />
|
||||
|
||||
<!-- REQUIRED: Platinum - Expand Testing -->
|
||||
<Parameter Name="ExpandField" Value="ListAgent" />
|
||||
|
||||
<!-- REQUIRED: Platinum - GeoSpatial Testing -->
|
||||
<Parameter Name="GeoSpatialLatitudeField" Value="Latitude" />
|
||||
<Parameter Name="GeoSpatialLongitudeField" Value="Longitude" />
|
||||
<Parameter Name="GeoSpatialField" Value="Coordinates" />
|
||||
<Parameter Name="GeoSpatialValue" Value="REQUIRED: YOUR COORDINATES GO HERE in Longitude Latitude format" /> <!-- "Longitude Latitude" -->
|
||||
|
||||
<!-- REQUIRED: New Fields for WS103 Testing -->
|
||||
<Parameter Name="ValueField" Value="AboveGradeFinishedArea" />
|
||||
<Parameter Name="CastField" Value="AboveGradeFinishedArea" />
|
||||
<Parameter Name="CastFieldValue" Value="YOUR CastFieldValue GOES HERE. FOR EXAMPLE, 1200" />
|
||||
<Parameter Name="ConcatFieldOne" Value="StreetName" />
|
||||
<Parameter Name="ConcatFieldOneValue" Value="REQUIRED: Your OneValue GOES HERE>" />
|
||||
<Parameter Name="ConcatFieldTwo" Value="City" />
|
||||
<Parameter Name="ConcatFieldTwoValue" Value="YOUR TwoValue GOES HERE" />
|
||||
<Parameter Name="ConcatFieldBothValue" Value="Your OneValue: TwoValue GOES HERE" /> <!-- format: "OneValue: TwoValue" -->
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
Sample Field Values
|
||||
############################################################-->
|
||||
|
||||
<!-- IntegerField Sample Values-->
|
||||
<Parameter Name="IntegerValueLow" Value="9" />
|
||||
<Parameter Name="IntegerValueHigh" Value="15" />
|
||||
<Parameter Name="IntegerNotFound" Value="-1" />
|
||||
|
||||
<!-- Integer Field for "not" testing -->
|
||||
<Parameter Name="FilterNotField" Value="*Parameter_IntegerField*" />
|
||||
<Parameter Name="FilterNotValue" Value="-1" />
|
||||
|
||||
<!-- Platinum - String Fields for testing -->
|
||||
<Parameter Name="ContainsValue" Value="M" />
|
||||
<Parameter Name="EndsWithValue" Value="Rd" />
|
||||
<Parameter Name="StartsWithValue" Value="M" />
|
||||
<Parameter Name="ToLowerValue" Value="main" />
|
||||
<Parameter Name="ToUpperValue" Value="MAIN" />
|
||||
|
||||
<!-- Gold and Platinum: Date Fields for testing -->
|
||||
<Parameter Name="DateTimeValue" Value="2018-12-31T23:55:55-09:00" />
|
||||
<Parameter Name="DateValue" Value="2018-12-31" />
|
||||
<Parameter Name="YearValue" Value="2018" />
|
||||
<Parameter Name="MonthValue" Value="12" />
|
||||
<Parameter Name="DayValue" Value="31" />
|
||||
<Parameter Name="TimeValue" Value="23:55:55" />
|
||||
<Parameter Name="HourValue" Value="23" />
|
||||
<Parameter Name="MinuteValue" Value="55" />
|
||||
<Parameter Name="SecondValue" Value="55" />
|
||||
<Parameter Name="FractionalValue" Value="30" />
|
||||
|
||||
<!-- Platinum - GeoSpatial query values -->
|
||||
<Parameter Name="GeoSpatialDistanceValue" Value="1000" />
|
||||
<Parameter Name="SRID" Value="4326" />
|
||||
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
HTTP Code Testing
|
||||
############################################################-->
|
||||
|
||||
<!-- 200 Response OK: This should always work! No need to change it -->
|
||||
<Parameter Name="200_OK" Value="*Parameter_EndpointResource*" />
|
||||
|
||||
<!-- REQUIRED: 400 Bad Request - Adjust to something that produces a 400 response if this doesn't work -->
|
||||
<Parameter Name="400BadRequest" Value="*Parameter_EndpointResource*?$filter=BadField eq 'SoBad'" />
|
||||
|
||||
<!-- REQUIRED: 404 Not Found - You shouldn't need to change this -->
|
||||
<Parameter Name="404NotFound" Value="ResourceNotFound" />
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
Constants and Computed Values - Do Not Change
|
||||
############################################################-->
|
||||
|
||||
<!-- For Top, Skip, and Sort Testing -->
|
||||
<Parameter Name="TopCount" Value="5" />
|
||||
<Parameter Name="SortCount" Value="20" />
|
||||
|
||||
<!-- New Values for WS103 Testing -->
|
||||
<Parameter Name="CastFieldType" Value="Edm.String" />
|
||||
|
||||
<!-- Required resource lists for Standard Resource Names requirement -->
|
||||
<Parameter Name="WebAPI102_RequiredResourceList" Value="Property,Member,Office,Media" />
|
||||
|
||||
<!-- Allowed Resources - Update to 1.8 once it's approved -->
|
||||
<Parameter Name="DD17_WellKnownResourceList" Value="Property,Member,Office,Contacts,ContactListings,HistoryTransactional,InternetTracking,Media,OpenHouse,OUID,Prospecting,Queue,Rules,SavedSearch,Showing,Teams" />
|
||||
|
||||
<!-- Computed Has Value - uses SingleValueLookup field -->
|
||||
<Parameter Name="FilterHasField" Value="*Parameter_SingleValueLookupField*" />
|
||||
<Parameter Name="FilterHasValue" Value="*Parameter_SingleValueLookupValue*" />
|
||||
<Parameter Name="FilterHasLookupNamespace" Value="*Parameter_SingleValueLookupNamespace*" />
|
||||
<Parameter Name="FilterHasLookupValue" Value="*Parameter_SingleLookupValue*" />
|
||||
|
||||
<!-- Computed Enumeration Values - do not change -->
|
||||
<Parameter Name="SingleValueLookupValue" Value="*Parameter_SingleValueLookupNamespace*'*Parameter_SingleLookupValue*'" />
|
||||
<Parameter Name="FilterHasValueLookupValue" Value="*Parameter_FilterHasLookupNamespace*'*Parameter_FilterHasLookupValue*'" />
|
||||
<Parameter Name="MultipleValueLookupValue1" Value="*Parameter_MultipleValueLookupNamespace*'*Parameter_MultipleLookupValue1*'"/>
|
||||
<Parameter Name="MultipleValueLookupValue2" Value="*Parameter_MultipleValueLookupNamespace*'*Parameter_MultipleLookupValue2*'" />
|
||||
|
||||
<!-- OPTIONAL: Useful for testing the OData Format Parameter - Value="?$format=application/xml" -->
|
||||
<Parameter Name="OptionalMetadataFormatParameter" Value="" />
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
Optional Parameters. You should not need these
|
||||
############################################################-->
|
||||
|
||||
<!-- OPTIONAL: System Specific Additional Required Parameters for Queries. Leave Blank if none. -->
|
||||
<Parameter Name="RequiredParameters" Value="" />
|
||||
<Parameter Name="RequiredParametersFilter" Value="" />
|
||||
|
||||
</Parameters>
|
||||
|
||||
|
||||
<!--
|
||||
############################################################
|
||||
Requests Section - Queries used during testing,
|
||||
DO NOT CHANGE
|
||||
############################################################-->
|
||||
<Requests>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-END3"
|
||||
OutputFile="REQ-WA103-END3.metadata.xml"
|
||||
Url="*ClientSettings_WebAPIURI*/$metadata*Parameter_OptionalMetadataFormatParameter*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-END2"
|
||||
OutputFile="REQ-WA103-END2.datasystem.json"
|
||||
Url="*Parameter_EndpointDataSystem*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QR1"
|
||||
OutputFile="REQ-WA103-QR1.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*(*Parameter_KeyOrKeyNumericValue*)?$select=*Parameter_KeyOrKeyNumericField*,*Parameter_KeyOrKeyNumericField*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QR3"
|
||||
OutputFile="REQ-WA103-QR3.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* gt *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QR4"
|
||||
OutputFile="REQ-WA103-QR4.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* gt *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QR5"
|
||||
OutputFile="REQ-WA103-QR5.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* gt *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO1.1"
|
||||
OutputFile="REQ-WA103-QO1.1.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$SeLeCt=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* eq *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO1.2"
|
||||
OutputFile="REQ-WA103-QO1.2.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$FiLtEr=*Parameter_IntegerField* eq *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO1.3"
|
||||
OutputFile="REQ-WA103-QO1.3.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* gt *Parameter_IntegerValueLow**Parameter_RequiredParameters*&$OrDeRbY=*Parameter_IntegerField* asc"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO1.4"
|
||||
OutputFile="REQ-WA103-QO1.4.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* gt *Parameter_IntegerValueLow**Parameter_RequiredParameters*&$oRdErBy=*Parameter_IntegerField* desc"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO2"
|
||||
OutputFile="REQ-WA103-QO2"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* eq *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO3"
|
||||
OutputFile="REQ-WA103-QO3"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* ne *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO4"
|
||||
OutputFile="REQ-WA103-QO4"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* gt *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO5"
|
||||
OutputFile="REQ-WA103-QO5.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* ge *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO6"
|
||||
OutputFile="REQ-WA103-QO6.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* lt *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO7"
|
||||
OutputFile="REQ-WA103-QO7.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* le *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO9"
|
||||
OutputFile="REQ-WA103-QO9.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* gt *Parameter_IntegerValueLow* and *Parameter_IntegerField* lt *Parameter_IntegerValueHigh**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO10"
|
||||
OutputFile="REQ-WA103-QO10.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=*Parameter_IntegerField* gt *Parameter_IntegerValueHigh* or *Parameter_IntegerField* lt *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO11"
|
||||
OutputFile="REQ-WA103-QO11.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=not(*Parameter_FilterNotField* le *Parameter_FilterNotValue*)*Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO25"
|
||||
OutputFile="REQ-WA103-QO25.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_TimestampField*&$filter=date(*Parameter_TimestampField*) gt *Parameter_DateValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO26"
|
||||
OutputFile="REQ-WA103-QO26.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_TimestampField*&$filter=time(*Parameter_TimestampField*) lt *Parameter_TimeValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO26.2"
|
||||
OutputFile="REQ-WA103-QO26.2.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_TimestampField*&$filter=*Parameter_TimestampField* lt *Parameter_DateTimeValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO27"
|
||||
OutputFile="REQ-WA103-QO27.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_TimestampField*&$filter=*Parameter_TimestampField* le now()*Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QM7"
|
||||
OutputFile="REQ-WA103-QM7.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_KeyOrKeyNumericField*,*Parameter_SingleValueLookupField*&$filter=*Parameter_SingleValueLookupField* has *Parameter_SingleValueLookupValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QM8"
|
||||
OutputFile="REQ-WA103-QM8.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&$filter=*Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue1**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QM8.2"
|
||||
OutputFile="REQ-WA103-QM8.2.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_KeyOrKeyNumericField*,*Parameter_MultipleValueLookupField*&$filter=*Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue1* and *Parameter_MultipleValueLookupField* has *Parameter_MultipleValueLookupValue2**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO8"
|
||||
OutputFile="REQ-WA103-QO8.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_FilterHasField*&$filter=*Parameter_FilterHasField* has *Parameter_FilterHasValueLookupValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO28.1"
|
||||
OutputFile="REQ-WA103-QO28.1.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*,*Parameter_TimestampField*&$orderby=*Parameter_TimestampField* asc&$filter=*Parameter_IntegerField* gt *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO28.2"
|
||||
OutputFile="REQ-WA103-QO28.2.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*,*Parameter_TimestampField*&$orderby=*Parameter_TimestampField* asc"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO28.3"
|
||||
OutputFile="REQ-WA103-QO28.3.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*,*Parameter_TimestampField*&$orderby=*Parameter_TimestampField* desc&$filter=*Parameter_IntegerField* gt *Parameter_IntegerValueLow**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO28.4"
|
||||
OutputFile="REQ-WA103-QO28.4.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_SortCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*,*Parameter_TimestampField*&$orderby=*Parameter_TimestampField* desc"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO18.1"
|
||||
OutputFile="REQ-WA103-QO18.1.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_DateField*&$filter=year(*Parameter_DateField*) eq *Parameter_YearValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO18.2"
|
||||
OutputFile="REQ-WA103-QO18.2.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_TimestampField*&$filter=year(*Parameter_TimestampField*) eq *Parameter_YearValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO19.1"
|
||||
OutputFile="REQ-WA103-QO19.1.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_DateField*&$filter=month(*Parameter_DateField*) eq *Parameter_MonthValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO19.2"
|
||||
OutputFile="REQ-WA103-QO19.2.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_TimestampField*&$filter=month(*Parameter_TimestampField*) eq *Parameter_MonthValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO20.1"
|
||||
OutputFile="REQ-WA103-QO20.1.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_DateField*&$filter=day(*Parameter_DateField*) eq *Parameter_DayValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO20.2"
|
||||
OutputFile="REQ-WA103-QO20.2.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_TimestampField*&$filter=day(*Parameter_TimestampField*) eq *Parameter_DayValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO21"
|
||||
OutputFile="REQ-WA103-QO21.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_TimestampField*&$filter=hour(*Parameter_TimestampField*) eq *Parameter_HourValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO22"
|
||||
OutputFile="REQ-WA103-QO22.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_TimestampField*&$filter=minute(*Parameter_TimestampField*) gt *Parameter_MinuteValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO23"
|
||||
OutputFile="REQ-WA103-QO23.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_TimestampField*&$filter=second(*Parameter_TimestampField*) lt *Parameter_SecondValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO24"
|
||||
OutputFile="REQ-WA103-QO24.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_TimestampField*&$filter=fractionalseconds(*Parameter_TimestampField*) lt *Parameter_FractionalValue**Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO29.1"
|
||||
OutputFile="REQ-WA103-QO29.1.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_KeyOrKeyNumericField*,*Parameter_ExpandField*&$expand=*Parameter_ExpandField*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO29.2"
|
||||
OutputFile="REQ-WA103-QO29.2.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_KeyOrKeyNumericField*,*Parameter_ExpandField*&$expand=*Parameter_ExpandField*&$filter=PhotosCount gt 0"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO29.3"
|
||||
OutputFile="REQ-WA103-QO29.3.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_KeyOrKeyNumericField*,*Parameter_ExpandField*&$expand=*Parameter_ExpandField**Parameter_RequiredParametersFilter*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QM3"
|
||||
OutputFile="REQ-WA103-QM3.json"
|
||||
Url="*ClientSettings_WebAPIURI*/$any?$top=1"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QM4"
|
||||
OutputFile="REQ-WA103-QM4_All.json"
|
||||
Url="*ClientSettings_WebAPIURI*/$all?$top=1"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QM5.1"
|
||||
OutputFile="REQ-WA103-QM5_GeoSpatialLongLat_PointGeo.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_GeoSpatialField*&$filter=geo.distance(*Parameter_GeoSpatialField*, geography'SRID=*Parameter_SRID*;POINT(*Parameter_GeoSpatialValue*)' le *Parameter_GeoSpatialDistanceValue*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QM5.2"
|
||||
OutputFile="REQ-WA103-QM5_GeoSpatialLongLat_LatGT1_PointGeo.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_GeoSpatialField*&$filter=geo.distance(*Parameter_GeoSpatialField*, geography'SRID=*Parameter_SRID*;POINT(*Parameter_GeoSpatialValue*)' le *Parameter_GeoSpatialDistanceValue* and *Parameter_GeoSpatialLatitudeField* gt 1"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO12"
|
||||
OutputFile="REQ-WA103-QO12_Grouping.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_IntegerField*&$filter=(*Parameter_IntegerField* ge *Parameter_IntegerValueLow* and *Parameter_IntegerField* le *Parameter_IntegerValueHigh*) and (*Parameter_IntegerField* lt *Parameter_IntegerValueHigh* and *Parameter_IntegerField* gt *Parameter_IntegerValueLow*)*Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO13"
|
||||
OutputFile="REQ-WA103-QO13.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_StringField*&$filter=contains(*Parameter_StringField*,'*Parameter_ContainsValue*')*Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO14"
|
||||
OutputFile="REQ-WA103-QO14_EndsWith.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_StringField*&$filter=endswith(*Parameter_StringField*,'*Parameter_EndsWithValue*')*Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO15"
|
||||
OutputFile="REQ-WA103-QO15_StartsWith.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_StringField*&$filter=startswith(*Parameter_StringField*,'*Parameter_StartsWithValue*')*Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO16"
|
||||
OutputFile="REQ-WA103-QO16_ToLowerEQ.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_StringField*&$filter=tolower(*Parameter_StringField*) eq '*Parameter_ToLowerValue*'*Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-QO17"
|
||||
OutputFile="REQ-WA103-QO17_ToUpperEQ.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_EndpointResource*?$top=*Parameter_TopCount*&$select=*Parameter_KeyOrKeyNumericField*,*Parameter_StringField*&$filter=toupper(*Parameter_StringField*) eq '*Parameter_ToUpperValue*'*Parameter_RequiredParameters*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-END1"
|
||||
OutputFile="REQ-WA103-END1_Service.json"
|
||||
Url="*ClientSettings_WebAPIURI*/"
|
||||
/>
|
||||
|
||||
|
||||
<!-- RESPONSE CODE SUPPORT -->
|
||||
<Request
|
||||
RequestId="REQ-WA103-RC3"
|
||||
OutputFile="REQ-WA103-RC05_200OKRequest.json"
|
||||
Url="ClientSettings_WebAPIURI*/*Parameter_200_OK*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-RC5"
|
||||
OutputFile="REQ-WA103-RC05_400BadRequest.json"
|
||||
Url="ClientSettings_WebAPIURI*/*Parameter_400BadRequest*"
|
||||
/>
|
||||
|
||||
<Request
|
||||
RequestId="REQ-WA103-RC07"
|
||||
OutputFile="REQ-WA103-RC07_404NotFound.json"
|
||||
Url="*ClientSettings_WebAPIURI*/*Parameter_404NotFound*"
|
||||
/>
|
||||
|
||||
</Requests>
|
||||
</OutputScript>
|
Loading…
Reference in New Issue