Adding new LCM features to the client lib
[appc.git] / appc-client / client-kit / src / test / java / org / onap / appc / client / lcm / model / TestModelPOJO.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017 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
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
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.
20  * 
21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  * ============LICENSE_END=========================================================
23  */
24
25 package org.onap.appc.client.lcm.model;
26
27 import org.junit.Assert;
28 import org.junit.Test;
29
30 import java.lang.reflect.Field;
31 import java.lang.reflect.Method;
32 import java.util.ArrayList;
33 import java.util.List;
34
35 public class TestModelPOJO {
36     static List<Class> pojoClassName;
37     static List<String> fields;
38     static{
39         pojoClassName = new ArrayList<>();
40         pojoClassName.add(AuditInput.class);
41         pojoClassName.add(AuditOutput.class);
42         pojoClassName.add(CheckLockInput.class);
43         pojoClassName.add(CheckLockOutput.class);
44         pojoClassName.add(ConfigBackupDeleteInput.class);
45         pojoClassName.add(ConfigBackupDeleteOutput.class);
46         pojoClassName.add(ConfigBackupInput.class);
47         pojoClassName.add(ConfigBackupOutput.class);
48         pojoClassName.add(ConfigExportInput.class);
49         pojoClassName.add(ConfigExportOutput.class);
50         pojoClassName.add(ConfigModifyInput.class);
51         pojoClassName.add(ConfigModifyOutput.class);
52         pojoClassName.add(ConfigRestoreInput.class);
53         pojoClassName.add(ConfigRestoreOutput.class);
54         pojoClassName.add(ConfigScaleoutInput.class);
55         pojoClassName.add(ConfigScaleoutOutput.class);
56         pojoClassName.add(ConfigureInput.class);
57         pojoClassName.add(ConfigureOutput.class);
58         pojoClassName.add(EvacuateInput.class);
59         pojoClassName.add(EvacuateOutput.class);
60         pojoClassName.add(HealthCheckInput.class);
61         pojoClassName.add(HealthCheckOutput.class);
62         pojoClassName.add(LiveUpgradeInput.class);
63         pojoClassName.add(LiveUpgradeOutput.class);
64         pojoClassName.add(LockInput.class);
65         pojoClassName.add(LockOutput.class);
66         pojoClassName.add(MigrateInput.class);
67         pojoClassName.add(MigrateOutput.class);
68         pojoClassName.add(RebuildInput.class);
69         pojoClassName.add(RebuildOutput.class);
70         pojoClassName.add(HealthCheckInput.class);
71         pojoClassName.add(RollbackInput.class);
72         pojoClassName.add(RollbackOutput.class);
73         pojoClassName.add(RestartInput.class);
74         pojoClassName.add(RestartOutput.class);
75         pojoClassName.add(SnapshotInput.class);
76         pojoClassName.add(SnapshotOutput.class);
77         pojoClassName.add(SoftwareUploadInput.class);
78         pojoClassName.add(SoftwareUploadOutput.class);
79         pojoClassName.add(StartApplicationInput.class);
80         pojoClassName.add(StartApplicationOutput.class);
81         pojoClassName.add(StartInput.class);
82         pojoClassName.add(StartOutput.class);
83         pojoClassName.add(StopApplicationInput.class);
84         pojoClassName.add(StopApplicationOutput.class);
85         pojoClassName.add(StopInput.class);
86         pojoClassName.add(SyncInput.class);
87         pojoClassName.add(SyncOutput.class);
88         pojoClassName.add(TerminateInput.class);
89         pojoClassName.add(TerminateOutput.class);
90         pojoClassName.add(TestInput.class);
91         pojoClassName.add(TestOutput.class);
92         pojoClassName.add(UnlockInput.class);
93         pojoClassName.add(UnlockOutput.class);
94
95         fields = new ArrayList<>();
96         fields.add("CommonHeader");
97         fields.add("Action");
98         fields.add("Payload");
99         fields.add("Status");
100     }
101     @Test
102     public void testModel() throws Exception{
103         for(String field: fields){
104             for(Class c: pojoClassName){
105                 Object instance = c.newInstance();
106                 Field[] fields =  c.getDeclaredFields();
107                 for(Field f: fields){
108                     if(f.getType() == getClassForString(field)){
109                         Method m = c.getDeclaredMethod("set"+field,getClassForString(field));
110                         Object argument = createArgument(field);
111                         m.invoke(instance,argument);
112
113                         Method getter = c.getDeclaredMethod("get"+field);
114                         Object getValue = getter.invoke(instance);
115                         Assert.assertEquals("POJO test failed for class:"+c.getCanonicalName()+" for method:"+m.getName(),argument, getValue);
116                     }
117                 }
118             }
119         }
120     }
121
122     private Object createArgument(String field){
123         if(field.equals("CommonHeader")){
124             return createHeader();
125         }
126         else if(field.equals("Action")){
127             return createAction();
128         }else if(field.equals("Payload")){
129             return createPayload();
130         }else if(field.equals("Status")){
131             return createStatus();
132         }
133
134         throw new IllegalArgumentException();
135     }
136
137     private Action createAction(){
138         return Action.Restart;
139     }
140     private Payload createPayload(){
141         return new Payload();
142     }
143     private CommonHeader createHeader(){
144         CommonHeader header = new CommonHeader();
145         header.setApiVer("apiver");
146         header.setOriginatorId("originator");
147         return header;
148     }
149     private Status createStatus() {
150         return new Status();
151     }
152
153     private Class getClassForString(String field){
154
155         if(field.equals("CommonHeader")){
156             return CommonHeader.class;
157         }else if(field.equals("Action")){
158             return Action.class;
159         }else if(field.equals("ActionIdentifiers")){
160             return ActionIdentifiers.class;
161         }else if(field.equals("Payload")){
162             return Payload.class;
163         }else if(field.equals("Status")){
164             return Status.class;
165         }
166         throw new IllegalArgumentException();
167     }
168 }