aboutsummaryrefslogtreecommitdiffstats
path: root/utils/src/test
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2019-09-09 16:51:32 -0400
committerJim Hahn <jrh3@att.com>2019-09-11 15:32:01 -0400
commit173c4dbea9a1175a6f18031a221bb701deeecaa7 (patch)
treecff8d6fc46b6096b551b075e489b406c50b61531 /utils/src/test
parent216b2beaf25eba50e948374d07e92b6c0a02b7c9 (diff)
Create StandardYamlCoder
Created StandardYamlCoder which is like a StandardCoder, except that the original converts to/from JSON, while the new class converts to/from YAML. Also added YamlMessageBodyHandler and incorporated it into the http server so that it supports a media type of */yaml. Change-Id: Ibd83a9f6d355a330f63e435f2bb41affcf1947c2 Issue-ID: POLICY-2065 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/StandardYamlCoderTest.java151
-rw-r--r--utils/src/test/java/org/onap/policy/common/utils/coder/YamlExceptionTest.java61
-rw-r--r--utils/src/test/resources/org/onap/policy/common/utils/coder/StandardYamlCoder.yaml21
3 files changed, 233 insertions, 0 deletions
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
new file mode 100644
index 00000000..6ec20663
--- /dev/null
+++ b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardYamlCoderTest.java
@@ -0,0 +1,151 @@
+/*-
+ * ============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.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;
+
+public class StandardYamlCoderTest {
+ private static final File YAML_FILE =
+ new File("src/test/resources/org/onap/policy/common/utils/coder/StandardYamlCoder.yaml");
+
+ private StandardYamlCoder coder;
+ private Container cont;
+
+ @Before
+ public void setUp() throws CoderException {
+ coder = new StandardYamlCoder();
+ cont = coder.decode(YAML_FILE, Container.class);
+ }
+
+ @Test
+ public void testToJsonObject() throws CoderException {
+ String yaml = coder.encode(cont);
+
+ Container cont2 = coder.decode(yaml, Container.class);
+ assertEquals(cont, cont2);
+ }
+
+ @Test
+ public void testToJsonWriterObject() throws Exception {
+ 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(() -> coder.encode(wtr, cont)).isInstanceOf(CoderException.class);
+
+ wtr.close();
+ }
+
+ @Test
+ public void testFromJsonStringClassOfT() throws Exception {
+ String yaml = new String(Files.readAllBytes(YAML_FILE.toPath()), StandardCharsets.UTF_8);
+ Container cont2 = coder.decode(yaml, Container.class);
+ assertEquals(cont, cont2);
+ }
+
+ @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);
+ }
+
+
+ @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;
+ }
+}
diff --git a/utils/src/test/java/org/onap/policy/common/utils/coder/YamlExceptionTest.java b/utils/src/test/java/org/onap/policy/common/utils/coder/YamlExceptionTest.java
new file mode 100644
index 00000000..bfa6249e
--- /dev/null
+++ b/utils/src/test/java/org/onap/policy/common/utils/coder/YamlExceptionTest.java
@@ -0,0 +1,61 @@
+/*-
+ * ============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.assertThat;
+import static org.junit.Assert.assertSame;
+
+import java.io.IOException;
+import org.junit.Test;
+import org.yaml.snakeyaml.error.Mark;
+
+public class YamlExceptionTest {
+ private static final char[] str = {'d', 'a', 't', 'a'};
+ private static final String DATA = new String(str);
+ private static final String MESSAGE = "hello";
+
+ private static final Mark mark = new Mark("a file", 3, 5, 9, str, 0);
+
+ @Test
+ public void testYamlExceptionStringMark() {
+ YamlException ex = new YamlException(MESSAGE, mark);
+
+ String str = ex.getMessage();
+ assertThat(str).contains(MESSAGE).contains(DATA);
+
+ str = ex.toString();
+ assertThat(str).contains(MESSAGE).contains(DATA);
+ }
+
+ @Test
+ public void testYamlExceptionStringMarkThrowable() {
+ Throwable thr = new IOException("expected exception");
+ YamlException ex = new YamlException(MESSAGE, mark, thr);
+
+ assertSame(thr, ex.getCause());
+
+ String str = ex.getMessage();
+ assertThat(str).contains(MESSAGE).contains(DATA);
+
+ str = ex.toString();
+ assertThat(str).contains(MESSAGE).contains(DATA);
+ }
+}
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/StandardYamlCoder.yaml
new file mode 100644
index 00000000..1da7bfa3
--- /dev/null
+++ b/utils/src/test/resources/org/onap/policy/common/utils/coder/StandardYamlCoder.yaml
@@ -0,0 +1,21 @@
+---
+item: &top
+ boolVal: true
+ longVal: 1000
+ floatVal: 1010.1
+list:
+- intVal: 20
+ stringVal: string 30
+ nullVal:
+-
+- doubleVal: 40
+ another:
+ intVal: 50
+- *top
+map:
+ itemA:
+ stringVal: stringA
+ itemB:
+ stringVal: stringB
+ doubleVal: 123456789012345678901234567890
+ itemC: *top