aboutsummaryrefslogtreecommitdiffstats
path: root/model/basic-model/src
diff options
context:
space:
mode:
Diffstat (limited to 'model/basic-model/src')
-rw-r--r--model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelReader.java4
-rw-r--r--model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriter.java8
-rw-r--r--model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/test/TestApexModel.java44
-rw-r--r--model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxConceptGetterImplTest.java96
-rw-r--r--model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxKeyInfoTest.java1
-rw-r--r--model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxKeyTest.java40
-rw-r--r--model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxReferenceKeyTest.java101
-rw-r--r--model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelReaderTest.java55
-rw-r--r--model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriterTest.java111
-rw-r--r--model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportApexModelCreator0.java (renamed from model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/TestApexModelCreator0Test.java)2
-rw-r--r--model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportApexModelCreator1.java (renamed from model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/TestApexModelCreator1Test.java)2
-rw-r--r--model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportApexModelCreator2.java (renamed from model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/TestApexModelCreator2Test.java)2
-rw-r--r--model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportBasicModelTester.java28
13 files changed, 458 insertions, 36 deletions
diff --git a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelReader.java b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelReader.java
index e76d00e12..f340f73d4 100644
--- a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelReader.java
+++ b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelReader.java
@@ -260,7 +260,7 @@ public class ApexModelReader<C extends AxConcept> {
}
catch (final Exception e) {
LOGGER.warn("JAXB error setting marshaller for JSON Input", e);
- throw new ApexModelException("JAXB error setting marshaller for JSON Input", e);
+ throw new ApexModelException("JAXB error setting unmarshaller for JSON input", e);
}
}
else if (Pattern.compile(XML_INPUT_TYPE_REGEXP).matcher(apexConceptString).find()) {
@@ -270,7 +270,7 @@ public class ApexModelReader<C extends AxConcept> {
}
catch (final Exception e) {
LOGGER.warn("JAXB error setting marshaller for XML Input", e);
- throw new ApexModelException("JAXB error setting marshaller for XML Input", e);
+ throw new ApexModelException("JAXB error setting unmarshaller for XML input", e);
}
}
else {
diff --git a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriter.java b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriter.java
index 6cc542270..eded9fdec 100644
--- a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriter.java
+++ b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriter.java
@@ -217,8 +217,8 @@ public class ApexModelWriter<C extends AxConcept> {
cdataFieldSet.toString().replaceAll("[\\[\\]\\,]", " "));
domTransformer.transform(new DOMSource(document), new StreamResult(apexConceptWriter));
} catch (JAXBException | TransformerException | ParserConfigurationException e) {
- LOGGER.warn("Unable to marshal Apex concept XML", e);
- throw new ApexModelException("Unable to marshal Apex concept XML", e);
+ LOGGER.warn("Unable to marshal Apex concept to XML", e);
+ throw new ApexModelException("Unable to marshal Apex concept to XML", e);
}
LOGGER.debug("wrote Apex concept XML");
}
@@ -254,8 +254,8 @@ public class ApexModelWriter<C extends AxConcept> {
try {
marshaller.marshal(concept, apexConceptWriter);
} catch (final JAXBException e) {
- LOGGER.warn("Unable to marshal Apex concept JSON", e);
- throw new ApexModelException("Unable to marshal Apex concept JSON", e);
+ LOGGER.warn("Unable to marshal Apex concept to JSON", e);
+ throw new ApexModelException("Unable to marshal Apex concept to JSON", e);
}
LOGGER.debug("wrote Apex concept JSON");
}
diff --git a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/test/TestApexModel.java b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/test/TestApexModel.java
index 24c682de4..6bab169a8 100644
--- a/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/test/TestApexModel.java
+++ b/model/basic-model/src/main/java/org/onap/policy/apex/model/basicmodel/test/TestApexModel.java
@@ -108,10 +108,7 @@ public class TestApexModel<M extends AxModel> {
try {
final URL apexModelUrl = ResourceUtils.getLocalFile(xmlFile.getAbsolutePath());
final M fileModel = modelReader.read(apexModelUrl.openStream());
- if (!model.equals(fileModel)) {
- LOGGER.warn(TEST_MODEL_UNEQUAL_STR + xmlFile.getAbsolutePath());
- throw new ApexException(TEST_MODEL_UNEQUAL_STR + xmlFile.getAbsolutePath());
- }
+ checkModelEquality(model, fileModel, TEST_MODEL_UNEQUAL_STR + xmlFile.getAbsolutePath());
} catch (final Exception e) {
LOGGER.warn(ERROR_PROCESSING_FILE + xmlFile.getAbsolutePath(), e);
throw new ApexException(ERROR_PROCESSING_FILE + xmlFile.getAbsolutePath(), e);
@@ -126,10 +123,8 @@ public class TestApexModel<M extends AxModel> {
modelWriter.write(model, baOutputStream);
final ByteArrayInputStream baInputStream = new ByteArrayInputStream(baOutputStream.toByteArray());
final M byteArrayModel = modelReader.read(baInputStream);
- if (!model.equals(byteArrayModel)) {
- LOGGER.warn("test model does not equal XML marshalled and unmarshalled model");
- throw new ApexException("test model does not equal XML marshalled and unmarshalled model");
- }
+
+ checkModelEquality(model, byteArrayModel, "test model does not equal XML marshalled and unmarshalled model");
LOGGER.debug("ran testApexModelWriteReadXML");
}
@@ -161,11 +156,7 @@ public class TestApexModel<M extends AxModel> {
try {
final URL apexModelUrl = ResourceUtils.getLocalFile(jsonFile.getAbsolutePath());
final M fileModel = modelReader.read(apexModelUrl.openStream());
- if (!model.equals(fileModel)) {
- LOGGER.warn(TEST_MODEL_UNEQUAL_STR + jsonFile.getAbsolutePath());
- throw new ApexException(
- TEST_MODEL_UNEQUAL_STR + jsonFile.getAbsolutePath());
- }
+ checkModelEquality(model, fileModel, TEST_MODEL_UNEQUAL_STR + jsonFile.getAbsolutePath());
} catch (final Exception e) {
LOGGER.warn(ERROR_PROCESSING_FILE + jsonFile.getAbsolutePath(), e);
throw new ApexException(ERROR_PROCESSING_FILE + jsonFile.getAbsolutePath(), e);
@@ -178,10 +169,8 @@ public class TestApexModel<M extends AxModel> {
modelWriter.write(model, baOutputStream);
final ByteArrayInputStream baInputStream = new ByteArrayInputStream(baOutputStream.toByteArray());
final M byteArrayModel = modelReader.read(baInputStream);
- if (!model.equals(byteArrayModel)) {
- LOGGER.warn("test model does not equal JSON marshalled and unmarshalled model");
- throw new ApexException("test model does not equal JSON marshalled and unmarshalled model");
- }
+
+ checkModelEquality(model, byteArrayModel, "test model does not equal JSON marshalled and unmarshalled model");
LOGGER.debug("ran testApexModelWriteReadJSON");
}
@@ -204,10 +193,7 @@ public class TestApexModel<M extends AxModel> {
final M dbJpaModel = apexDao.get(rootModelClass, model.getKey());
apexDao.close();
- if (!model.equals(dbJpaModel)) {
- LOGGER.warn("test model does not equal model written and read using generic JPA");
- throw new ApexException("test model does not equal model written and read using generic JPA");
- }
+ checkModelEquality(model, dbJpaModel, "test model does not equal model written and read using generic JPA");
LOGGER.debug("ran testApexModelWriteReadJPA");
}
@@ -331,4 +317,20 @@ public class TestApexModel<M extends AxModel> {
LOGGER.debug("ran testApexModelVaidateInvalidModel");
return result;
}
+
+ /**
+ * Check if two models are equal.
+ *
+ * @param leftModel the left model
+ * @param rightModel the right model
+ * @param errorMessage the error message to output on inequality
+ * @throws ApexException the exception to throw on inequality
+ */
+ public void checkModelEquality(final M leftModel, final M rightModel, final String errorMessage)
+ throws ApexException {
+ if (!leftModel.equals(rightModel)) {
+ LOGGER.warn(errorMessage);
+ throw new ApexException(errorMessage);
+ }
+ }
}
diff --git a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxConceptGetterImplTest.java b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxConceptGetterImplTest.java
new file mode 100644
index 000000000..b00e7db9f
--- /dev/null
+++ b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxConceptGetterImplTest.java
@@ -0,0 +1,96 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.model.basicmodel.concepts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+import java.util.NavigableMap;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import org.junit.Test;
+
+/**
+ * Test the AxConceptGetterImpl class.
+ */
+public class AxConceptGetterImplTest {
+
+ @Test
+ public void testAxConceptGetterImpl() {
+ NavigableMap<AxArtifactKey, AxArtifactKey> keyMap = new TreeMap<>();
+
+ AxConceptGetterImpl<AxArtifactKey> getter = new AxConceptGetterImpl<>(keyMap);
+ assertNotNull(getter);
+
+ AxArtifactKey keyA = new AxArtifactKey("A", "0.0.1");
+ assertNull(getter.get(keyA));
+
+ try {
+ getter.get((String)null);
+ fail("test should throw an exception here");
+ }
+ catch (Exception getException) {
+ assertEquals("conceptKeyName may not be null", getException.getMessage());
+ }
+
+ assertNull(getter.get("W"));
+
+ AxArtifactKey keyZ = new AxArtifactKey("Z", "0.0.1");
+ keyMap.put(keyZ, keyZ);
+ assertNull(getter.get("W"));
+
+ AxArtifactKey keyW001 = new AxArtifactKey("W", "0.0.1");
+ keyMap.put(keyW001, keyW001);
+ assertEquals(keyW001, getter.get("W"));
+
+ AxArtifactKey keyW002 = new AxArtifactKey("W", "0.0.2");
+ keyMap.put(keyW002, keyW002);
+ assertEquals(keyW002, getter.get("W"));
+
+ keyMap.remove(keyZ);
+ assertEquals(keyW002, getter.get("W"));
+
+ try {
+ getter.get((String)null, "0.0.1");
+ fail("test should throw an exception here");
+ }
+ catch (Exception getException) {
+ assertEquals("conceptKeyName may not be null", getException.getMessage());
+ }
+
+ assertEquals(keyW002, getter.get("W", "0.0.2"));
+ assertEquals(keyW002, getter.get("W", (String)null));
+
+ assertEquals(new TreeSet<AxArtifactKey>(keyMap.values()), getter.getAll(null));
+ assertEquals(new TreeSet<AxArtifactKey>(keyMap.values()), getter.getAll(null, null));
+
+ assertEquals(keyW001, getter.getAll("W", null).iterator().next());
+ assertEquals(keyW002, getter.getAll("W", "0.0.2").iterator().next());
+ assertEquals(0, getter.getAll("A", null).size());
+ assertEquals(0, getter.getAll("Z", null).size());
+
+ keyMap.put(keyZ, keyZ);
+ assertEquals(keyW002, getter.getAll("W", "0.0.2").iterator().next());
+ }
+}
diff --git a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxKeyInfoTest.java b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxKeyInfoTest.java
index 3f1635cce..b00be2fd1 100644
--- a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxKeyInfoTest.java
+++ b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxKeyInfoTest.java
@@ -44,6 +44,7 @@ public class AxKeyInfoTest {
AxKeyInfo testKeyInfo = new AxKeyInfo();
testKeyInfo.setKey((new AxArtifactKey("PN", "0.0.1")));
assertEquals("PN:0.0.1", testKeyInfo.getKey().getId());
+ assertTrue(testKeyInfo.matchesId("PN:0.0.1"));
AxArtifactKey key = new AxArtifactKey("key", "0.0.1");
testKeyInfo.setKey(key);
diff --git a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxKeyTest.java b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxKeyTest.java
index ea09cc69d..c3c87b965 100644
--- a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxKeyTest.java
+++ b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxKeyTest.java
@@ -26,6 +26,8 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.lang.reflect.Field;
+
import org.junit.Test;
import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
@@ -124,4 +126,42 @@ public class AxKeyTest {
assertFalse(((AxKey) someKey0).equals(new AxReferenceKey()));
}
+
+ @Test
+ public void testValidation() {
+ AxArtifactKey testKey = new AxArtifactKey("TheKey", "0.0.1");
+ assertEquals("TheKey:0.0.1", testKey.getId());
+
+ try {
+ Field nameField = testKey.getClass().getDeclaredField("name");
+ nameField.setAccessible(true);
+ nameField.set(testKey, "Key Name");
+ AxValidationResult validationResult = new AxValidationResult();
+ testKey.validate(validationResult);
+ nameField.set(testKey, "TheKey");
+ nameField.setAccessible(false);
+ assertEquals(
+ "name invalid-parameter name with value Key Name "
+ + "does not match regular expression [A-Za-z0-9\\-_\\.]+",
+ validationResult.getMessageList().get(0).getMessage());
+ } catch (Exception validationException) {
+ fail("test should not throw an exception");
+ }
+
+ try {
+ Field versionField = testKey.getClass().getDeclaredField("version");
+ versionField.setAccessible(true);
+ versionField.set(testKey, "Key Version");
+ AxValidationResult validationResult = new AxValidationResult();
+ testKey.validate(validationResult);
+ versionField.set(testKey, "0.0.1");
+ versionField.setAccessible(false);
+ assertEquals(
+ "version invalid-parameter version with value Key Version "
+ + "does not match regular expression [A-Za-z0-9.]+",
+ validationResult.getMessageList().get(0).getMessage());
+ } catch (Exception validationException) {
+ fail("test should not throw an exception");
+ }
+ }
}
diff --git a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxReferenceKeyTest.java b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxReferenceKeyTest.java
index 68be4cdbb..27726a9b4 100644
--- a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxReferenceKeyTest.java
+++ b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/concepts/AxReferenceKeyTest.java
@@ -25,6 +25,9 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.lang.reflect.Field;
import org.junit.Test;
import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
@@ -83,7 +86,7 @@ public class AxReferenceKeyTest {
AxReferenceKey clonedReferenceKey = new AxReferenceKey(testReferenceKey);
assertEquals("AxReferenceKey:(parentKeyName=NPKN,parentKeyVersion=0.0.1,parentLocalName=NPKLN,localName=NLN)",
- clonedReferenceKey.toString());
+ clonedReferenceKey.toString());
assertFalse(testReferenceKey.hashCode() == 0);
@@ -106,5 +109,101 @@ public class AxReferenceKeyTest {
assertEquals(0, testReferenceKey.compareTo(new AxReferenceKey("NPKN", "0.0.1", "NPKLN", "NLN")));
assertNotNull(testReferenceKey.getKeys());
+
+ try {
+ testReferenceKey.equals(null);
+ fail("test should throw an exception here");
+ } catch (Exception iae) {
+ assertEquals("comparison object may not be null", iae.getMessage());
+ }
+
+ try {
+ testReferenceKey.copyTo(null);
+ fail("test should throw an exception here");
+ } catch (Exception iae) {
+ assertEquals("target may not be null", iae.getMessage());
+ }
+
+ try {
+ testReferenceKey.copyTo(new AxArtifactKey("Key", "0.0.1"));
+ fail("test should throw an exception here");
+ } catch (Exception iae) {
+ assertEquals("org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey is not an instance of "
+ + "org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey", iae.getMessage());
+ }
+
+ AxReferenceKey targetRefKey = new AxReferenceKey();
+ assertEquals(testReferenceKey, testReferenceKey.copyTo(targetRefKey));
+ }
+
+ @Test
+ public void testValidation() {
+ AxReferenceKey testReferenceKey = new AxReferenceKey();
+ testReferenceKey.setParentArtifactKey(new AxArtifactKey("PN", "0.0.1"));
+ assertEquals("PN:0.0.1", testReferenceKey.getParentArtifactKey().getId());
+
+ try {
+ Field parentNameField = testReferenceKey.getClass().getDeclaredField("parentKeyName");
+ parentNameField.setAccessible(true);
+ parentNameField.set(testReferenceKey, "Parent Name");
+ AxValidationResult validationResult = new AxValidationResult();
+ testReferenceKey.validate(validationResult);
+ parentNameField.set(testReferenceKey, "ParentName");
+ parentNameField.setAccessible(false);
+ assertEquals(
+ "parentKeyName invalid-parameter parentKeyName with value Parent Name "
+ + "does not match regular expression [A-Za-z0-9\\-_\\.]+",
+ validationResult.getMessageList().get(0).getMessage());
+ } catch (Exception validationException) {
+ fail("test should not throw an exception");
+ }
+
+ try {
+ Field parentVersionField = testReferenceKey.getClass().getDeclaredField("parentKeyVersion");
+ parentVersionField.setAccessible(true);
+ parentVersionField.set(testReferenceKey, "Parent Version");
+ AxValidationResult validationResult = new AxValidationResult();
+ testReferenceKey.validate(validationResult);
+ parentVersionField.set(testReferenceKey, "0.0.1");
+ parentVersionField.setAccessible(false);
+ assertEquals(
+ "parentKeyVersion invalid-parameter parentKeyVersion with value Parent Version "
+ + "does not match regular expression [A-Za-z0-9.]+",
+ validationResult.getMessageList().get(0).getMessage());
+ } catch (Exception validationException) {
+ fail("test should not throw an exception");
+ }
+
+ try {
+ Field parentLocalNameField = testReferenceKey.getClass().getDeclaredField("parentLocalName");
+ parentLocalNameField.setAccessible(true);
+ parentLocalNameField.set(testReferenceKey, "Parent Local Name");
+ AxValidationResult validationResult = new AxValidationResult();
+ testReferenceKey.validate(validationResult);
+ parentLocalNameField.set(testReferenceKey, "ParentLocalName");
+ parentLocalNameField.setAccessible(false);
+ assertEquals(
+ "parentLocalName invalid-parameter parentLocalName with value "
+ + "Parent Local Name does not match regular expression [A-Za-z0-9\\-_\\.]+|^$",
+ validationResult.getMessageList().get(0).getMessage());
+ } catch (Exception validationException) {
+ fail("test should not throw an exception");
+ }
+
+ try {
+ Field localNameField = testReferenceKey.getClass().getDeclaredField("localName");
+ localNameField.setAccessible(true);
+ localNameField.set(testReferenceKey, "Local Name");
+ AxValidationResult validationResult = new AxValidationResult();
+ testReferenceKey.validate(validationResult);
+ localNameField.set(testReferenceKey, "LocalName");
+ localNameField.setAccessible(false);
+ assertEquals(
+ "localName invalid-parameter localName with value Local Name "
+ + "does not match regular expression [A-Za-z0-9\\-_\\.]+|^$",
+ validationResult.getMessageList().get(0).getMessage());
+ } catch (Exception validationException) {
+ fail("test should not throw an exception");
+ }
}
}
diff --git a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelReaderTest.java b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelReaderTest.java
index 20815ae72..d560f62fe 100644
--- a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelReaderTest.java
+++ b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelReaderTest.java
@@ -32,14 +32,25 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
+import java.lang.reflect.Field;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.PropertyException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.transform.stream.StreamSource;
import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
import org.onap.policy.apex.model.basicmodel.concepts.AxModel;
import org.onap.policy.apex.model.basicmodel.handling.ApexModelReader;
import org.onap.policy.apex.model.basicmodel.handling.ApexModelWriter;
public class ApexModelReaderTest {
+ @Mock
+ private Unmarshaller unmarshallerMock;
@Test
public void testModelReader() throws IOException, ApexException {
@@ -149,4 +160,48 @@ public class ApexModelReaderTest {
modelReader.setSchema("xml/example.xsd");
}
+
+ @Test
+ public void testSetInputTypeError() throws ApexModelException {
+ MockitoAnnotations.initMocks(this);
+
+ ApexModelReader<AxModel> modelReader = new ApexModelReader<AxModel>(AxModel.class, true);
+
+ try {
+ Field marshallerField = modelReader.getClass().getDeclaredField("unmarshaller");
+ marshallerField.setAccessible(true);
+ marshallerField.set(modelReader, unmarshallerMock);
+ marshallerField.setAccessible(false);
+ } catch (Exception validationException) {
+ fail("test should not throw an exception");
+ }
+
+ try {
+ Mockito.doThrow(new JAXBException("Exception marshalling to JSON")).when(unmarshallerMock)
+ .unmarshal((StreamSource)Mockito.anyObject(), Mockito.anyObject());
+
+ modelReader.read("{Hello}");
+ fail("Test should throw an exception here");
+ } catch (Exception jaxbe) {
+ assertEquals("Unable to unmarshal Apex concept ", jaxbe.getMessage());
+ }
+
+ try {
+ Mockito.doThrow(new PropertyException("Exception setting JAXB property")).when(unmarshallerMock)
+ .setProperty(Mockito.anyString(), Mockito.anyString());
+ modelReader.read("{Hello}");
+ fail("Test should throw an exception here");
+ } catch (Exception jaxbe) {
+ assertEquals("JAXB error setting unmarshaller for JSON input", jaxbe.getMessage());
+ }
+
+ try {
+ Mockito.doThrow(new PropertyException("Exception setting JAXB property")).when(unmarshallerMock)
+ .setProperty(Mockito.anyString(), Mockito.anyString());
+ modelReader.read("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+ fail("Test should throw an exception here");
+ } catch (Exception jaxbe) {
+ assertEquals("JAXB error setting unmarshaller for XML input", jaxbe.getMessage());
+ }
+ }
}
diff --git a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriterTest.java b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriterTest.java
index d7ff4c08b..d25e191a8 100644
--- a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriterTest.java
+++ b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/ApexModelWriterTest.java
@@ -27,13 +27,25 @@ import static org.junit.Assert.fail;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.Writer;
+import java.lang.reflect.Field;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.PropertyException;
import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
import org.onap.policy.apex.model.basicmodel.concepts.AxModel;
import org.onap.policy.apex.model.basicmodel.handling.ApexModelWriter;
+import org.w3c.dom.Document;
public class ApexModelWriterTest {
+ @Mock
+ private Marshaller marshallerMock;
@Test
public void testModelWriter() throws IOException, ApexException {
@@ -89,4 +101,103 @@ public class ApexModelWriterTest {
assertEquals("concept stream may not be null", e.getMessage());
}
}
+
+ @Test
+ public void testSetOutputTypeError() throws ApexModelException {
+ MockitoAnnotations.initMocks(this);
+
+ ApexModelWriter<AxModel> modelWriter = new ApexModelWriter<AxModel>(AxModel.class);
+
+ try {
+ Field marshallerField = modelWriter.getClass().getDeclaredField("marshaller");
+ marshallerField.setAccessible(true);
+ marshallerField.set(modelWriter, marshallerMock);
+ marshallerField.setAccessible(false);
+ } catch (Exception validationException) {
+ fail("test should not throw an exception");
+ }
+
+ try {
+ Mockito.doThrow(new PropertyException("Exception setting JAXB property")).when(marshallerMock)
+ .setProperty(Mockito.anyString(), Mockito.anyString());
+ modelWriter.setJsonOutput(true);
+ fail("Test should throw an exception here");
+ } catch (Exception jaxbe) {
+ assertEquals("JAXB error setting marshaller for JSON output", jaxbe.getMessage());
+ }
+
+ try {
+ Mockito.doThrow(new PropertyException("Exception setting JAXB property")).when(marshallerMock)
+ .setProperty(Mockito.anyString(), Mockito.anyString());
+ modelWriter.setJsonOutput(false);
+ fail("Test should throw an exception here");
+ } catch (Exception jaxbe) {
+ assertEquals("JAXB error setting marshaller for XML output", jaxbe.getMessage());
+ }
+ }
+
+ @Test
+ public void testOutputJsonError() throws ApexModelException {
+ MockitoAnnotations.initMocks(this);
+
+ ApexModelWriter<AxModel> modelWriter = new ApexModelWriter<AxModel>(AxModel.class);
+
+ try {
+ Field marshallerField = modelWriter.getClass().getDeclaredField("marshaller");
+ marshallerField.setAccessible(true);
+ marshallerField.set(modelWriter, marshallerMock);
+ marshallerField.setAccessible(false);
+ } catch (Exception validationException) {
+ fail("test should not throw an exception");
+ }
+
+ modelWriter.setValidateFlag(false);
+ modelWriter.setJsonOutput(true);
+
+ try {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ AxModel model = new DummyApexBasicModelCreator().getModel();
+
+ Mockito.doThrow(new JAXBException("Exception marshalling to JSON")).when(marshallerMock)
+ .marshal((AxModel)Mockito.anyObject(), (Writer)Mockito.anyObject());
+
+ modelWriter.write(model, baos);
+ fail("Test should throw an exception here");
+ } catch (Exception jaxbe) {
+ assertEquals("Unable to marshal Apex concept to JSON", jaxbe.getMessage());
+ }
+ }
+
+ @Test
+ public void testOutputXmlError() throws ApexModelException {
+ MockitoAnnotations.initMocks(this);
+
+ ApexModelWriter<AxModel> modelWriter = new ApexModelWriter<AxModel>(AxModel.class);
+ modelWriter.setJsonOutput(false);
+
+ try {
+ Field marshallerField = modelWriter.getClass().getDeclaredField("marshaller");
+ marshallerField.setAccessible(true);
+ marshallerField.set(modelWriter, marshallerMock);
+ marshallerField.setAccessible(false);
+ } catch (Exception validationException) {
+ fail("test should not throw an exception");
+ }
+
+ modelWriter.setValidateFlag(false);
+ modelWriter.setJsonOutput(false);
+
+ try {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ AxModel model = new DummyApexBasicModelCreator().getModel();
+
+ Mockito.doThrow(new JAXBException("Exception marshalling to JSON")).when(marshallerMock)
+ .marshal((AxModel)Mockito.anyObject(), (Document)Mockito.anyObject());
+
+ modelWriter.write(model, baos);
+ fail("Test should throw an exception here");
+ } catch (Exception jaxbe) {
+ assertEquals("Unable to marshal Apex concept to XML", jaxbe.getMessage());
+ }
+ }
}
diff --git a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/TestApexModelCreator0Test.java b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportApexModelCreator0.java
index d0e8807e1..e835bc0fc 100644
--- a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/TestApexModelCreator0Test.java
+++ b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportApexModelCreator0.java
@@ -26,7 +26,7 @@ import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation;
import org.onap.policy.apex.model.basicmodel.concepts.AxModel;
import org.onap.policy.apex.model.basicmodel.test.TestApexModelCreator;
-public class TestApexModelCreator0Test implements TestApexModelCreator<AxModel> {
+public class SupportApexModelCreator0 implements TestApexModelCreator<AxModel> {
@Override
public AxModel getModel() {
diff --git a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/TestApexModelCreator1Test.java b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportApexModelCreator1.java
index f785a47ba..123125bb1 100644
--- a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/TestApexModelCreator1Test.java
+++ b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportApexModelCreator1.java
@@ -28,7 +28,7 @@ import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation;
import org.onap.policy.apex.model.basicmodel.concepts.AxModel;
import org.onap.policy.apex.model.basicmodel.test.TestApexModelCreator;
-public class TestApexModelCreator1Test implements TestApexModelCreator<AxModel> {
+public class SupportApexModelCreator1 implements TestApexModelCreator<AxModel> {
@Override
public AxModel getModel() {
diff --git a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/TestApexModelCreator2Test.java b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportApexModelCreator2.java
index 9be21f522..0ab7aab7f 100644
--- a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/TestApexModelCreator2Test.java
+++ b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportApexModelCreator2.java
@@ -26,7 +26,7 @@ import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation;
import org.onap.policy.apex.model.basicmodel.concepts.AxModel;
import org.onap.policy.apex.model.basicmodel.test.TestApexModelCreator;
-public class TestApexModelCreator2Test implements TestApexModelCreator<AxModel> {
+public class SupportApexModelCreator2 implements TestApexModelCreator<AxModel> {
@Override
public AxModel getModel() {
diff --git a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportBasicModelTester.java b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportBasicModelTester.java
index e632a521e..57df96089 100644
--- a/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportBasicModelTester.java
+++ b/model/basic-model/src/test/java/org/onap/policy/apex/model/basicmodel/handling/SupportBasicModelTester.java
@@ -34,7 +34,7 @@ public class SupportBasicModelTester {
@Test
public void testNormalModelCreator() throws ApexException {
final TestApexModel<AxModel> testApexModel = new TestApexModel<AxModel>(AxModel.class,
- new DummyApexBasicModelCreator());
+ new DummyApexBasicModelCreator());
testApexModel.testApexModelValid();
try {
@@ -52,9 +52,27 @@ public class SupportBasicModelTester {
}
@Test
+ public void testModelsUnequal() throws ApexException {
+ final TestApexModel<AxModel> testApexModel0 = new TestApexModel<AxModel>(AxModel.class,
+ new DummyApexBasicModelCreator());
+ final TestApexModel<AxModel> testApexModel1 = new TestApexModel<AxModel>(AxModel.class,
+ new DummyApexBasicModelCreator());
+
+ testApexModel1.getModel().getKey().setVersion("0.0.2");
+
+ try {
+ testApexModel0.checkModelEquality(testApexModel0.getModel(), testApexModel1.getModel(),
+ "Models are not equal");
+ fail("test should throw an exception here");
+ } catch (ApexException ae) {
+ assertEquals("Models are not equal", ae.getMessage());
+ }
+ }
+
+ @Test
public void testModelCreator0() throws ApexException {
final TestApexModel<AxModel> testApexModel = new TestApexModel<AxModel>(AxModel.class,
- new TestApexModelCreator0Test());
+ new SupportApexModelCreator0());
testApexModel.testApexModelValid();
try {
@@ -86,7 +104,7 @@ public class SupportBasicModelTester {
@Test
public void testModelCreator1() throws ApexException {
final TestApexModel<AxModel> testApexModel = new TestApexModel<AxModel>(AxModel.class,
- new TestApexModelCreator1Test());
+ new SupportApexModelCreator1());
try {
testApexModel.testApexModelValid();
@@ -113,7 +131,7 @@ public class SupportBasicModelTester {
@Test
public void testModelCreator2() throws ApexException {
final TestApexModel<AxModel> testApexModel = new TestApexModel<AxModel>(AxModel.class,
- new TestApexModelCreator2Test());
+ new SupportApexModelCreator2());
testApexModel.testApexModelValid();
testApexModel.testApexModelVaidateObservation();
@@ -128,7 +146,7 @@ public class SupportBasicModelTester {
@Test
public void testModelCreator1XmlJson() throws ApexException {
final TestApexModel<AxModel> testApexModel = new TestApexModel<AxModel>(AxModel.class,
- new TestApexModelCreator1Test());
+ new SupportApexModelCreator1());
try {
testApexModel.testApexModelWriteReadJson();