2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2017 Amdocs
8 * =============================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * ============LICENSE_END=========================================================
24 package org.onap.appc.client.lcm.model;
26 import org.junit.Assert;
27 import org.junit.Test;
29 import java.lang.reflect.Field;
30 import java.lang.reflect.Method;
31 import java.util.ArrayList;
32 import java.util.List;
34 public class TestModelPOJO {
35 static List<Class> pojoClassName;
36 static List<String> fields;
38 pojoClassName = new ArrayList<>();
39 pojoClassName.add(AuditInput.class);
40 pojoClassName.add(AuditOutput.class);
41 pojoClassName.add(CheckLockInput.class);
42 pojoClassName.add(CheckLockOutput.class);
43 pojoClassName.add(ConfigBackupDeleteInput.class);
44 pojoClassName.add(ConfigBackupDeleteOutput.class);
45 pojoClassName.add(ConfigBackupInput.class);
46 pojoClassName.add(ConfigBackupOutput.class);
47 pojoClassName.add(ConfigExportInput.class);
48 pojoClassName.add(ConfigExportOutput.class);
49 pojoClassName.add(ConfigModifyInput.class);
50 pojoClassName.add(ConfigModifyOutput.class);
51 pojoClassName.add(ConfigScaleOutInput.class);
52 pojoClassName.add(ConfigScaleOutOutput.class);
53 pojoClassName.add(ConfigRestoreInput.class);
54 pojoClassName.add(ConfigRestoreOutput.class);
55 pojoClassName.add(ConfigureInput.class);
56 pojoClassName.add(ConfigureOutput.class);
57 pojoClassName.add(EvacuateInput.class);
58 pojoClassName.add(EvacuateOutput.class);
59 pojoClassName.add(HealthCheckInput.class);
60 pojoClassName.add(HealthCheckOutput.class);
61 pojoClassName.add(LiveUpgradeInput.class);
62 pojoClassName.add(LiveUpgradeOutput.class);
63 pojoClassName.add(LockInput.class);
64 pojoClassName.add(LockOutput.class);
65 pojoClassName.add(MigrateInput.class);
66 pojoClassName.add(MigrateOutput.class);
67 pojoClassName.add(RebuildInput.class);
68 pojoClassName.add(RebuildOutput.class);
69 pojoClassName.add(HealthCheckInput.class);
70 pojoClassName.add(RollbackInput.class);
71 pojoClassName.add(RollbackOutput.class);
72 pojoClassName.add(RestartInput.class);
73 pojoClassName.add(RestartOutput.class);
74 pojoClassName.add(SnapshotInput.class);
75 pojoClassName.add(SnapshotOutput.class);
76 pojoClassName.add(SoftwareUploadInput.class);
77 pojoClassName.add(SoftwareUploadOutput.class);
78 pojoClassName.add(StartApplicationInput.class);
79 pojoClassName.add(StartApplicationOutput.class);
80 pojoClassName.add(StartInput.class);
81 pojoClassName.add(StartOutput.class);
82 pojoClassName.add(StopApplicationInput.class);
83 pojoClassName.add(StopApplicationOutput.class);
84 pojoClassName.add(StopInput.class);
85 pojoClassName.add(SyncInput.class);
86 pojoClassName.add(SyncOutput.class);
87 pojoClassName.add(TerminateInput.class);
88 pojoClassName.add(TerminateOutput.class);
89 pojoClassName.add(TestInput.class);
90 pojoClassName.add(TestOutput.class);
91 pojoClassName.add(UnlockInput.class);
92 pojoClassName.add(UnlockOutput.class);
94 fields = new ArrayList<>();
95 fields.add("CommonHeader");
97 fields.add("Payload");
101 public void testModel() throws Exception{
102 for(String field: fields){
103 for(Class c: pojoClassName){
104 Object instance = c.newInstance();
105 Field[] fields = c.getDeclaredFields();
106 for(Field f: fields){
107 if(f.getType() == getClassForString(field)){
108 Method m = c.getDeclaredMethod("set"+field,getClassForString(field));
109 Object argument = createArgument(field);
110 m.invoke(instance,argument);
112 Method getter = c.getDeclaredMethod("get"+field);
113 Object getValue = getter.invoke(instance);
114 Assert.assertEquals("POJO test failed for class:"+c.getCanonicalName()+" for method:"+m.getName(),argument, getValue);
121 private Object createArgument(String field){
122 if(field.equals("CommonHeader")){
123 return createHeader();
125 else if(field.equals("Action")){
126 return createAction();
127 }else if(field.equals("Payload")){
128 return createPayload();
129 }else if(field.equals("Status")){
130 return createStatus();
133 throw new IllegalArgumentException();
136 private Action createAction(){
137 return Action.Restart;
139 private Payload createPayload(){
140 return new Payload();
142 private CommonHeader createHeader(){
143 CommonHeader header = new CommonHeader();
144 header.setApiVer("apiver");
145 header.setOriginatorId("originator");
148 private Status createStatus() {
152 private Class getClassForString(String field){
154 if(field.equals("CommonHeader")){
155 return CommonHeader.class;
156 }else if(field.equals("Action")){
158 }else if(field.equals("ActionIdentifiers")){
159 return ActionIdentifiers.class;
160 }else if(field.equals("Payload")){
161 return Payload.class;
162 }else if(field.equals("Status")){
165 throw new IllegalArgumentException();