aboutsummaryrefslogtreecommitdiffstats
path: root/utils/src/test
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2019-09-13 12:14:25 -0400
committerJim Hahn <jrh3@att.com>2019-09-13 17:40:29 -0400
commitaf2e4018c92b0fb311f60dfe507335b12e2935a4 (patch)
tree62705712e2a88682e17bdd9fef248e866c7407e4 /utils/src/test
parent63922e3dc9101f019cb490f6c5d02991c10fcdf5 (diff)
Extract YamlJsonTranslator from StandardYamlCoder
Refactored StandardYamlCoder, extracting a new class, YamlJsonTranslator, from it. This facilitates performing yaml translation when not using a standard "gson" coder. Added YamlJacksonHandler which supports YAML translation layered on top of a JacksonHandler instead of a GsonMessageBodyHandler. Also added junit tests to complete coverage of StandardCoder. Also added public APPLICATION_YAML to YamlMessageBodyHandler. Change-Id: Ia470fa194661fbf1aebeaf0f18b57f2a984cb64b Issue-ID: POLICY-2081 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'utils/src/test')
-rw-r--r--utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java24
-rw-r--r--utils/src/test/java/org/onap/policy/common/utils/coder/StandardYamlCoderTest.java100
-rw-r--r--utils/src/test/java/org/onap/policy/common/utils/coder/YamlJsonTranslatorTest.java170
-rw-r--r--utils/src/test/resources/org/onap/policy/common/utils/coder/YamlJsonTranslator.yaml (renamed from utils/src/test/resources/org/onap/policy/common/utils/coder/StandardYamlCoder.yaml)0
4 files changed, 210 insertions, 84 deletions
diff --git a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java
index 2992933f..2a70f85a 100644
--- a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java
+++ b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java
@@ -44,6 +44,7 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
@@ -201,6 +202,22 @@ public class StandardCoderTest {
}
@Test
+ public void testToJsonTree_testFromJsonJsonElementClassT() throws Exception {
+ MyMap map = new MyMap();
+ map.props = new LinkedHashMap<>();
+ map.props.put("jel keyA", "jel valueA");
+ map.props.put("jel keyB", "jel valueB");
+
+ JsonElement json = coder.toJsonTree(map);
+ assertEquals("{'props':{'jel keyA':'jel valueA','jel keyB':'jel valueB'}}".replace('\'', '"'), json.toString());
+
+ Object result = coder.fromJson(json, MyMap.class);
+
+ assertNotNull(result);
+ assertEquals("{jel keyA=jel valueA, jel keyB=jel valueB}", result.toString());
+ }
+
+ @Test
public void testConvertFromDouble() throws Exception {
String text = "[listA, {keyA=100}, 200]";
assertEquals(text, coder.decode(text, Object.class).toString());
@@ -276,7 +293,12 @@ public class StandardCoderTest {
}
}
- private static class MyMap {
+ public static class MyMap {
private Map<String, Object> props;
+
+ @Override
+ public String toString() {
+ return props.toString();
+ }
}
}
diff --git a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardYamlCoderTest.java b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardYamlCoderTest.java
index 6ec20663..e38c5c9c 100644
--- a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardYamlCoderTest.java
+++ b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardYamlCoderTest.java
@@ -20,26 +20,20 @@
package org.onap.policy.common.utils.coder;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
import java.io.File;
-import java.io.IOException;
-import java.io.Writer;
+import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
-import java.util.List;
-import java.util.Map;
-import lombok.EqualsAndHashCode;
import org.junit.Before;
import org.junit.Test;
+import org.onap.policy.common.utils.coder.YamlJsonTranslatorTest.Container;
public class StandardYamlCoderTest {
private static final File YAML_FILE =
- new File("src/test/resources/org/onap/policy/common/utils/coder/StandardYamlCoder.yaml");
+ new File("src/test/resources/org/onap/policy/common/utils/coder/YamlJsonTranslator.yaml");
private StandardYamlCoder coder;
private Container cont;
@@ -59,30 +53,13 @@ public class StandardYamlCoderTest {
}
@Test
- public void testToJsonWriterObject() throws Exception {
- IOException ex = new IOException("expected exception");
+ public void testToJsonWriterObject() throws CoderException {
+ StringWriter wtr = new StringWriter();
+ coder.encode(wtr, cont);
+ String yaml = wtr.toString();
- // writer that throws an exception when the write() method is invoked
- Writer wtr = new Writer() {
- @Override
- public void write(char[] cbuf, int off, int len) throws IOException {
- throw ex;
- }
-
- @Override
- public void flush() throws IOException {
- // do nothing
- }
-
- @Override
- public void close() throws IOException {
- // do nothing
- }
- };
-
- assertThatThrownBy(() -> coder.encode(wtr, cont)).isInstanceOf(CoderException.class);
-
- wtr.close();
+ Container cont2 = coder.decode(yaml, Container.class);
+ assertEquals(cont, cont2);
}
@Test
@@ -94,58 +71,15 @@ public class StandardYamlCoderTest {
@Test
public void testFromJsonReaderClassOfT() {
- assertNotNull(cont.item);
- assertTrue(cont.item.boolVal);
- assertEquals(1000L, cont.item.longVal);
- assertEquals(1010.1f, cont.item.floatVal, 0.00001);
-
- assertEquals(4, cont.list.size());
- assertNull(cont.list.get(1));
-
- assertEquals(20, cont.list.get(0).intVal);
- assertEquals("string 30", cont.list.get(0).stringVal);
- assertNull(cont.list.get(0).nullVal);
-
- assertEquals(40.0, cont.list.get(2).doubleVal, 0.000001);
- assertNull(cont.list.get(2).nullVal);
- assertNotNull(cont.list.get(2).another);
- assertEquals(50, cont.list.get(2).another.intVal);
-
- assertTrue(cont.list.get(3).boolVal);
-
- assertNotNull(cont.map);
- assertEquals(3, cont.map.size());
-
- assertNotNull(cont.map.get("itemA"));
- assertEquals("stringA", cont.map.get("itemA").stringVal);
-
- assertNotNull(cont.map.get("itemB"));
- assertEquals("stringB", cont.map.get("itemB").stringVal);
-
- double dbl = 123456789012345678901234567890.0;
- assertEquals(dbl, cont.map.get("itemB").doubleVal, 1000.0);
-
- assertNotNull(cont.map.get("itemC"));
- assertTrue(cont.map.get("itemC").boolVal);
+ YamlJsonTranslatorTest.verify(cont);
}
-
- @EqualsAndHashCode
- public static class Container {
- private Item item;
- private List<Item> list;
- private Map<String, Item> map;
- }
-
- @EqualsAndHashCode
- public static class Item {
- private boolean boolVal;
- private int intVal;
- private long longVal;
- private double doubleVal;
- private float floatVal;
- private String stringVal;
- private Object nullVal;
- private Item another;
+ @Test
+ public void testStandardTypeAdapter() throws Exception {
+ String yaml = "abc: def\n";
+ StandardCoderObject sco = coder.fromJson(yaml, StandardCoderObject.class);
+ assertNotNull(sco.getData());
+ assertEquals("{'abc':'def'}".replace('\'', '"'), sco.getData().toString());
+ assertEquals(yaml, coder.toJson(sco));
}
}
diff --git a/utils/src/test/java/org/onap/policy/common/utils/coder/YamlJsonTranslatorTest.java b/utils/src/test/java/org/onap/policy/common/utils/coder/YamlJsonTranslatorTest.java
new file mode 100644
index 00000000..c76b775a
--- /dev/null
+++ b/utils/src/test/java/org/onap/policy/common/utils/coder/YamlJsonTranslatorTest.java
@@ -0,0 +1,170 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.common.utils.coder;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Writer;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.List;
+import java.util.Map;
+import lombok.EqualsAndHashCode;
+import org.junit.Before;
+import org.junit.Test;
+import org.yaml.snakeyaml.error.YAMLException;
+
+public class YamlJsonTranslatorTest {
+ private static final File YAML_FILE =
+ new File("src/test/resources/org/onap/policy/common/utils/coder/YamlJsonTranslator.yaml");
+
+ private Container cont;
+ private YamlJsonTranslator translator;
+
+ /**
+ * Creates {@link #translator} and uses it to load {@link #cont}.
+ *
+ * @throws IOException if an error occurs
+ */
+ @Before
+ public void setUp() throws IOException {
+ translator = new YamlJsonTranslator();
+
+ try (FileReader rdr = new FileReader(YAML_FILE)) {
+ cont = translator.fromYaml(rdr, Container.class);
+ }
+ }
+
+ @Test
+ public void testToYamlObject() {
+ String yaml = translator.toYaml(cont);
+
+ Container cont2 = translator.fromYaml(yaml, Container.class);
+ assertEquals(cont, cont2);
+ }
+
+ @Test
+ public void testToYamlWriterObject() throws IOException {
+ IOException ex = new IOException("expected exception");
+
+ // writer that throws an exception when the write() method is invoked
+ Writer wtr = new Writer() {
+ @Override
+ public void write(char[] cbuf, int off, int len) throws IOException {
+ throw ex;
+ }
+
+ @Override
+ public void flush() throws IOException {
+ // do nothing
+ }
+
+ @Override
+ public void close() throws IOException {
+ // do nothing
+ }
+ };
+
+ assertThatThrownBy(() -> translator.toYaml(wtr, cont)).isInstanceOf(YAMLException.class);
+
+ wtr.close();
+ }
+
+ @Test
+ public void testFromYamlStringClassOfT() throws IOException {
+ String yaml = new String(Files.readAllBytes(YAML_FILE.toPath()), StandardCharsets.UTF_8);
+ Container cont2 = translator.fromYaml(yaml, Container.class);
+ assertEquals(cont, cont2);
+ }
+
+ @Test
+ public void testFromYamlReaderClassOfT() {
+ verify(cont);
+ }
+
+ /**
+ * Verifies that the container has contents matching the yaml file.
+ *
+ * @param container container whose contents are to be verified
+ */
+ public static void verify(Container container) {
+ assertNotNull(container.item);
+ assertTrue(container.item.boolVal);
+ assertEquals(1000L, container.item.longVal);
+ assertEquals(1010.1f, container.item.floatVal, 0.00001);
+
+ assertEquals(4, container.list.size());
+ assertNull(container.list.get(1));
+
+ assertEquals(20, container.list.get(0).intVal);
+ assertEquals("string 30", container.list.get(0).stringVal);
+ assertNull(container.list.get(0).nullVal);
+
+ assertEquals(40.0, container.list.get(2).doubleVal, 0.000001);
+ assertNull(container.list.get(2).nullVal);
+ assertNotNull(container.list.get(2).another);
+ assertEquals(50, container.list.get(2).another.intVal);
+
+ assertTrue(container.list.get(3).boolVal);
+
+ assertNotNull(container.map);
+ assertEquals(3, container.map.size());
+
+ assertNotNull(container.map.get("itemA"));
+ assertEquals("stringA", container.map.get("itemA").stringVal);
+
+ assertNotNull(container.map.get("itemB"));
+ assertEquals("stringB", container.map.get("itemB").stringVal);
+
+ double dbl = 123456789012345678901234567890.0;
+ assertEquals(dbl, container.map.get("itemB").doubleVal, 1000.0);
+
+ assertNotNull(container.map.get("itemC"));
+ assertTrue(container.map.get("itemC").boolVal);
+ }
+
+
+ @EqualsAndHashCode
+ public static class Container {
+ protected Item item;
+ protected List<Item> list;
+ protected Map<String, Item> map;
+ }
+
+ @EqualsAndHashCode
+ public static class Item {
+ protected boolean boolVal;
+ protected int intVal;
+ protected long longVal;
+ protected double doubleVal;
+ protected float floatVal;
+ protected String stringVal;
+ protected Object nullVal;
+ protected Item another;
+ }
+}
diff --git a/utils/src/test/resources/org/onap/policy/common/utils/coder/StandardYamlCoder.yaml b/utils/src/test/resources/org/onap/policy/common/utils/coder/YamlJsonTranslator.yaml
index 1da7bfa3..1da7bfa3 100644
--- a/utils/src/test/resources/org/onap/policy/common/utils/coder/StandardYamlCoder.yaml
+++ b/utils/src/test/resources/org/onap/policy/common/utils/coder/YamlJsonTranslator.yaml