Merge "[sdc] - repositories proxied by LF are removed"
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / lifecycle / LifecycleTestBase.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.be.components.lifecycle;
22
23 import static org.mockito.Mockito.when;
24
25 import java.util.ArrayList;
26 import java.util.List;
27
28 import javax.servlet.ServletContext;
29
30 import org.mockito.InjectMocks;
31 import org.mockito.Mockito;
32 import org.mockito.invocation.InvocationOnMock;
33 import org.mockito.stubbing.Answer;
34 import org.openecomp.sdc.AuditingMockManager;
35 import org.openecomp.sdc.be.auditing.api.IAuditingManager;
36 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic;
37 import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
38 import org.openecomp.sdc.be.config.ConfigurationManager;
39 import org.openecomp.sdc.be.dao.api.ActionStatus;
40 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
41 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
42 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
43 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
44 import org.openecomp.sdc.be.impl.WebAppContextWrapper;
45 import org.openecomp.sdc.be.model.ArtifactDefinition;
46 import org.openecomp.sdc.be.model.Component;
47 import org.openecomp.sdc.be.model.ComponentMetadataDefinition;
48 import org.openecomp.sdc.be.model.LifecycleStateEnum;
49 import org.openecomp.sdc.be.model.Resource;
50 import org.openecomp.sdc.be.model.Service;
51 import org.openecomp.sdc.be.model.User;
52 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
53 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElementTypeEnum;
54 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaElementLifecycleOperation;
55 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
56 import org.openecomp.sdc.be.model.jsontitan.utils.ModelConverter;
57 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
58 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
59 import org.openecomp.sdc.be.user.Role;
60 import org.openecomp.sdc.be.user.UserBusinessLogic;
61 import org.openecomp.sdc.common.api.ConfigurationSource;
62 import org.openecomp.sdc.common.api.Constants;
63 import org.openecomp.sdc.common.impl.ExternalConfiguration;
64 import org.openecomp.sdc.common.impl.FSConfigurationSource;
65 import org.openecomp.sdc.exception.ResponseFormat;
66 import org.slf4j.Logger;
67 import org.slf4j.LoggerFactory;
68 import org.springframework.web.context.WebApplicationContext;
69
70 import com.google.gson.Gson;
71 import com.google.gson.GsonBuilder;
72
73 import fj.data.Either;
74 import junit.framework.Assert;
75
76 public class LifecycleTestBase {
77         private static Logger log = LoggerFactory.getLogger(LifecycleTestBase.class.getName());
78         @InjectMocks
79         protected final ServletContext servletContext = Mockito.mock(ServletContext.class);
80         protected IAuditingManager iAuditingManager = null;
81         protected UserBusinessLogic mockUserAdmin = Mockito.mock(UserBusinessLogic.class);
82         protected WebAppContextWrapper webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
83         protected WebApplicationContext webAppContext = Mockito.mock(WebApplicationContext.class);
84         protected ToscaElementLifecycleOperation toscaElementLifecycleOperation = Mockito.mock(ToscaElementLifecycleOperation.class);
85         protected ArtifactsBusinessLogic artifactsManager = Mockito.mock(ArtifactsBusinessLogic.class);;
86         protected User user = null;
87         protected Resource resourceResponse;
88         protected Service serviceResponse;
89         protected ConfigurationManager configurationManager = null;
90         protected ResponseFormatManager responseManager = null;
91         protected TitanDao titanDao = Mockito.mock(TitanDao.class);
92         protected ToscaOperationFacade toscaOperationFacade = Mockito.mock(ToscaOperationFacade.class);
93
94         public void setup() {
95
96                 ExternalConfiguration.setAppName("catalog-be");
97
98                 // Init Configuration
99                 String appConfigDir = "src/test/resources/config/catalog-be";
100                 ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
101                 configurationManager = new ConfigurationManager(configurationSource);
102
103                 // Auditing
104                 iAuditingManager = new AuditingMockManager("lll");
105
106                 // User data and management
107                 user = new User();
108                 user.setUserId("jh003");
109                 user.setFirstName("Jimmi");
110                 user.setLastName("Hendrix");
111                 user.setRole(Role.ADMIN.name());
112
113                 Either<User, ActionStatus> eitherGetUser = Either.left(user);
114                 when(mockUserAdmin.getUser("jh003", false)).thenReturn(eitherGetUser);
115
116                 // Servlet Context attributes
117                 when(servletContext.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).thenReturn(configurationManager);
118                 when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
119                 when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webAppContext);
120                 when(webAppContext.getBean(ToscaElementLifecycleOperation.class)).thenReturn(toscaElementLifecycleOperation);
121                 when(webAppContext.getBean(ArtifactsBusinessLogic.class)).thenReturn(artifactsManager);
122
123                 // Resource Operation mock methods
124                 // getCount
125
126                 // createResource
127                 resourceResponse = createResourceObject(true);
128                 Either<ToscaElement, StorageOperationStatus> eitherComponent = Either.left(ModelConverter.convertToToscaElement(resourceResponse));
129                 when(toscaElementLifecycleOperation.checkoutToscaElement(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(String.class)))
130                                 .thenAnswer(createAnswer(eitherComponent));
131                 
132                 when(toscaElementLifecycleOperation.checkinToscaELement(Mockito.any(LifecycleStateEnum.class), Mockito.any(String.class), Mockito.any(String.class), Mockito.any(String.class)))
133                                 .thenAnswer(createAnswer(eitherComponent));
134
135                 when(toscaElementLifecycleOperation.requestCertificationToscaElement(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(String.class)))
136                                 .thenAnswer(createAnswer(eitherComponent));
137
138                 Either<User, StorageOperationStatus> getOwnerResult = Either.left(user);
139                 when(toscaElementLifecycleOperation.getToscaElementOwner(Mockito.anyString())).thenReturn(getOwnerResult);
140
141                 responseManager = ResponseFormatManager.getInstance();
142
143         }
144
145         public static <T> Answer<T> createAnswer(final T value) {
146                 Answer<T> dummy = new Answer<T>() {
147                         @Override
148                         public T answer(InvocationOnMock invocation) throws Throwable {
149                                 return value;
150                         }
151
152                 };
153                 return dummy;
154         }
155
156         protected Resource createResourceObject(boolean afterCreate) {
157                 Resource resource = new Resource();
158                 resource.setName("MyResourceName");
159                 resource.addCategory("VoIP", "INfra");
160                 resource.setDescription("My short description");
161                 List<String> tgs = new ArrayList<String>();
162                 tgs.add("test");
163                 resource.setTags(tgs);
164                 List<String> template = new ArrayList<String>();
165                 template.add("Root");
166                 resource.setDerivedFrom(template);
167                 resource.setVendorName("Motorola");
168                 resource.setVendorRelease("1.0.0");
169                 resource.setContactId("yavivi");
170                 resource.setIcon("MyIcon.jpg");
171                 resource.setToscaType(ToscaElementTypeEnum.NodeType.getValue());
172                 
173                 return resource;
174         }
175         
176         protected Resource createResourceVFCMTObject() {
177                 ResourceMetadataDataDefinition rMetadataDataDefinition = new ResourceMetadataDataDefinition();
178                 rMetadataDataDefinition.setResourceType(ResourceTypeEnum.VFCMT);
179                 ComponentMetadataDefinition cMetadataDataDefinition = new ComponentMetadataDefinition(rMetadataDataDefinition) ;
180                 
181                 Resource resource = new Resource(cMetadataDataDefinition);
182                 resource.setName("MyResourceVFCMTName");
183                 resource.addCategory("VoIP", "INfra");
184                 resource.setDescription("My short description");
185                 List<String> tgs = new ArrayList<String>();
186                 tgs.add("test1");
187                 resource.setTags(tgs);
188                 List<String> template = new ArrayList<String>();
189                 template.add("Root");
190                 resource.setDerivedFrom(template);
191                 resource.setVendorName("Motorola");
192                 resource.setVendorRelease("1.0.0");
193                 resource.setContactId("yavivi");
194                 resource.setIcon("MyIcon.jpg");
195                 resource.setToscaType(ToscaElementTypeEnum.NodeType.getValue());
196                                 
197                 return resource;
198         }
199
200         protected Service createServiceObject(boolean b) {
201                 Service service = new Service();
202                 service.setName("MyServiceName");
203                 service.addCategory("VoIP", null);
204                 service.setDescription("My short description");
205                 List<String> tgs = new ArrayList<String>();
206                 tgs.add("test");
207                 service.setTags(tgs);
208                 List<String> template = new ArrayList<String>();
209                 template.add("Root");
210                 service.setContactId("aa0001");
211                 service.setIcon("MyIcon.jpg");
212
213                 return service;
214         }
215
216         protected void assertResponse(Either<? extends Component, ResponseFormat> createResponse, ActionStatus expectedStatus, String... variables) {
217                 ResponseFormat expectedResponse = responseManager.getResponseFormat(expectedStatus, variables);
218                 ResponseFormat actualResponse = createResponse.right().value();
219         }
220
221         protected void assertServiceResponse(Either<Service, ResponseFormat> createResponse, ActionStatus expectedStatus, String... variables) {
222                 ResponseFormat expectedResponse = responseManager.getResponseFormat(expectedStatus, variables);
223                 ResponseFormat actualResponse = createResponse.right().value();
224         }
225
226         protected static ArtifactDefinition getArtifactPlaceHolder(String resourceId, String logicalName) {
227                 ArtifactDefinition artifact = new ArtifactDefinition();
228
229                 artifact.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(resourceId, logicalName.toLowerCase()));
230                 artifact.setArtifactLabel(logicalName.toLowerCase());
231
232                 return artifact;
233         }
234 }