This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-models-validation-impl.git
commit 4ea2e70f46ca48f2e9e983e1e9b36eace22608dd Author: Konrad Windszus <[email protected]> AuthorDate: Fri Mar 3 10:59:02 2017 +0000 add some more tests around optional and disabled validation git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1785265 13f79535-47bb-0310-9956-ffa450edef68 --- ...nRequired.java => ModelValidationDisabled.java} | 4 +- .../validation/impl/it/ModelValidationIT.java | 51 ++++++++++++++++++---- ...nRequired.java => ModelValidationOptional.java} | 4 +- ...nRequired.java => ModelValidationRequired.java} | 2 +- .../content/contentWithNoValidationModel.json | 6 +++ .../apps/sling/validation/models/model1.json | 2 +- 6 files changed, 54 insertions(+), 15 deletions(-) diff --git a/src/test/java/org/apache/sling/models/validation/impl/it/ResourceType1ModelValidationRequired.java b/src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationDisabled.java similarity index 89% copy from src/test/java/org/apache/sling/models/validation/impl/it/ResourceType1ModelValidationRequired.java copy to src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationDisabled.java index f844c38..e9a8068 100644 --- a/src/test/java/org/apache/sling/models/validation/impl/it/ResourceType1ModelValidationRequired.java +++ b/src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationDisabled.java @@ -20,7 +20,7 @@ import org.apache.sling.api.resource.Resource; import org.apache.sling.models.annotations.Model; import org.apache.sling.models.annotations.ValidationStrategy; -@Model(validation=ValidationStrategy.REQUIRED, adaptables = { Resource.class }) -public class ResourceType1ModelValidationRequired { +@Model(validation=ValidationStrategy.DISABLED, adaptables = { Resource.class }) +public class ModelValidationDisabled { } diff --git a/src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationIT.java b/src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationIT.java index 124c21a..25f476d 100644 --- a/src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationIT.java +++ b/src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationIT.java @@ -25,6 +25,7 @@ import org.apache.sling.api.resource.ResourceResolverFactory; import org.apache.sling.commons.json.JSONException; import org.apache.sling.junit.rules.TeleporterRule; import org.apache.sling.models.factory.ModelFactory; +import org.apache.sling.models.factory.ValidationException; import org.apache.sling.models.validation.InvalidResourceException; import org.apache.sling.validation.ValidationService; import org.apache.sling.validation.model.ValidationModel; @@ -41,18 +42,18 @@ public class ModelValidationIT { @Rule public final TeleporterRule teleporter = TeleporterRule.forClass(getClass()).withResources("/SLING-CONTENT/"); - + @Rule public ExpectedException expectedEx = ExpectedException.none(); private ValidationService validationService; private ValidationModel validationModel; - + private ModelFactory modelFactory; - + private ResourceResolverFactory resourceResolverFactory; - + private ResourceResolver resourceResolver = null; private static final int MODEL_AVAILABLE_TIMEOUT_SECONDS = Integer.getInteger("ValidationServiceIT.ModelAvailabelTimeoutSeconds", 10); @@ -60,7 +61,7 @@ public class ModelValidationIT { @Before public void setUp() throws InterruptedException, LoginException { validationService = teleporter.getService(ValidationService.class); - + long timeoutMs = System.currentTimeMillis() + MODEL_AVAILABLE_TIMEOUT_SECONDS * 1000l; // wait for the model to become available (internally relies on search, is therefore asynchronous) do { @@ -76,7 +77,7 @@ public class ModelValidationIT { resourceResolverFactory = teleporter.getService(ResourceResolverFactory.class); resourceResolver = resourceResolverFactory.getServiceResourceResolver(null); } - + @After public void tearDown() { if (resourceResolver != null) { @@ -90,7 +91,7 @@ public class ModelValidationIT { Resource contentResource = resourceResolver.getResource("/apps/sling/validation/content/contentValid"); Assert.assertNotNull("Content resource must exist", contentResource); // generate a model - ResourceType1ModelValidationRequired model = modelFactory.createModel(contentResource, ResourceType1ModelValidationRequired.class); + ModelValidationRequired model = modelFactory.createModel(contentResource, ModelValidationRequired.class); Assert.assertNotNull("model must have been created", model); } @@ -100,8 +101,40 @@ public class ModelValidationIT { Resource contentResource = resourceResolver.getResource("/apps/sling/validation/content/contentInvalid"); Assert.assertNotNull("Content resource must exist", contentResource); expectedEx.expect(InvalidResourceException.class); - expectedEx.expectMessage("Validation errors for '/apps/sling/validation/content/contentInvalid':\nfield1:Property does not match the pattern \"^\\p{Upper}+$\""); + expectedEx.expectMessage( + "Validation errors for '/apps/sling/validation/content/contentInvalid':\nfield1:Property does not match the pattern \"^\\p{Upper}+$\""); + // generate a model + modelFactory.createModel(contentResource, ModelValidationRequired.class); + } + + @Test + public void testModelWithoutRequiredValidationModel() { + // create a valid resource + Resource contentResource = resourceResolver.getResource("/apps/sling/validation/content/contentWithNoValidationModel"); + Assert.assertNotNull("Content resource must exist", contentResource); + expectedEx.expect(ValidationException.class); + expectedEx.expectMessage("Could not find validation model for resource '/apps/sling/validation/content/contentWithNoValidationModel' with type 'test/resourceType1'"); + // generate a model + modelFactory.createModel(contentResource, ModelValidationRequired.class); + } + + @Test + public void testModelWithoutOptionalValidationModel() { + // create a valid resource + Resource contentResource = resourceResolver.getResource("/apps/sling/validation/content/contentWithNoValidationModel"); + Assert.assertNotNull("Content resource must exist", contentResource); // generate a model - modelFactory.createModel(contentResource, ResourceType1ModelValidationRequired.class); + ModelValidationOptional model = modelFactory.createModel(contentResource, ModelValidationOptional.class); + Assert.assertNotNull("model must have been created", model); + } + + @Test + public void testInvalidModelWithValidationDisabled() { + // create a valid resource + Resource contentResource = resourceResolver.getResource("/apps/sling/validation/content/contentWithNoValidationModel"); + Assert.assertNotNull("Content resource must exist", contentResource); + // generate a model + ModelValidationDisabled model = modelFactory.createModel(contentResource, ModelValidationDisabled.class); + Assert.assertNotNull("model must have been created", model); } } diff --git a/src/test/java/org/apache/sling/models/validation/impl/it/ResourceType1ModelValidationRequired.java b/src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationOptional.java similarity index 89% copy from src/test/java/org/apache/sling/models/validation/impl/it/ResourceType1ModelValidationRequired.java copy to src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationOptional.java index f844c38..5ff27db 100644 --- a/src/test/java/org/apache/sling/models/validation/impl/it/ResourceType1ModelValidationRequired.java +++ b/src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationOptional.java @@ -20,7 +20,7 @@ import org.apache.sling.api.resource.Resource; import org.apache.sling.models.annotations.Model; import org.apache.sling.models.annotations.ValidationStrategy; -@Model(validation=ValidationStrategy.REQUIRED, adaptables = { Resource.class }) -public class ResourceType1ModelValidationRequired { +@Model(validation=ValidationStrategy.OPTIONAL, adaptables = { Resource.class }) +public class ModelValidationOptional { } diff --git a/src/test/java/org/apache/sling/models/validation/impl/it/ResourceType1ModelValidationRequired.java b/src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationRequired.java similarity index 95% rename from src/test/java/org/apache/sling/models/validation/impl/it/ResourceType1ModelValidationRequired.java rename to src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationRequired.java index f844c38..84d2a59 100644 --- a/src/test/java/org/apache/sling/models/validation/impl/it/ResourceType1ModelValidationRequired.java +++ b/src/test/java/org/apache/sling/models/validation/impl/it/ModelValidationRequired.java @@ -21,6 +21,6 @@ import org.apache.sling.models.annotations.Model; import org.apache.sling.models.annotations.ValidationStrategy; @Model(validation=ValidationStrategy.REQUIRED, adaptables = { Resource.class }) -public class ResourceType1ModelValidationRequired { +public class ModelValidationRequired { } diff --git a/src/test/resources/SLING-CONTENT/apps/sling/validation/content/contentWithNoValidationModel.json b/src/test/resources/SLING-CONTENT/apps/sling/validation/content/contentWithNoValidationModel.json new file mode 100644 index 0000000..998657e --- /dev/null +++ b/src/test/resources/SLING-CONTENT/apps/sling/validation/content/contentWithNoValidationModel.json @@ -0,0 +1,6 @@ +{ + "jcr:primaryType": "nt:unstructured", + "sling:resourceType": "test/resourceType1", + "field1": "HELLOWORLD", + "field2": "anything" +} diff --git a/src/test/resources/SLING-CONTENT/apps/sling/validation/models/model1.json b/src/test/resources/SLING-CONTENT/apps/sling/validation/models/model1.json index cb46377..b603ec6 100644 --- a/src/test/resources/SLING-CONTENT/apps/sling/validation/models/model1.json +++ b/src/test/resources/SLING-CONTENT/apps/sling/validation/models/model1.json @@ -10,7 +10,7 @@ "jcr:primaryType" : "nt:unstructured", "org.apache.sling.validation.core.RegexValidator": { "jcr:primaryType" : "nt:unstructured", - "validatorArguments" : ["regex=^\\\p{Upper}+$"], + "validatorArguments" : ["regex=^\\p{Upper}+$"], "severity" : "10" } } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
