Search in sources :

Example 11 with CswQueryBuilder

use of org.codice.ddf.itests.common.csw.CswQueryBuilder in project ddf by codice.

the class TestCatalogValidation method testValidationChecker.

@Test
public void testValidationChecker() throws Exception {
    configureEnforcedMetacardValidators(Arrays.asList(""), getAdminConfig());
    String id1 = ingestXmlFromResourceAndWait("/metacard1.xml");
    String id2 = ingestXmlFromResourceAndWait("/metacard2.xml");
    configureShowInvalidMetacards("true", "true", getAdminConfig());
    // Search for all entries, implicit "validation-warnings is null" and "validation-errors is null"
    // should get added by ValidationQueryFactory
    String query = new CswQueryBuilder().addAttributeFilter(PROPERTY_IS_LIKE, "AnyText", "*").getQuery();
    ValidatableResponse response = given().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML).body(query).post(CSW_PATH.getUrl()).then();
    // Assert Metacard1 is in results AND Metacard2 because showInvalidMetacards is true
    response.body(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id1)));
    response.body((hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id2))));
    // Search for all entries that have no validation warnings or errors
    query = new CswQueryBuilder().addPropertyIsNullAttributeFilter(Validation.VALIDATION_WARNINGS).getQuery();
    response = given().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML).body(query).post(CSW_PATH.getUrl()).then();
    // Assert Metacard1 is in results AND not Metacard2
    response.body(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id1)));
    response.body(not(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id2))));
    //Search for all entries that have validation-warnings from sample-validator or no validation warnings
    query = new CswQueryBuilder().addAttributeFilter(PROPERTY_IS_EQUAL_TO, Validation.VALIDATION_WARNINGS, "*").addPropertyIsNullAttributeFilter(Validation.VALIDATION_WARNINGS).addLogicalOperator(OR).getQuery();
    response = given().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML).body(query).post(CSW_PATH.getUrl()).then();
    // Assert Metacard1 and NOT metacard2 is in results
    response.body(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id1)));
    response.body(not(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id2))));
    // Search for all metacards that have validation-warnings
    query = new CswQueryBuilder().addAttributeFilter(PROPERTY_IS_EQUAL_TO, Validation.VALIDATION_WARNINGS, "*").getQuery();
    response = given().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML).body(query).post(CSW_PATH.getUrl()).then();
    // Assert Metacard1 and metacard2 are NOT in results
    response.body(not(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id1))));
    response.body(not(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id2))));
}
Also used : ValidatableResponse(com.jayway.restassured.response.ValidatableResponse) CswQueryBuilder(org.codice.ddf.itests.common.csw.CswQueryBuilder) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) AbstractIntegrationTest(org.codice.ddf.itests.common.AbstractIntegrationTest) Test(org.junit.Test)

Example 12 with CswQueryBuilder

use of org.codice.ddf.itests.common.csw.CswQueryBuilder in project ddf by codice.

the class TestCatalogValidation method testFilterPluginWarningsOnly.

@Test
public void testFilterPluginWarningsOnly() throws Exception {
    //Configure not enforcing validators so invalid metacards can ingest
    configureEnforcedMetacardValidators(Collections.singletonList(""), getAdminConfig());
    ingestXmlFromResourceAndWait(XML_RECORD_RESOURCE_PATH + "/sampleWarningMetacard.xml");
    ingestXmlFromResourceAndWait(XML_RECORD_RESOURCE_PATH + "/sampleCleanMetacard.xml");
    ingestXmlFromResourceAndWait(XML_RECORD_RESOURCE_PATH + "/sampleErrorMetacard.xml");
    // Configure invalid filtering
    configureMetacardValidityFilterPlugin(Arrays.asList("invalid-state=system-admin"), getAdminConfig());
    //Configure to filter metacards with validation warnings but not validation errors
    configureFilterInvalidMetacards("false", "true", getAdminConfig());
    testWithRetry(() -> {
        String query = new CswQueryBuilder().addAttributeFilter(PROPERTY_IS_LIKE, "AnyText", "*").getQuery();
        ValidatableResponse response = given().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML).body(query).post(CSW_PATH.getUrl()).then();
        //clean metacard should be in results but not invalid one
        response.body(not(containsString("warning metacard")));
        response.body(containsString("clean metacard"));
        response.body(containsString("error metacard"));
    });
}
Also used : ValidatableResponse(com.jayway.restassured.response.ValidatableResponse) CswQueryBuilder(org.codice.ddf.itests.common.csw.CswQueryBuilder) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) AbstractIntegrationTest(org.codice.ddf.itests.common.AbstractIntegrationTest) Test(org.junit.Test)

Example 13 with CswQueryBuilder

use of org.codice.ddf.itests.common.csw.CswQueryBuilder in project ddf by codice.

the class TestCatalogValidation method testEnforceValidityErrorsOnly.

@Test
public void testEnforceValidityErrorsOnly() throws Exception {
    //Configure to enforce validator
    configureEnforcedMetacardValidators(Collections.singletonList("sample-validator"), getAdminConfig());
    //Configure to enforce errors but not warnings
    configureEnforceValidityErrorsAndWarnings("true", "false", getAdminConfig());
    ingestXmlFromResourceAndWait(XML_RECORD_RESOURCE_PATH + "/sampleWarningMetacard.xml");
    ingestXmlFromResourceAndWait(XML_RECORD_RESOURCE_PATH + "/sampleCleanMetacard.xml");
    ingestXmlFromResourceWaitForFailure(XML_RECORD_RESOURCE_PATH + "/sampleErrorMetacard.xml");
    configureFilterInvalidMetacards("true", "false", getAdminConfig());
    String query = new CswQueryBuilder().addAttributeFilter(PROPERTY_IS_LIKE, "AnyText", "*").getQuery();
    ValidatableResponse response = given().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML).body(query).post(CSW_PATH.getUrl()).then();
    //clean metacard and warning metacard should be in results but not error one
    response.body(containsString("warning metacard"));
    response.body(containsString("clean metacard"));
    response.body(not(containsString("error metacard")));
}
Also used : ValidatableResponse(com.jayway.restassured.response.ValidatableResponse) CswQueryBuilder(org.codice.ddf.itests.common.csw.CswQueryBuilder) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) AbstractIntegrationTest(org.codice.ddf.itests.common.AbstractIntegrationTest) Test(org.junit.Test)

Example 14 with CswQueryBuilder

use of org.codice.ddf.itests.common.csw.CswQueryBuilder in project ddf by codice.

the class TestCatalogValidation method testEnforceValidityWarningsOnly.

@Test
public void testEnforceValidityWarningsOnly() throws Exception {
    //Configure to enforce validator
    configureEnforcedMetacardValidators(Collections.singletonList("sample-validator"), getAdminConfig());
    //Configure to enforce warnings but not errors
    configureEnforceValidityErrorsAndWarnings("false", "true", getAdminConfig());
    ingestXmlFromResourceWaitForFailure(XML_RECORD_RESOURCE_PATH + "/sampleWarningMetacard.xml");
    ingestXmlFromResourceAndWait(XML_RECORD_RESOURCE_PATH + "/sampleCleanMetacard.xml");
    ingestXmlFromResourceAndWait(XML_RECORD_RESOURCE_PATH + "/sampleErrorMetacard.xml");
    configureFilterInvalidMetacards("true", "false", getAdminConfig());
    String query = new CswQueryBuilder().addAttributeFilter(PROPERTY_IS_LIKE, "AnyText", "*").getQuery();
    ValidatableResponse response = given().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML).body(query).post(CSW_PATH.getUrl()).then();
    //clean metacard and error metacard should be in results but not warning one
    response.body(not(containsString("warning metacard")));
    response.body(containsString("clean metacard"));
    response.body(containsString("error metacard"));
}
Also used : ValidatableResponse(com.jayway.restassured.response.ValidatableResponse) CswQueryBuilder(org.codice.ddf.itests.common.csw.CswQueryBuilder) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) AbstractIntegrationTest(org.codice.ddf.itests.common.AbstractIntegrationTest) Test(org.junit.Test)

Example 15 with CswQueryBuilder

use of org.codice.ddf.itests.common.csw.CswQueryBuilder in project ddf by codice.

the class TestCatalogValidation method testValidationFiltering.

@Test
public void testValidationFiltering() throws Exception {
    // Update metacardMarkerPlugin config with no enforcedMetacardValidators
    configureEnforcedMetacardValidators(Arrays.asList(""), getAdminConfig());
    // Configure the PDP
    PdpProperties pdpProperties = new PdpProperties();
    pdpProperties.put("matchOneMappings", Arrays.asList("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role=invalid-state"));
    Configuration config = configAdmin.getConfiguration("ddf.security.pdp.realm.AuthzRealm", null);
    Dictionary<String, ?> configProps = new Hashtable<>(pdpProperties);
    config.update(configProps);
    String id1 = ingestXmlFromResourceAndWait("/metacard1.xml");
    String id2 = ingestXmlFromResourceAndWait("/metacard2.xml");
    // Configure invalid filtering
    configureMetacardValidityFilterPlugin(Arrays.asList("invalid-state=system-admin"), getAdminConfig());
    configureShowInvalidMetacards("false", "true", getAdminConfig());
    configureFilterInvalidMetacards("true", "false", getAdminConfig());
    try {
        String query = new CswQueryBuilder().addAttributeFilter(PROPERTY_IS_LIKE, Validation.VALIDATION_WARNINGS, "*").addPropertyIsNullAttributeFilter(Validation.VALIDATION_WARNINGS).addLogicalOperator(OR).getQuery();
        ValidatableResponse response = given().auth().preemptive().basic("admin", "admin").header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML).body(query).post(CSW_PATH.getUrl()).then();
        // Assert Metacard2 is in results AND Metacard1
        response.body(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id1)));
        response.body(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id2)));
        response = given().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML).body(query).post(CSW_PATH.getUrl()).then();
        // Assert Metacard2 is in results Metacard1
        response.body(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id1)));
        response.body(not(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id2))));
        // Configure invalid filtering
        configureMetacardValidityFilterPlugin(Arrays.asList("invalid-state=system-admin,guest"), getAdminConfig());
        response = given().auth().preemptive().basic("admin", "admin").header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML).body(query).post(CSW_PATH.getUrl()).then();
        // Assert Metacard2 is in results AND Metacard1
        response.body(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id1)));
        response.body(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id2)));
        response = given().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML).body(query).post(CSW_PATH.getUrl()).then();
        // Assert Metacard2 is in results Metacard1
        response.body(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id1)));
        response.body(hasXPath(format("/GetRecordsResponse/SearchResults/Record[identifier=\"%s\"]", id2)));
    } finally {
        config = configAdmin.getConfiguration("ddf.security.pdp.realm.AuthzRealm", null);
        configProps = new Hashtable<>(new PdpProperties());
        config.update(configProps);
    }
}
Also used : ValidatableResponse(com.jayway.restassured.response.ValidatableResponse) Configuration(org.osgi.service.cm.Configuration) CswQueryBuilder(org.codice.ddf.itests.common.csw.CswQueryBuilder) Hashtable(java.util.Hashtable) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) AbstractIntegrationTest(org.codice.ddf.itests.common.AbstractIntegrationTest) Test(org.junit.Test)

Aggregations

CswQueryBuilder (org.codice.ddf.itests.common.csw.CswQueryBuilder)17 ValidatableResponse (com.jayway.restassured.response.ValidatableResponse)16 AbstractIntegrationTest (org.codice.ddf.itests.common.AbstractIntegrationTest)15 Test (org.junit.Test)15 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)14 Hashtable (java.util.Hashtable)1 SkipUnstableTest (org.codice.ddf.itests.common.annotations.SkipUnstableTest)1 Matcher (org.hamcrest.Matcher)1 Matchers.containsString (org.hamcrest.Matchers.containsString)1 Configuration (org.osgi.service.cm.Configuration)1