Rename test classes in apex-pdp
[policy/apex-pdp.git] / context / context-management / src / test / java / org / onap / policy / apex / context / impl / schema / java / JavaSchemaHelperTest.java
index a744630..16976f2 100644 (file)
  * SPDX-License-Identifier: Apache-2.0
  * ============LICENSE_END=========================================================
  */
+
 package org.onap.policy.apex.context.impl.schema.java;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonPrimitive;
+
 import java.math.BigDecimal;
+import java.time.Instant;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
+
 import org.onap.policy.apex.context.ContextRuntimeException;
 import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.parameters.ContextParameterConstants;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
-
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
-import com.google.gson.JsonPrimitive;
+import org.onap.policy.common.parameters.ParameterService;
 
 public class JavaSchemaHelperTest {
+    /**
+     * Initialize JSON adapters.
+     */
+    @BeforeClass
+    public static void registerParameters() {
+        JavaSchemaHelperParameters javaSchemaHelperPars = new JavaSchemaHelperParameters();
+
+        JavaSchemaHelperJsonAdapterParameters stringAdapterPars = new JavaSchemaHelperJsonAdapterParameters();
+        stringAdapterPars.setAdaptedClass("java.lang.String");
+        stringAdapterPars.setAdaptorClass("org.onap.policy.apex.context.impl.schema.java.SupportJsonAdapter");
+
+        javaSchemaHelperPars.getJsonAdapters().put("String", stringAdapterPars);
+        
+        SchemaParameters schemaPars = new SchemaParameters();
+        schemaPars.getSchemaHelperParameterMap().put("Java", javaSchemaHelperPars);
+
+        ParameterService.register(schemaPars);
+    }
+
+    @AfterClass
+    public static void deregisterParameters() {
+        ParameterService.clear();
+    }
 
     @Test
     public void testJavaSchemaHelperInit() {
@@ -65,11 +96,6 @@ public class JavaSchemaHelperTest {
 
     @Test
     public void testJavaSchemaHelperMethods() {
-        AxArtifactKey schemaKey = new AxArtifactKey("SchemaKey", "0.0.1");
-        AxArtifactKey userKey = new AxArtifactKey("UserKey", "0.0.1");
-
-        AxContextSchema intSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Integer");
-
         SchemaHelper intSchemaHelper = new JavaSchemaHelper();
 
         assertEquals(AxArtifactKey.getNullKey(), intSchemaHelper.getUserKey());
@@ -101,6 +127,10 @@ public class JavaSchemaHelperTest {
                             e.getMessage());
         }
 
+        AxArtifactKey schemaKey = new AxArtifactKey("SchemaKey", "0.0.1");
+        AxArtifactKey userKey = new AxArtifactKey("UserKey", "0.0.1");
+        AxContextSchema intSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Integer");
+
         intSchemaHelper.init(userKey, intSchema);
         assertEquals(userKey, intSchemaHelper.getUserKey());
         assertEquals(intSchema, intSchemaHelper.getSchema());
@@ -157,29 +187,33 @@ public class JavaSchemaHelperTest {
         AxContextSchema byteSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Byte");
         AxContextSchema shortSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Short");
         AxContextSchema intSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Integer");
-        AxContextSchema longSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Long");
-        AxContextSchema floatSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Float");
-        AxContextSchema doubleSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Double");
-        AxContextSchema stringSchema = new AxContextSchema(schemaKey, "Java", "java.lang.String");
-        AxContextSchema myBaseClassSchema = new AxContextSchema(schemaKey, "Java",
-                        "org.onap.policy.apex.context.impl.schema.java.MyBaseClass");
 
         SchemaHelper byteSchemaHelper = new JavaSchemaHelper();
         SchemaHelper shortSchemaHelper = new JavaSchemaHelper();
         SchemaHelper intSchemaHelper = new JavaSchemaHelper();
-        SchemaHelper longSchemaHelper = new JavaSchemaHelper();
-        SchemaHelper floatSchemaHelper = new JavaSchemaHelper();
-        SchemaHelper doubleSchemaHelper = new JavaSchemaHelper();
-        SchemaHelper stringSchemaHelper = new JavaSchemaHelper();
-        SchemaHelper myBaseClassSchemaHelper = new JavaSchemaHelper();
 
         byteSchemaHelper.init(userKey, byteSchema);
         shortSchemaHelper.init(userKey, shortSchema);
         intSchemaHelper.init(userKey, intSchema);
+
+        SchemaHelper longSchemaHelper = new JavaSchemaHelper();
+        SchemaHelper floatSchemaHelper = new JavaSchemaHelper();
+
+        AxContextSchema longSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Long");
+        AxContextSchema floatSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Float");
         longSchemaHelper.init(userKey, longSchema);
         floatSchemaHelper.init(userKey, floatSchema);
+
+        SchemaHelper doubleSchemaHelper = new JavaSchemaHelper();
+        SchemaHelper stringSchemaHelper = new JavaSchemaHelper();
+        AxContextSchema doubleSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Double");
+        AxContextSchema stringSchema = new AxContextSchema(schemaKey, "Java", "java.lang.String");
         doubleSchemaHelper.init(userKey, doubleSchema);
         stringSchemaHelper.init(userKey, stringSchema);
+
+        AxContextSchema myBaseClassSchema = new AxContextSchema(schemaKey, "Java",
+                        "org.onap.policy.apex.context.impl.schema.java.SupportBaseClass");
+        SchemaHelper myBaseClassSchemaHelper = new JavaSchemaHelper();
         myBaseClassSchemaHelper.init(userKey, myBaseClassSchema);
 
         assertEquals(null, byteSchemaHelper.unmarshal(null));
@@ -281,7 +315,7 @@ public class JavaSchemaHelperTest {
 
         assertEquals("123", stringSchemaHelper.unmarshal(123));
 
-        MySubClass subClassInstance = new MySubClass("123");
+        SupportSubClass subClassInstance = new SupportSubClass("123");
         assertEquals(subClassInstance, myBaseClassSchemaHelper.unmarshal(subClassInstance));
     }
 
@@ -303,8 +337,72 @@ public class JavaSchemaHelperTest {
             assertEquals("UserKey:0.0.1: object \"123.45\" of class \"java.lang.Double\" not "
                             + "compatible with class \"java.lang.Integer\"", e.getMessage());
         }
-        
+
         JsonPrimitive intJsonPrimitive = (JsonPrimitive) intSchemaHelper.marshal2Object(123);
         assertEquals(123, intJsonPrimitive.getAsInt());
     }
+
+    @Test
+    public void testJavaSchemaHelperAdapters() {
+        AxArtifactKey schemaKey = new AxArtifactKey("SchemaKey", "0.0.1");
+        AxArtifactKey userKey = new AxArtifactKey("UserKey", "0.0.1");
+
+        AxContextSchema stringSchema = new AxContextSchema(schemaKey, "Java", "java.lang.String");
+        SchemaHelper stringSchemaHelper = new JavaSchemaHelper();
+        stringSchemaHelper.init(userKey, stringSchema);
+
+        assertEquals("null", stringSchemaHelper.marshal2String(null));
+        assertEquals("\"Hello\"", stringSchemaHelper.marshal2String("Hello"));
+        try {
+            stringSchemaHelper.marshal2String(Instant.ofEpochMilli(1000));
+            fail("test should throw an exception here");
+        } catch (ContextRuntimeException e) {
+            assertEquals("UserKey:0.0.1: object \"1970-01-01T00:00:01Z\" of class \"java.time.Instant\" "
+                            + "not compatible with class \"java.lang.String\"", e.getMessage());
+        }
+
+        JsonPrimitive stringJsonPrimitive = (JsonPrimitive) stringSchemaHelper.marshal2Object("Another String");
+        assertEquals("Another String", stringJsonPrimitive.getAsString());
+    }
+
+    @Test
+    public void testJavaSchemaHelperBadAdapter() {
+        AxArtifactKey schemaKey = new AxArtifactKey("SchemaKey", "0.0.1");
+        AxArtifactKey userKey = new AxArtifactKey("UserKey", "0.0.1");
+
+        SchemaParameters pars = ParameterService.get(ContextParameterConstants.SCHEMA_GROUP_NAME);
+        
+        JavaSchemaHelperParameters javaShPars = (JavaSchemaHelperParameters) pars.getSchemaHelperParameterMap()
+                        .get("Java");
+        javaShPars.getJsonAdapters().get("String")
+                        .setAdaptorClass("org.onap.policy.apex.context.impl.schema.java.SupportBadJsonAdapter");
+
+        AxContextSchema stringSchema = new AxContextSchema(schemaKey, "Java", "java.lang.String");
+        SchemaHelper stringSchemaHelper = new JavaSchemaHelper();
+        stringSchemaHelper.init(userKey, stringSchema);
+
+        try {
+            stringSchemaHelper.marshal2String("Hello");
+            fail("test should throw an exception");
+        } catch (ContextRuntimeException pre) {
+            assertEquals("UserKey:0.0.1: instantiation of adapter class "
+                            + "\"org.onap.policy.apex.context.impl.schema.java.SupportBadJsonAdapter\"  "
+                            + "to decode and encode class \"java.lang.String\" failed: Test for Bad Adapter",
+                            pre.getMessage());
+        }
+    }
+
+    @Test
+    public void testJavaSchemaHelperDefaultAdapter() {
+        SchemaParameters pars = ParameterService.get(ContextParameterConstants.SCHEMA_GROUP_NAME);
+
+        JavaSchemaHelperParameters javaShPars = (JavaSchemaHelperParameters) pars.getSchemaHelperParameterMap()
+                        .get("Java");
+        
+        pars.getSchemaHelperParameterMap().clear();
+        
+        testJavaSchemaHelperAdapters();
+
+        pars.getSchemaHelperParameterMap().put("Java", javaShPars);
+    }
 }