[SDC-29] rebase continue work to align source
[sdc.git] / test-apis-ci / 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 deleteComponentInstance(User sdncModifierDetails, String componentId,
105                         String resourceInstanceId, ComponentTypeEnum componentType) throws Exception {
106
107                 return deleteComponentInstance(sdncModifierDetails, componentId, resourceInstanceId,
108                                 ComponentTypeEnum.findParamByType(componentType));
109         }
110
111         public static RestResponse deleteComponentInstance(User sdncModifierDetails, String componentId,
112                         String resourceInstanceId, String componentTypeString) throws Exception {
113                 Config config = Utils.getConfig();
114                 String userId = sdncModifierDetails.getUserId();
115                 String url = String.format(Urls.DELETE_COMPONENT_INSTANCE, config.getCatalogBeHost(), config.getCatalogBePort(),
116                                 componentTypeString, componentId, resourceInstanceId);
117                 RestResponse sendCreateUserRequest = sendDelete(url, userId);
118                 return sendCreateUserRequest;
119         }
120
121         public static RestResponse updateComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
122                         User sdncModifierDetails, String componentId, ComponentTypeEnum componentType) throws IOException {
123
124                 Config config = Utils.getConfig();
125                 String userId = sdncModifierDetails.getUserId();
126                 String serviceBodyJson = gson.toJson(componentInstanceReqDetails);
127                 String url = String.format(Urls.UPDATE_COMPONENT_INSTANCE, config.getCatalogBeHost(), config.getCatalogBePort(),
128                                 ComponentTypeEnum.findParamByType(componentType), componentId,
129                                 componentInstanceReqDetails.getUniqueId());
130                 RestResponse updateResourceInstance = sendPost(url, serviceBodyJson, userId, acceptHeaderData);
131                 return updateResourceInstance;
132         }
133
134         //Tal G - CI for New API Multiple Instance Update
135         public static RestResponse updateMultipleComponentInstance(
136                         List<ComponentInstanceReqDetails> componentInstanceReqDetailsList, User sdncModifierDetails,
137                         String componentId, ComponentTypeEnum componentType) throws IOException {
138                 Config config = Utils.getConfig();
139                 String userId = sdncModifierDetails.getUserId();
140                 String serviceBodyJson = gson.toJson(componentInstanceReqDetailsList.toArray());
141                 String url = String.format(Urls.UPDATE_MULTIPLE_COMPONENT_INSTANCE, config.getCatalogBeHost(),
142                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(componentType), componentId);
143                 RestResponse updateResourceInstance = sendPost(url, serviceBodyJson, userId, acceptHeaderData);
144                 return updateResourceInstance;
145         }
146
147         public static RestResponse associateInstances(RequirementCapabilityRelDef relation, User sdncModifierDetails,
148                         String componentId, ComponentTypeEnum componentTypeEnum) throws IOException {
149
150                 Config config = Utils.getConfig();
151
152                 String componentType = "";
153                 switch (componentTypeEnum) {
154                 case RESOURCE:
155                         componentType = ComponentTypeEnum.RESOURCE_PARAM_NAME;
156                         break;
157                 case SERVICE:
158                         componentType = ComponentTypeEnum.SERVICE_PARAM_NAME;
159                         break;
160                 default:
161                         break;
162                 }
163                 String serviceBodyJson = gson.toJson(relation);
164                 String url = String.format(Urls.ASSOCIATE__RESOURCE_INSTANCE, config.getCatalogBeHost(),
165                                 config.getCatalogBePort(), componentType, componentId);
166
167                 RestResponse associateInstance = sendPost(url, serviceBodyJson, sdncModifierDetails.getUserId(),
168                                 acceptHeaderData);
169                 return associateInstance;
170
171         }
172
173         public static RestResponse dissociateInstances(RequirementCapabilityRelDef relation, User sdncModifierDetails,
174                         String componentId, ComponentTypeEnum componentTypeEnum) throws IOException {
175
176                 Config config = Utils.getConfig();
177
178                 String componentType = "";
179                 switch (componentTypeEnum) {
180                 case RESOURCE:
181                         componentType = ComponentTypeEnum.RESOURCE_PARAM_NAME;
182                         break;
183                 case SERVICE:
184                         componentType = ComponentTypeEnum.SERVICE_PARAM_NAME;
185                         break;
186                 default:
187                         break;
188                 }
189                 String serviceBodyJson = gson.toJson(relation);
190                 String url = String.format(Urls.DISSOCIATE__RESOURCE_INSTANCE, config.getCatalogBeHost(),
191                                 config.getCatalogBePort(), componentType, componentId);
192
193                 RestResponse associateInstance = sendPut(url, serviceBodyJson, sdncModifierDetails.getUserId(),
194                                 acceptHeaderData);
195                 return associateInstance;
196
197         }
198
199         public static void checkComponentInstanceType(RestResponse response, String expectedComponentType) {
200                 String actualComponentType = ResponseParser.getComponentTypeFromResponse(response);
201                 assertTrue(expectedComponentType.equals(actualComponentType),
202                                 "Failed. expected: " + expectedComponentType + ", actual: " + actualComponentType + "/");
203         }
204
205         public static RestResponse updatePropertyValueOnResourceInstance(Component component, ComponentInstance instDetails,
206                         User user, ComponentInstanceProperty updatedInstanceProperty) throws IOException {
207
208                 Config config = Utils.getConfig();
209
210                 Map<String, String> headersMap = new HashMap<String, String>();
211                 headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), contentTypeHeaderData);
212                 headersMap.put(HttpHeaderEnum.ACCEPT.getValue(), acceptHeaderData);
213                 headersMap.put(HttpHeaderEnum.USER_ID.getValue(), user.getUserId());
214
215                 String url = String.format(Urls.UPDATE_PROPERTY_TO_RESOURCE_INSTANCE, config.getCatalogBeHost(),
216                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(component.getComponentType()),
217                                 component.getUniqueId(), instDetails.getUniqueId());
218                 String body = gson.toJson(updatedInstanceProperty);
219
220                 RestResponse sendGetServerRequest = sendPost(url, body, user.getUserId(), acceptHeaderData);
221                 return sendGetServerRequest;
222
223         }
224
225         public static RestResponse changeComponentInstanceVersion(Component container,
226                         ComponentInstance componentInstanceToReplace, Component newInstance, User sdncModifierDetails)
227                         throws Exception {
228
229                 return changeComponentInstanceVersion(container.getUniqueId(), componentInstanceToReplace, newInstance,
230                                 sdncModifierDetails, container.getComponentType());
231         }
232
233         public static RestResponse changeComponentInstanceVersion(String containerUID,
234                         ComponentInstance componentInstanceToReplace, Component component, User sdncModifierDetails,
235                         ComponentTypeEnum componentType) throws IOException {
236
237                 Config config = Utils.getConfig();
238                 String resourceUid = ("{\"componentUid\":\"" + component.getUniqueId() + "\"}");
239                 String url = String.format(Urls.CHANGE__RESOURCE_INSTANCE_VERSION, config.getCatalogBeHost(),
240                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(componentType), containerUID,
241                                 componentInstanceToReplace.getUniqueId());
242                 RestResponse changeResourceInstanceVersion = sendPost(url, resourceUid, sdncModifierDetails.getUserId(),
243                                 acceptHeaderData);
244
245                 if (changeResourceInstanceVersion.getErrorCode() == 200
246                                 || changeResourceInstanceVersion.getErrorCode() == 201) {
247                         Gson gson = new Gson();
248                         // ResourceInstanceReqDetails
249                         // convertResourceInstanceResponseToJavaObject =
250                         // ResponseParser.convertResourceInstanceResponseToJavaObject(createResourceInstance.getResponse());
251                         ComponentInstanceReqDetails fromJson = gson.fromJson(changeResourceInstanceVersion.getResponse(),
252                                         ComponentInstanceReqDetails.class);
253
254                         componentInstanceToReplace.setUniqueId(fromJson.getUniqueId());
255
256                 }
257
258                 return changeResourceInstanceVersion;
259
260         }
261
262         public static RestResponse changeComponentInstanceVersion(String componentUniqueId,
263                         String serviceInstanceToReplaceUniqueId, String serviceUniqueId, User sdncModifierDetails,
264                         ComponentTypeEnum componentType) throws IOException {
265                 Config config = Utils.getConfig();
266                 String resourceUid = ("{\"componentUid\":\"" + serviceUniqueId + "\"}");
267                 String url = String.format(Urls.CHANGE__RESOURCE_INSTANCE_VERSION, config.getCatalogBeHost(),
268                                 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(componentType), componentUniqueId,
269                                 serviceInstanceToReplaceUniqueId);
270                 RestResponse changeResourceInstanceVersion = sendPost(url, resourceUid, sdncModifierDetails.getUserId(),
271                                 acceptHeaderData);
272                 return changeResourceInstanceVersion;
273
274         }
275
276 }