diff options
Diffstat (limited to 'config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java')
-rw-r--r-- | config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java new file mode 100644 index 00000000000..c17b9a6f220 --- /dev/null +++ b/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java @@ -0,0 +1,96 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.application.api; + +import com.yahoo.test.ManualClock; +import org.junit.Assert; +import org.junit.Test; +import org.xml.sax.SAXException; + +import java.io.IOException; +import java.io.StringReader; +import java.time.Instant; +import java.util.Optional; + +import static org.junit.Assert.assertEquals; + +/** + * @author bratseth + */ +public class ValidationOverrideTest { + + @Test + public void testValidationOverridesInIsolation() throws IOException, SAXException { + String validationOverrides = + "<validation-overrides>" + + " <allow until='2000-01-01'>indexing-change</allow>" + + " <allow until='2000-01-03' comment='any text'>indexing-mode-change</allow>" + + "</validation-overrides>"; + { + + ValidationOverrides overrides = ValidationOverrides.fromXml(new StringReader(validationOverrides)); + Instant now = ManualClock.at("2000-01-01T23:59:00"); + assertOverridden("indexing-change", overrides, now); + assertOverridden("indexing-mode-change", overrides, now); + assertNotOverridden("field-type-change", overrides, now); + + assertEquals(validationOverrides, overrides.xmlForm()); + } + + { + ValidationOverrides overrides = ValidationOverrides.fromXml(new StringReader(validationOverrides)); + Instant now = ManualClock.at("2000-01-02T00:00:00"); + assertNotOverridden("indexing-change", overrides, now); + assertOverridden("indexing-mode-change", overrides, now); + assertNotOverridden("field-type-change", overrides, now); + } + + { + ValidationOverrides overrides = ValidationOverrides.fromXml(new StringReader(validationOverrides)); + Instant now = ManualClock.at("2000-01-04T00:00:00"); + assertNotOverridden("indexing-change", overrides, now); + assertNotOverridden("indexing-mode-change", overrides, now); + assertNotOverridden("field-type-change", overrides, now); + } + + } + + @Test + public void testInvalidOverridePeriod() throws IOException, SAXException { + String validationOverrides = + "<validation-overrides>" + + " <allow until='2000-02-02'>indexing-change</allow>" + + "</validation-overrides>"; + + try { + ValidationOverrides overrides = ValidationOverrides.fromXml(new StringReader(validationOverrides)); + Instant now = ManualClock.at("2000-01-01T23:59:00"); + overrides.allows("indexing-change", now); + Assert.fail("Expected validation interval override validation validation failure"); + } + catch (IllegalArgumentException e) { + Assert.assertEquals("allow 'indexing-change' until 2000-02-03T00:00:00Z is too far in the future: Max 30 days is allowed", + e.getMessage()); + } + } + + @Test + public void testEmpty() { + ValidationOverrides empty = ValidationOverrides.empty; + ValidationOverrides emptyReserialized = ValidationOverrides.fromXml(empty.xmlForm()); + assertEquals(empty.xmlForm(), emptyReserialized.xmlForm()); + } + + private void assertOverridden(String validationId, ValidationOverrides overrides, Instant now) { + overrides.invalid(ValidationId.from(validationId).get(), "message", now); // should not throw exception + } + + private void assertNotOverridden(String validationId, ValidationOverrides overrides, Instant now) { + try { + overrides.invalid(ValidationId.from(validationId).get(), "message", now); + Assert.fail("Expected '" + validationId + "' to not be overridden"); + } + catch (ValidationOverrides.ValidationException expected) { + } + } + +} |