d29e4af4e87d2baa4fad9755d33428c166663346
[sdc.git] /
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation;
18
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertNotNull;
21 import static org.junit.Assert.assertTrue;
22 import static org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator.getFunctionTranslateTo;
23
24 import java.io.IOException;
25 import java.util.ArrayList;
26 import java.util.HashMap;
27 import java.util.List;
28 import java.util.Map;
29
30 import org.junit.Before;
31 import org.junit.Test;
32 import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest;
33
34 public class FunctionTranslationGetParamImplTest extends BaseResourceTranslationTest {
35
36   @Override
37   @Before
38   public void setUp() throws IOException {
39     // do not delete this function. it prevents the superclass setup from running
40   }
41
42   @Test
43   public void testStringGetParamFuncValue() {
44     FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl();
45     String functionValue = "parameter1";
46
47     FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null, "dummy", null,
48             null), null, functionValue, null);
49     Object translatedFunc = translationImpl.translateFunction(functionTranslator);
50
51     assertTrue(translatedFunc instanceof Map);
52     assertNotNull(((Map) translatedFunc).get("get_input"));
53     assertEquals(functionValue, ((Map) translatedFunc).get("get_input"));
54
55   }
56
57   @Test
58   public void testListGetParamFuncValue() {
59     FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl();
60     List<Object> functionValue = new ArrayList<>();
61     functionValue.add("parameter1");
62     functionValue.add(0);
63     functionValue.add("key1");
64
65     FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null, "dummy", null,
66             null), null, functionValue, null);
67     Object translatedFunc = translationImpl.translateFunction(functionTranslator);
68
69     assertTrue(translatedFunc instanceof Map);
70     assertNotNull(((Map) translatedFunc).get("get_input"));
71     Object translatedFunValue = ((Map) translatedFunc).get("get_input");
72     assertTrue(translatedFunValue instanceof List);
73
74     assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
75     assertEquals(functionValue.get(1), ((List) translatedFunValue).get(1));
76     assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
77
78   }
79
80   @Test
81   public void testMapGetParamFuncValue() {
82     // input heat function expression
83     //{get_param: [parameter1, {get_param:indexParam}, key1]}
84     // output translated function expression
85     //{get_input: [parameter1, {get_input:indexParam}, key1]}
86
87     FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl();
88     List<Object> functionValue = new ArrayList<>();
89     functionValue.add("parameter1");
90     Map<String, String> innerParamMap = new HashMap<>();
91     innerParamMap.put("get_param", "indexParam");
92     functionValue.add(innerParamMap);
93     functionValue.add("key1");
94
95     FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null, "dummy", null,
96             null), null, functionValue, null);
97     Object translatedFunc = translationImpl.translateFunction(functionTranslator);
98
99     assertTrue(translatedFunc instanceof Map);
100     assertNotNull(((Map) translatedFunc).get("get_input"));
101     Object translatedFunValue = ((Map) translatedFunc).get("get_input");
102     assertTrue(translatedFunValue instanceof List);
103     assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
104     assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
105     assertTrue(((List) translatedFunValue).get(1) instanceof Map);
106     if (((List) translatedFunValue).get(1) instanceof Map) {
107       assertEquals(innerParamMap.get("get_param"), ((Map) ((List) translatedFunValue).get(1))
108               .get("get_input"));
109     }
110
111   }
112
113   @Test
114   public void testMapWithMapGetParamFuncValue() {
115     // input heat function expression
116     //{get_param: [parameter1, {get_param:[parameter2, {get_param:indexParam}]}, key1]}
117     // output translated function expression
118     //{get_input: [parameter1, {get_input:[parameter2, {get_input:indexParam}]}, key1]}
119
120     FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl();
121     List<Object> functionValue = new ArrayList<>();
122     functionValue.add("parameter1");
123     Map<String, Object> firstInnerParamMap = new HashMap<>();
124     Map<String, String> secondInnerParamMap = new HashMap<>();
125     secondInnerParamMap.put("get_param", "indexParam");
126     List<Object> innerfunction = new ArrayList<>();
127     innerfunction.add("parameter2");
128     innerfunction.add(secondInnerParamMap);
129     firstInnerParamMap.put("get_param", innerfunction);
130     functionValue.add(firstInnerParamMap);
131     functionValue.add("key1");
132
133     FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null, "dummy", null,
134             null), null, functionValue, null);
135     Object translatedFunc = translationImpl.translateFunction(functionTranslator);
136
137     assertTrue(translatedFunc instanceof Map);
138     assertNotNull(((Map) translatedFunc).get("get_input"));
139     Object translatedFunValue = ((Map) translatedFunc).get("get_input");
140     assertTrue(translatedFunValue instanceof List);
141     assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
142     assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
143     assertTrue(((List) translatedFunValue).get(1) instanceof Map);
144     if (((List) translatedFunValue).get(1) instanceof Map) {
145       assertTrue(((Map) ((List) translatedFunValue).get(1)).get("get_input") instanceof List);
146       List innerTranslatedFunction = (List) ((Map) ((List) translatedFunValue).get(1)).get("get_input");
147       assertEquals(innerfunction.get(0), innerTranslatedFunction.get(0));
148       assertTrue(innerTranslatedFunction.get(1) instanceof Map);
149       assertEquals(secondInnerParamMap.get("get_param"), ((Map) innerTranslatedFunction.get(1)).get("get_input"));
150     }
151   }
152
153   @Test
154   public void testInnerNotSupportedFuncGetParamFuncValue() {
155     // input heat function expression
156     //{get_param: [parameter1, {str_replace: {template:$AAkgiru, AA:{get_param:prameter2}}}, key1]}
157     // output translated function expression
158     //{get_input: [parameter1, {str_replace: {template:$AAkgiru, AA:{get_input:parameter2}}}, key1]}
159
160     FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl();
161     List<Object> functionValue = new ArrayList<>();
162     functionValue.add("parameter1");
163
164     Map<String, Object> templateMap = new HashMap<>();
165     templateMap.put("template", "$AAkgiru");
166
167     Map<String, Object> strReplaceFuncMap = new HashMap<>();
168     Map<String, Object> getParamMapInner = new HashMap<>();
169     getParamMapInner.put("get_param", "parameter2");
170     templateMap.put("AA", getParamMapInner);
171
172     Map<String, Object> innerParamValue = new HashMap<>();
173     innerParamValue.putAll(templateMap);
174     innerParamValue.putAll(strReplaceFuncMap);
175
176     strReplaceFuncMap.put("str_replace", innerParamValue);
177     functionValue.add(strReplaceFuncMap);
178
179     functionValue.add("key1");
180
181     FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null, "dummy", null,
182             null), null, functionValue, null);
183     Object translatedFunc = translationImpl.translateFunction(functionTranslator);
184
185     assertTrue(translatedFunc instanceof Map);
186     assertNotNull(((Map) translatedFunc).get("get_input"));
187     Object translatedFunValue = ((Map) translatedFunc).get("get_input");
188     assertTrue(translatedFunValue instanceof List);
189     assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
190     assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
191     assertTrue(((List) translatedFunValue).get(1) instanceof Map);
192     if (((List) translatedFunValue).get(1) instanceof Map) {
193       assertEquals(strReplaceFuncMap.get("get_param"),
194               ((Map) ((List) translatedFunValue).get(1))
195                       .get("get_input"));
196     }
197     assertTrue(((List) translatedFunValue).get(1) instanceof Map);
198     if (((List) translatedFunValue).get(1) instanceof Map) {
199       assertTrue(((Map) ((List) translatedFunValue).get(1)).get("str_replace") instanceof Map);
200       Map strReplacefunctionValue = (Map) ((Map) ((List) translatedFunValue).get(1)).get("str_replace");
201       assertEquals(templateMap.get("template"), strReplacefunctionValue.get("template"));
202       assertTrue(strReplacefunctionValue.get("AA") instanceof Map);
203       if (strReplacefunctionValue.get("AA") instanceof Map) {
204         assertEquals(getParamMapInner.get("get_param"), ((Map) strReplacefunctionValue.get
205                 ("AA")).get("get_input"));
206       }
207     }
208   }
209
210   @Test
211   public void testTranslateHeatPseudoParamUsedFromMainHeat() throws Exception {
212     inputFilesPath =
213             "/mock/services/heattotosca/heatPseudoParameters/usedFromMainHeat/inputfiles";
214     outputFilesPath =
215             "/mock/services/heattotosca/heatPseudoParameters/usedFromMainHeat/expectedoutputfiles";
216     initTranslatorAndTranslate();
217     testTranslation();
218   }
219
220   @Test
221   public void testTranslateHeatPseudoParamUsedFromNestedHeat() throws Exception {
222     inputFilesPath =
223             "/mock/services/heattotosca/heatPseudoParameters/usedFromNestedHeat/inputfiles";
224     outputFilesPath =
225             "/mock/services/heattotosca/heatPseudoParameters/usedFromNestedHeat/expectedoutputfiles";
226     initTranslatorAndTranslate();
227     testTranslation();
228   }
229
230
231 }