Improved file names and structure
This commit is contained in:
parent
e80d1fc172
commit
dea7e62634
|
@ -10,7 +10,7 @@ on:
|
|||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
@ -22,5 +22,5 @@ jobs:
|
|||
java-version: 1.8
|
||||
- name: Grant execute permission for gradlew
|
||||
run: chmod +x gradlew
|
||||
- name: Run acceptance tests
|
||||
run: ./gradlew test
|
||||
- name: Build and Run acceptance tests
|
||||
run: ./gradlew build
|
||||
|
|
|
@ -249,58 +249,6 @@ public class Commander {
|
|||
return reportBuilder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
client.metadataValidation().validateMetadata(metadata);
|
||||
|
||||
// also check whether metadata contains a valid service document in OData v4 format
|
||||
return client.metadataValidation().isServiceDocument(metadata)
|
||||
&& client.metadataValidation().isV4Metadata(metadata);
|
||||
} catch (NullPointerException nex) {
|
||||
LOG.error("ERROR: Validation Failed! Null pointer exception while trying to validate metadata.");
|
||||
} catch (Exception ex) {
|
||||
LOG.error("ERROR: Validation Failed! General error occurred when validating metadata.\n" + ex.getMessage());
|
||||
if (ex.getCause() != null) {
|
||||
LOG.error("Caused by: " + ex.getCause().getMessage());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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(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) {
|
||||
LOG.error("ERROR: Validation Failed! Null pointer exception while trying to validate metadata.");
|
||||
} catch (Exception ex) {
|
||||
LOG.error("ERROR: Validation Failed! General error occurred when validating metadata.\n" + ex.getMessage());
|
||||
if (ex.getCause() != null) {
|
||||
LOG.error("Caused by: " + ex.getCause().getMessage());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deserializes XML Metadata from a string
|
||||
*
|
||||
|
@ -432,6 +380,59 @@ public class Commander {
|
|||
client.getSerializer(ContentType.APPLICATION_XML).write(writer, metadata);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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
|
||||
client.metadataValidation().validateMetadata(metadata);
|
||||
|
||||
// also check whether metadata contains a valid service document in OData v4 format
|
||||
return client.metadataValidation().isServiceDocument(metadata)
|
||||
&& client.metadataValidation().isV4Metadata(metadata);
|
||||
} catch (NullPointerException nex) {
|
||||
LOG.error("ERROR: Validation Failed! Null pointer exception while trying to validate metadata.");
|
||||
} catch (Exception ex) {
|
||||
LOG.error("ERROR: Validation Failed! General error occurred when validating metadata.\n" + ex.getMessage());
|
||||
if (ex.getCause() != null) {
|
||||
LOG.error("Caused by: " + ex.getCause().getMessage());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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(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) {
|
||||
LOG.error("ERROR: Validation Failed! Null pointer exception while trying to validate metadata.");
|
||||
} catch (Exception ex) {
|
||||
LOG.error("ERROR: Validation Failed! General error occurred when validating metadata.\n" + ex.getMessage());
|
||||
if (ex.getCause() != null) {
|
||||
LOG.error("Caused by: " + ex.getCause().getMessage());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates given XMLMetadata
|
||||
*
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
Feature: Commander Platinum Web API Test Container
|
||||
|
||||
Background:
|
||||
Given a Web API test container was created using the RESOScript "mock.platinum.resoscript"
|
||||
And metadata were loaded from the sample resource "good.edmx-and-edm.xml"
|
||||
Given a Web API test container was created using the RESOScript "mock-platinum.resoscript"
|
||||
And metadata were loaded from the sample resource "good-edmx-and-edm.xml"
|
||||
|
||||
Scenario: Test Container is using Token-Based Authentication
|
||||
Given a Commander instance exists within the test container
|
||||
And Settings are present in the test container
|
||||
And an auth token is provided in "ClientSettings_BearerToken"
|
||||
Then the Commander is created using auth token client mode
|
||||
And the auth token has a value of "testTokenValue"
|
||||
But the Commander is not created using client credentials mode
|
||||
|
||||
Scenario: Test that the container can validate known-good metadata
|
||||
|
|
|
@ -8,12 +8,12 @@ Feature: Commander XML and Metadata Validation
|
|||
# XML Validation Tests
|
||||
#######################################
|
||||
Scenario: XML Validation using OASIS reference XSDs
|
||||
Given metadata were loaded from the sample resource "good.edmx-and-edm.xml"
|
||||
Given metadata 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 metadata were loaded from the sample resource "bad.edmx-unparsable-xml.xml"
|
||||
Given metadata were loaded from the sample resource "bad-edmx-unparsable-xml.xml"
|
||||
When XML validation is performed on the resource data
|
||||
Then XML validation fails
|
||||
|
||||
|
@ -22,12 +22,12 @@ Feature: Commander XML and Metadata Validation
|
|||
# XML Metadata Validation Tests
|
||||
#######################################
|
||||
Scenario: XML Metadata validation succeeds when XML Metadata are valid
|
||||
Given metadata were loaded from the sample resource "good.edmx-and-edm.xml"
|
||||
Given metadata 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 metadata were loaded from the sample resource "bad.edmx-no-keyfield.xml"
|
||||
Given metadata 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
|
||||
|
||||
|
@ -36,11 +36,11 @@ Feature: Commander XML and Metadata Validation
|
|||
# Edm Validation Tests
|
||||
#######################################
|
||||
Scenario: Edm validation succeeds when XML Metadata contain a valid Edm
|
||||
Given metadata were loaded from the sample resource "good.edmx-and-edm.xml"
|
||||
Given metadata 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 metadata were loaded from the sample resource "bad.edmx-wrong-edm-binding-target.xml"
|
||||
Given metadata 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
|
|
@ -26,11 +26,11 @@ public class TestWebAPITestContainer implements En {
|
|||
URL resource = getClass().getClassLoader().getResource(fileName);
|
||||
assertNotNull(getDefaultErrorMessage("was unable to find the given RESOScript:", fileName), resource);
|
||||
|
||||
testContainer.set(new WebAPITestContainer());
|
||||
testContainer.get().setSettings(Settings.loadFromRESOScript(new File(resource.getFile())));
|
||||
assertNotNull(getDefaultErrorMessage("could not load mock RESOScript: " + resource.getFile()), testContainer.get().getSettings());
|
||||
setTestContainer(new WebAPITestContainer());
|
||||
getTestContainer().setSettings(Settings.loadFromRESOScript(new File(resource.getFile())));
|
||||
assertNotNull(getDefaultErrorMessage("could not load mock RESOScript: " + resource.getFile()), getTestContainer().getSettings());
|
||||
|
||||
testContainer.get().initialize();
|
||||
getTestContainer().initialize();
|
||||
} catch (Exception ex) {
|
||||
fail(getDefaultErrorMessage(ex));
|
||||
}
|
||||
|
@ -41,28 +41,41 @@ public class TestWebAPITestContainer implements En {
|
|||
* auth settings validation
|
||||
*/
|
||||
When("^an auth token is provided in \"([^\"]*)\"$", (String clientSettingsAuthToken) -> {
|
||||
String token = Settings.resolveParametersString(clientSettingsAuthToken, testContainer.get().getSettings());
|
||||
String token = Settings.resolveParametersString(clientSettingsAuthToken, getTestContainer().getSettings());
|
||||
assertNotNull(getDefaultErrorMessage("BearerToken is null in the ClientSettings section!"), token);
|
||||
});
|
||||
|
||||
Then("^the Commander is created using auth token client mode$", () -> {
|
||||
assertTrue(getDefaultErrorMessage("expected auth token Commander client!"),
|
||||
testContainer.get().getCommander().isAuthTokenClient());
|
||||
getTestContainer().getCommander().isAuthTokenClient());
|
||||
});
|
||||
|
||||
And("^the auth token has a value of \"([^\"]*)\"$", (String assertedTokenValue) -> {
|
||||
assertEquals(getDefaultErrorMessage("asserted token value is not equal to the one provided in the container!"),
|
||||
assertedTokenValue, testContainer.get().getAuthToken());
|
||||
assertedTokenValue, getTestContainer().getAuthToken());
|
||||
});
|
||||
|
||||
And("^a Commander instance exists within the test container$", () -> {
|
||||
assertNotNull(getDefaultErrorMessage("Commander instance is null in the container!"),
|
||||
testContainer.get().getCommander());
|
||||
getTestContainer().getCommander());
|
||||
});
|
||||
|
||||
But("^the Commander is not created using client credentials mode$", () -> {
|
||||
assertFalse(getDefaultErrorMessage("expected that the Commander was not using client credentials"),
|
||||
testContainer.get().getCommander().isOAuth2Client());
|
||||
getTestContainer().getCommander().isOAuth2Client());
|
||||
});
|
||||
|
||||
And("^Settings are present in the test container$", () -> {
|
||||
assertNotNull(getDefaultErrorMessage("settings were not found in the Web API test container!"),
|
||||
getTestContainer().getSettings());
|
||||
});
|
||||
}
|
||||
|
||||
private WebAPITestContainer getTestContainer() {
|
||||
return testContainer.get();
|
||||
}
|
||||
|
||||
private void setTestContainer(WebAPITestContainer testContainer) {
|
||||
this.testContainer.set(testContainer);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,12 @@
|
|||
<Property Name="ListingKey" Type="Edm.String" MaxLength="255" Nullable="false"/>
|
||||
<Property Name="ListingId" Type="Edm.String" MaxLength="255" />
|
||||
</EntityType>
|
||||
<EnumType Name="FileAccess" UnderlyingType="Edm.Int32" IsFlags="true">
|
||||
<Member Name="Read" Value="1" />
|
||||
<Member Name="Write" Value="2" />
|
||||
<Member Name="Create" Value="4" />
|
||||
<Member Name="Delete" Value="8" />
|
||||
</EnumType>
|
||||
</Schema>
|
||||
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Default">
|
||||
<EntityContainer Name="Container">
|
Loading…
Reference in New Issue