2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.ci.tests.utils.rest;
23 import static org.testng.Assert.assertTrue;
25 import java.io.IOException;
26 import java.util.HashMap;
27 import java.util.List;
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;
43 import com.google.gson.Gson;
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();
50 // 'componentType' can be 'services' or 'resources'
52 public static RestResponse createComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
53 User sdncModifierDetails, Component component) throws Exception {
54 return createComponentInstance(componentInstanceReqDetails, sdncModifierDetails, component.getUniqueId(),
55 component.getComponentType());
58 public static RestResponse createComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
59 User sdncModifierDetails, String componentId, ComponentTypeEnum componentType) throws Exception {
61 return createComponentInstance(componentInstanceReqDetails, sdncModifierDetails, componentId,
62 ComponentTypeEnum.findParamByType(componentType));
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());
82 return createResourceInstance;
85 public static RestResponse getComponentInstances(ComponentTypeEnum type, String componentId, User user)
88 Config config = Utils.getConfig();
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());
95 String url = String.format(Urls.GET_COMPONENT_INSTANCES, config.getCatalogBeHost(), config.getCatalogBePort(),
96 ComponentTypeEnum.findParamByType(type), componentId);
98 RestResponse sendGetServerRequest = sendGet(url, user.getUserId(), headersMap);
100 return sendGetServerRequest;
104 public static RestResponse getComponentInstancePropertiesByID(ComponentTypeEnum type, String componentId, String resourceInstanceId, User user)
107 Config config = Utils.getConfig();
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());
114 String url = String.format(Urls.GET_COMPONENT_INSTANCE_PROPERTIES_BY_ID, config.getCatalogBeHost(), config.getCatalogBePort(),
115 ComponentTypeEnum.findParamByType(type), componentId, resourceInstanceId);
117 return sendGet(url, user.getUserId(), headersMap);
121 public static RestResponse deleteComponentInstance(User sdncModifierDetails, String componentId,
122 String resourceInstanceId, ComponentTypeEnum componentType) throws Exception {
124 return deleteComponentInstance(sdncModifierDetails, componentId, resourceInstanceId,
125 ComponentTypeEnum.findParamByType(componentType));
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;
138 public static RestResponse updateComponentInstance(ComponentInstanceReqDetails componentInstanceReqDetails,
139 User sdncModifierDetails, String componentId, ComponentTypeEnum componentType) throws IOException {
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;
150 public static RestResponse updateComponentInstance(ComponentInstance componentInstance,
151 User sdncModifierDetails, String componentId, ComponentTypeEnum componentType) throws IOException {
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;
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;
175 public static RestResponse associateInstances(RequirementCapabilityRelDef relation, User sdncModifierDetails,
176 String componentId, ComponentTypeEnum componentTypeEnum) throws IOException {
178 Config config = Utils.getConfig();
180 String componentType = "";
181 switch (componentTypeEnum) {
183 componentType = ComponentTypeEnum.RESOURCE_PARAM_NAME;
186 componentType = ComponentTypeEnum.SERVICE_PARAM_NAME;
191 String serviceBodyJson = gson.toJson(relation);
192 String url = String.format(Urls.ASSOCIATE_RESOURCE_INSTANCE, config.getCatalogBeHost(),
193 config.getCatalogBePort(), componentType, componentId);
195 RestResponse associateInstance = sendPost(url, serviceBodyJson, sdncModifierDetails.getUserId(),
197 return associateInstance;
201 public static RestResponse dissociateInstances(RequirementCapabilityRelDef relation, User sdncModifierDetails,
202 String componentId, ComponentTypeEnum componentTypeEnum) throws IOException {
204 Config config = Utils.getConfig();
206 String componentType = "";
207 switch (componentTypeEnum) {
209 componentType = ComponentTypeEnum.RESOURCE_PARAM_NAME;
212 componentType = ComponentTypeEnum.SERVICE_PARAM_NAME;
217 String serviceBodyJson = gson.toJson(relation);
218 String url = String.format(Urls.DISSOCIATE_RESOURCE_INSTANCE, config.getCatalogBeHost(),
219 config.getCatalogBePort(), componentType, componentId);
221 RestResponse associateInstance = sendPut(url, serviceBodyJson, sdncModifierDetails.getUserId(),
223 return associateInstance;
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 + "/");
233 public static RestResponse updatePropertyValueOnResourceInstance(Component component, ComponentInstance instDetails,
234 User user, ComponentInstanceProperty updatedInstanceProperty) throws IOException {
236 Config config = Utils.getConfig();
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());
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);
248 RestResponse sendGetServerRequest = sendPost(url, body, user.getUserId(), acceptHeaderData);
249 return sendGetServerRequest;
253 public static RestResponse changeComponentInstanceVersion(Component container,
254 ComponentInstance componentInstanceToReplace, Component newInstance, User sdncModifierDetails)
257 return changeComponentInstanceVersion(container.getUniqueId(), componentInstanceToReplace, newInstance,
258 sdncModifierDetails, container.getComponentType());
261 public static RestResponse changeComponentInstanceVersion(String containerUID,
262 ComponentInstance componentInstanceToReplace, Component component, User sdncModifierDetails,
263 ComponentTypeEnum componentType) throws IOException {
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(),
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);
282 componentInstanceToReplace.setUniqueId(fromJson.getUniqueId());
286 return changeResourceInstanceVersion;
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(),
300 return changeResourceInstanceVersion;