summaryrefslogtreecommitdiffstats
path: root/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java
diff options
context:
space:
mode:
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.java96
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) {
+ }
+ }
+
+}