Fix for radio buttons
[sdc.git] / asdc-tests / src / main / java / org / openecomp / sdc / ci / tests / utils / rest / ComponentInstanceRestUtils.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.ci.tests.utils.rest;
22
23 import static org.testng.Assert.assertTrue;
24
25 import java.io.IOException;
26 import java.util.HashMap;
27 import java.util.List;
28 import java.util.Map;
29
30 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
31 import org.openecomp.sdc.be.model.Component;
32 import org.openecomp.sdc.be.model.ComponentInstance;
33 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
34 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
35 import org.openecomp.sdc.be.model.User;
36 import org.openecomp.sdc.ci.tests.api.Urls;
37 import org.openecomp.sdc.ci.tests.config.Config;
38 import org.openecomp.sdc.ci.tests.datatypes.ComponentInstanceReqDetails;
39 import org.openecomp.sdc.ci.tests.datatypes.http.HttpHeaderEnum;
40 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
41 import org.openecomp.sdc.ci.tests.utils.Utils;
42
43 import com.google.gson.Gson;
44
45 public class ComponentInstanceRestUtils extends BaseRestUtils {
46         public static String acceptHeaderDate = "application/json";
47         static Config config = Config.instance();
48         public static Gson gson = new Gson();
49
50         // 'componentType' can be 'services' or 'resources'
51
52         public static RestResponse createComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
53                         User sdncModifierDetails, Component component) throws Exception {
54                 return createComponentInstance(componentInstanceReqDetails, sdncModifierDetails, component.getUniqueId(),
55                                 component.getComponentType());
56         }
57
58         public static RestResponse createComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
59                         User sdncModifierDetails, String componentId, ComponentTypeEnum componentType) throws Exception {
60
61                 return createComponentInstance(componentInstanceReqDetails, sdncModifierDetails, componentId,
62                                 ComponentTypeEnum.findParamByType(componentType));
63         }
64
65         public static RestResponse createComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
66                         User sdncModifierDetails, String componentId, String componentType) throws Exception {
67                 Config config = Utils.getConfig();
68                 String userId = sdncModifierDetails.getUserId();
69                 String serviceBodyJson = gson.toJson(componentInstanceReqDetails);
70                 String url = String.format(Urls.CREATE_COMPONENT_INSTANCE, config.getCatalogBeHost(), config.getCatalogBePort(),
71                                 componentType, componentId);
72                 RestResponse createResourceInstance = sendPost(url, serviceBodyJson, userId, acceptHeaderData);
73                 if (createResourceInstance.getErrorCode().equals(BaseRestUtils.STATUS_CODE_CREATED)) {
74                         String uniqueId = ResponseParser.getValueFromJsonResponse(createResourceInstance.getResponse(), "uniqueId");
75                         componentInstanceReqDetails.setUniqueId(uniqueId);
76                         // Gson gson = new Gson();
77                         // ResourceInstanceReqDetails fromJson =
78                         // gson.fromJson(createResourceInstance.getResponse(),
79                         // ResourceInstanceReqDetails.class);
80                         // componentInstanceReqDetails.setUniqueId(fromJson.getUniqueId());
81                 }
82                 return createResourceInstance;
83         }
84
85         public static RestResponse getComponentInstances(ComponentTypeEnum type, String componentId, User user)
86                         throws IOException {
87
88                 Config config = Utils.getConfig();
89
90                 Map<String, String> headersMap = new HashMap<String, String>();
91                 headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), contentTypeHeaderData);
92                 headersMap.put(HttpHeaderEnum.ACCEPT.getValue(), acceptHeaderData);
93                 headersMap.put(HttpHeaderEnum.USER_ID.getValue(), user.getUserId());
94
95                 String url = String.format(Urls.GET_COMPONENT_INSTANCES, config.getCatalogBeHost(), config.getCatalogBePort(),
96                                 ComponentTypeEnum.findParamByType(type), componentId);
97
98                 RestResponse sendGetServerRequest = sendGet(url, user.getUserId(), headersMap);
99
100                 return sendGetServerRequest;
101
102         }
103         
104         public static RestResponse getComponentInstancePropertiesByID(ComponentTypeEnum type, String componentId, String resourceInstanceId, User user)
105                         throws IOException {
106
107                 Config config = Utils.getConfig();
108
109                 Map<String, String> headersMap = new HashMap<String, String>();
110                 headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), contentTypeHeaderData);
111                 headersMap.put(HttpHeaderEnum.ACCEPT.getValue(), acceptHeaderData);
112                 headersMap.put(HttpHeaderEnum.USER_ID.getValue(), user.getUserId());
113
114                 String url = String.format(Urls.GET_COMPONENT_INSTANCE_PROPERTIES_BY_ID, config.getCatalogBeHost(), config.getCatalogBePort(),
115                                 ComponentTypeEnum.findParamByType(type), componentId, resourceInstanceId);
116
117                 return sendGet(url, user.getUserId(), headersMap);
118
119         }
120         
121         public static RestResponse deleteComponentInstance(User sdncModifierDetails, String componentId,
122                         String resourceInstanceId, ComponentTypeEnum componentType) throws Exception {
123
124                 return deleteComponentInstance(sdncModifierDetails, componentId, resourceInstanceId,
125                                 ComponentTypeEnum.findParamByType(componentType));
126         }
127
128         public static RestResponse deleteComponentInstance(User sdncModifierDetails, String componentId,
129                         String resourceInstanceId, String componentTypeString) throws Exception {
130                 Config config = Utils.getConfig();
131                 String userId = sdncModifierDetails.getUserId();
132                 String url = String.format(Urls.DELETE_COMPONENT_INSTANCE, config.getCatalogBeHost(), config.getCatalogBePort(),
133                                 componentTypeString, componentId, resourceInstanceId);
134                 RestResponse sendCreateUserRequest = sendDelete(url, userId);
135                 return sendCreateUserRequest;
136         }
137
138         public static RestResponse updateComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
139                         User sdncModifierDetails, String componentId, ComponentTypeEnum componentType) throws IOException {
140
141                 Config config = Utils.getConfig();
142                 String userId = sdncModifierDetails.getUserId();
143                 String serviceBodyJson = gson.toJson(componentInstanceReqDetails);
144                 String url = String.format(Urls.UPDATE_COMPONENT_INSTANCE, config.getCatalogBeHost(), config.getCatalogBePort(),
145                                 ComponentTypeEnum.findParamByType(componentType), componentId,
146                                 componentInstanceReqDetails.getUniqueId());
147                 RestResponse updateResourceInstance = sendPost(url, serviceBodyJson, userId, acceptHeaderData);
148                 return updateResourceInstance;
149         }
150         public static RestResponse updateComponentInstance(ComponentInstance componentInstance,
151                         User sdncModifierDetails, String componentId, ComponentTypeEnum componentType) throws IOException {
152
153                 Config config = Utils.getConfig();
154                 String userId = sdncModifierDetails.getUserId();
155                 String serviceBodyJson = gson.toJson(componentInstance);
156                 String url = String.format(Urls.UPDATE_COMPONENT_INSTANCE, config.getCatalogBeHost(), config.getCatalogBePort(),
157                                 ComponentTypeEnum.findParamByType(componentType), componentId,
158                                 componentInstance.getUniqueId());
159                 RestResponse updateResourceInstance = sendPost(url, serviceBodyJson, userId, acceptHeaderData);
160                 return updateResourceInstance;
161         }
162
163         public static RestResponse updateMultipleComponentInstance(
164                         List<ComponentInstanceReqDetails> componentInstanceReqDetailsList, User sdncModifierDetails,
165                         String componentId, ComponentTypeEnum componentType) throws IOException {
166                 Config config = Utils.getConfig();
167                 String userId = sdncModifierDetails.getUserId();
168                 String serviceBodyJson = gson.toJson(componentInstanceReqDetailsList.toArray());
169                 String url = String.format(Urls.UPDATE_MULTIPLE_COMPONENT_INSTANCE, config.getCatalogBeHost(),
170                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(componentType), componentId);
171                 RestResponse updateResourceInstance = sendPost(url, serviceBodyJson, userId, acceptHeaderData);
172                 return updateResourceInstance;
173         }
174
175         public static RestResponse associateInstances(RequirementCapabilityRelDef relation, User sdncModifierDetails,
176                         String componentId, ComponentTypeEnum componentTypeEnum) throws IOException {
177
178                 Config config = Utils.getConfig();
179
180                 String componentType = "";
181                 switch (componentTypeEnum) {
182                 case RESOURCE:
183                         componentType = ComponentTypeEnum.RESOURCE_PARAM_NAME;
184                         break;
185                 case SERVICE:
186                         componentType = ComponentTypeEnum.SERVICE_PARAM_NAME;
187                         break;
188                 default:
189                         break;
190                 }
191                 String serviceBodyJson = gson.toJson(relation);
192                 String url = String.format(Urls.ASSOCIATE_RESOURCE_INSTANCE, config.getCatalogBeHost(),
193                                 config.getCatalogBePort(), componentType, componentId);
194
195                 RestResponse associateInstance = sendPost(url, serviceBodyJson, sdncModifierDetails.getUserId(),
196                                 acceptHeaderData);
197                 return associateInstance;
198
199         }
200
201         public static RestResponse dissociateInstances(RequirementCapabilityRelDef relation, User sdncModifierDetails,
202                         String componentId, ComponentTypeEnum componentTypeEnum) throws IOException {
203
204                 Config config = Utils.getConfig();
205
206                 String componentType = "";
207                 switch (componentTypeEnum) {
208                 case RESOURCE:
209                         componentType = ComponentTypeEnum.RESOURCE_PARAM_NAME;
210                         break;
211                 case SERVICE:
212                         componentType = ComponentTypeEnum.SERVICE_PARAM_NAME;
213                         break;
214                 default:
215                         break;
216                 }
217                 String serviceBodyJson = gson.toJson(relation);
218                 String url = String.format(Urls.DISSOCIATE_RESOURCE_INSTANCE, config.getCatalogBeHost(),
219                                 config.getCatalogBePort(), componentType, componentId);
220
221                 RestResponse associateInstance = sendPut(url, serviceBodyJson, sdncModifierDetails.getUserId(),
222                                 acceptHeaderData);
223                 return associateInstance;
224
225         }
226
227         public static void checkComponentInstanceType(RestResponse response, String expectedComponentType) {
228                 String actualComponentType = ResponseParser.getComponentTypeFromResponse(response);
229                 assertTrue(expectedComponentType.equals(actualComponentType),
230                                 "Failed. expected: " + expectedComponentType + ", actual: " + actualComponentType + "/");
231         }
232
233         public static RestResponse updatePropertyValueOnResourceInstance(Component component, ComponentInstance instDetails,
234                         User user, ComponentInstanceProperty updatedInstanceProperty) throws IOException {
235
236                 Config config = Utils.getConfig();
237
238                 Map<String, String> headersMap = new HashMap<String, String>();
239                 headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), contentTypeHeaderData);
240                 headersMap.put(HttpHeaderEnum.ACCEPT.getValue(), acceptHeaderData);
241                 headersMap.put(HttpHeaderEnum.USER_ID.getValue(), user.getUserId());
242
243                 String url = String.format(Urls.UPDATE_PROPERTY_TO_RESOURCE_INSTANCE, config.getCatalogBeHost(),
244                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(component.getComponentType()),
245                                 component.getUniqueId(), instDetails.getUniqueId());
246                 String body = gson.toJson(updatedInstanceProperty);
247
248                 RestResponse sendGetServerRequest = sendPost(url, body, user.getUserId(), acceptHeaderData);
249                 return sendGetServerRequest;
250
251         }
252
253         public static RestResponse changeComponentInstanceVersion(Component container,
254                         ComponentInstance componentInstanceToReplace, Component newInstance, User sdncModifierDetails)
255                         throws Exception {
256
257                 return changeComponentInstanceVersion(container.getUniqueId(), componentInstanceToReplace, newInstance,
258                                 sdncModifierDetails, container.getComponentType());
259         }
260
261         public static RestResponse changeComponentInstanceVersion(String containerUID,
262                         ComponentInstance componentInstanceToReplace, Component component, User sdncModifierDetails,
263                         ComponentTypeEnum componentType) throws IOException {
264
265                 Config config = Utils.getConfig();
266                 String resourceUid = ("{\"componentUid\":\"" + component.getUniqueId() + "\"}");
267                 String url = String.format(Urls.CHANGE_RESOURCE_INSTANCE_VERSION, config.getCatalogBeHost(),
268                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(componentType), containerUID,
269                                 componentInstanceToReplace.getUniqueId());
270                 RestResponse changeResourceInstanceVersion = sendPost(url, resourceUid, sdncModifierDetails.getUserId(),
271                                 acceptHeaderData);
272
273                 if (changeResourceInstanceVersion.getErrorCode() == 200
274                                 || changeResourceInstanceVersion.getErrorCode() == 201) {
275                         Gson gson = new Gson();
276                         // ResourceInstanceReqDetails
277                         // convertResourceInstanceResponseToJavaObject =
278                         // ResponseParser.convertResourceInstanceResponseToJavaObject(createResourceInstance.getResponse());
279                         ComponentInstanceReqDetails fromJson = gson.fromJson(changeResourceInstanceVersion.getResponse(),
280                                         ComponentInstanceReqDetails.class);
281
282                         componentInstanceToReplace.setUniqueId(fromJson.getUniqueId());
283
284                 }
285
286                 return changeResourceInstanceVersion;
287
288         }
289
290         public static RestResponse changeComponentInstanceVersion(String componentUniqueId,
291                         String serviceInstanceToReplaceUniqueId, String serviceUniqueId, User sdncModifierDetails,
292                         ComponentTypeEnum componentType) throws IOException {
293                 Config config = Utils.getConfig();
294                 String resourceUid = ("{\"componentUid\":\"" + serviceUniqueId + "\"}");
295                 String url = String.format(Urls.CHANGE_RESOURCE_INSTANCE_VERSION, config.getCatalogBeHost(),
296                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(componentType), componentUniqueId,
297                                 serviceInstanceToReplaceUniqueId);
298                 RestResponse changeResourceInstanceVersion = sendPost(url, resourceUid, sdncModifierDetails.getUserId(),
299                                 acceptHeaderData);
300                 return changeResourceInstanceVersion;
301
302         }
303
304 }