Increased test coverage for appc-java-client
[appc.git] / appc-client / client-kit / src / test / java / org / openecomp / appc / client / lcm / model / TestModelPOJO.java
1 package org.openecomp.appc.client.lcm.model;
2
3 import org.junit.Assert;
4 import org.junit.Test;
5
6 import java.lang.reflect.Field;
7 import java.lang.reflect.Method;
8 import java.util.ArrayList;
9 import java.util.List;
10
11 public class TestModelPOJO {
12     static List<Class> pojoClassName;
13     static List<String> fields;
14     static{
15         pojoClassName = new ArrayList<>();
16         pojoClassName.add(AuditInput.class);
17         pojoClassName.add(AuditOutput.class);
18         pojoClassName.add(CheckLockInput.class);
19         pojoClassName.add(CheckLockOutput.class);
20         pojoClassName.add(ConfigBackupDeleteInput.class);
21         pojoClassName.add(ConfigBackupDeleteOutput.class);
22         pojoClassName.add(ConfigBackupInput.class);
23         pojoClassName.add(ConfigBackupOutput.class);
24         pojoClassName.add(ConfigExportInput.class);
25         pojoClassName.add(ConfigExportOutput.class);
26         pojoClassName.add(ConfigModifyInput.class);
27         pojoClassName.add(ConfigModifyOutput.class);
28         pojoClassName.add(ConfigRestoreInput.class);
29         pojoClassName.add(ConfigRestoreOutput.class);
30         pojoClassName.add(ConfigScaleoutInput.class);
31         pojoClassName.add(ConfigScaleoutOutput.class);
32         pojoClassName.add(ConfigureInput.class);
33         pojoClassName.add(ConfigureOutput.class);
34         pojoClassName.add(EvacuateInput.class);
35         pojoClassName.add(EvacuateOutput.class);
36         pojoClassName.add(HealthCheckInput.class);
37         pojoClassName.add(HealthCheckOutput.class);
38         pojoClassName.add(LiveUpgradeInput.class);
39         pojoClassName.add(LiveUpgradeOutput.class);
40         pojoClassName.add(LockInput.class);
41         pojoClassName.add(LockOutput.class);
42         pojoClassName.add(MigrateInput.class);
43         pojoClassName.add(MigrateOutput.class);
44         pojoClassName.add(RebuildInput.class);
45         pojoClassName.add(RebuildOutput.class);
46         pojoClassName.add(HealthCheckInput.class);
47         pojoClassName.add(RollbackInput.class);
48         pojoClassName.add(RollbackOutput.class);
49         pojoClassName.add(RestartInput.class);
50         pojoClassName.add(RestartOutput.class);
51         pojoClassName.add(SnapshotInput.class);
52         pojoClassName.add(SnapshotOutput.class);
53         pojoClassName.add(SoftwareUploadInput.class);
54         pojoClassName.add(SoftwareUploadOutput.class);
55         pojoClassName.add(StartApplicationInput.class);
56         pojoClassName.add(StartApplicationOutput.class);
57         pojoClassName.add(StartInput.class);
58         pojoClassName.add(StartOutput.class);
59         pojoClassName.add(StopApplicationInput.class);
60         pojoClassName.add(StopApplicationOutput.class);
61         pojoClassName.add(StopInput.class);
62         pojoClassName.add(SyncInput.class);
63         pojoClassName.add(SyncOutput.class);
64         pojoClassName.add(TerminateInput.class);
65         pojoClassName.add(TerminateOutput.class);
66         pojoClassName.add(TestInput.class);
67         pojoClassName.add(TestOutput.class);
68         pojoClassName.add(UnlockInput.class);
69         pojoClassName.add(UnlockOutput.class);
70
71         fields = new ArrayList<>();
72         fields.add("CommonHeader");
73         fields.add("Action");
74         fields.add("Payload");
75         fields.add("Status");
76     }
77     @Test
78     public void testModel() throws Exception{
79         for(String field: fields){
80             for(Class c: pojoClassName){
81                 Object instance = c.newInstance();
82                 Field[] fields =  c.getDeclaredFields();
83                 for(Field f: fields){
84                     if(f.getType() == getClassForString(field)){
85                         Method m = c.getDeclaredMethod("set"+field,getClassForString(field));
86                         Object argument = createArgument(field);
87                         m.invoke(instance,argument);
88
89                         Method getter = c.getDeclaredMethod("get"+field);
90                         Object getValue = getter.invoke(instance);
91                         Assert.assertEquals("POJO test failed for class:"+c.getCanonicalName()+" for method:"+m.getName(),argument, getValue);
92                     }
93                 }
94             }
95         }
96     }
97
98     private Object createArgument(String field){
99         if(field.equals("CommonHeader")){
100             return createHeader();
101         }
102         else if(field.equals("Action")){
103             return createAction();
104         }else if(field.equals("Payload")){
105             return createPayload();
106         }else if(field.equals("Status")){
107             return createStatus();
108         }
109
110         throw new IllegalArgumentException();
111     }
112
113     private Action createAction(){
114         return Action.Restart;
115     }
116     private Payload createPayload(){
117         return new Payload();
118     }
119     private CommonHeader createHeader(){
120         CommonHeader header = new CommonHeader();
121         header.setApiVer("apiver");
122         header.setOriginatorId("originator");
123         return header;
124     }
125     private Status createStatus() {
126         return new Status();
127     }
128
129     private Class getClassForString(String field){
130
131         if(field.equals("CommonHeader")){
132             return CommonHeader.class;
133         }else if(field.equals("Action")){
134             return Action.class;
135         }else if(field.equals("ActionIdentifiers")){
136             return ActionIdentifiers.class;
137         }else if(field.equals("Payload")){
138             return Payload.class;
139         }else if(field.equals("Status")){
140             return Status.class;
141         }
142         throw new IllegalArgumentException();
143     }
144 }