Catalog-be dead code removal
[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 fj.data.Either;
24 import org.junit.BeforeClass;
25 import org.mockito.InjectMocks;
26 import org.mockito.Mockito;
27 import org.mockito.invocation.InvocationOnMock;
28 import org.mockito.stubbing.Answer;
29 import org.openecomp.sdc.be.auditing.impl.AuditingManager;
30 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic;
31 import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
32 import org.openecomp.sdc.be.config.ConfigurationManager;
33 import org.openecomp.sdc.be.dao.api.ActionStatus;
34 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
35 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
36 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
37 import org.openecomp.sdc.be.impl.ComponentsUtils;
38 import org.openecomp.sdc.be.impl.WebAppContextWrapper;
39 import org.openecomp.sdc.be.model.ArtifactDefinition;
40 import org.openecomp.sdc.be.model.Component;
41 import org.openecomp.sdc.be.model.ComponentMetadataDefinition;
42 import org.openecomp.sdc.be.model.LifecycleStateEnum;
43 import org.openecomp.sdc.be.model.Resource;
44 import org.openecomp.sdc.be.model.Service;
45 import org.openecomp.sdc.be.model.User;
46 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
47 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElementTypeEnum;
48 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaElementLifecycleOperation;
49 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
50 import org.openecomp.sdc.be.model.jsontitan.utils.ModelConverter;
51 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
52 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
53 import org.openecomp.sdc.be.user.Role;
54 import org.openecomp.sdc.be.user.UserBusinessLogic;
55 import org.openecomp.sdc.common.api.ConfigurationSource;
56 import org.openecomp.sdc.common.api.Constants;
57 import org.openecomp.sdc.common.impl.ExternalConfiguration;
58 import org.openecomp.sdc.common.impl.FSConfigurationSource;
59 import org.openecomp.sdc.exception.ResponseFormat;
60 import org.slf4j.Logger;
61 import org.slf4j.LoggerFactory;
62 import org.springframework.web.context.WebApplicationContext;
63
64 import javax.servlet.ServletContext;
65 import java.util.ArrayList;
66 import java.util.List;
67
68 import static org.mockito.Mockito.when;
69
70 public class LifecycleTestBase {
71     private static final Logger log = LoggerFactory.getLogger(LifecycleTestBase.class);
72     @InjectMocks
73     protected final ServletContext servletContext = Mockito.mock(ServletContext.class);
74     protected UserBusinessLogic mockUserAdmin = Mockito.mock(UserBusinessLogic.class);
75     protected WebAppContextWrapper webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
76     protected WebApplicationContext webAppContext = Mockito.mock(WebApplicationContext.class);
77     protected ToscaElementLifecycleOperation toscaElementLifecycleOperation = Mockito.mock(ToscaElementLifecycleOperation.class);
78     protected ArtifactsBusinessLogic artifactsManager = Mockito.mock(ArtifactsBusinessLogic.class);;
79     protected User user = null;
80     protected Resource resourceResponse;
81     protected Service serviceResponse;
82     protected static ConfigurationManager configurationManager = null;
83     protected ResponseFormatManager responseManager = null;
84     protected TitanDao titanDao = Mockito.mock(TitanDao.class);
85     protected ToscaOperationFacade toscaOperationFacade = Mockito.mock(ToscaOperationFacade.class);
86     protected static ComponentsUtils componentsUtils;
87
88     @BeforeClass
89     public static void setupClass() {
90         ExternalConfiguration.setAppName("catalog-be");
91
92         // init Configuration
93         String appConfigDir = "src/test/resources/config/catalog-be";
94         ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
95         configurationManager = new ConfigurationManager(configurationSource);
96
97         componentsUtils = new ComponentsUtils(Mockito.mock(AuditingManager.class));
98     }
99
100     public void setup() {
101
102         // User data and management
103         user = new User();
104         user.setUserId("jh003");
105         user.setFirstName("Jimmi");
106         user.setLastName("Hendrix");
107         user.setRole(Role.ADMIN.name());
108
109         Either<User, ActionStatus> eitherGetUser = Either.left(user);
110         when(mockUserAdmin.getUser("jh003", false)).thenReturn(eitherGetUser);
111
112         // Servlet Context attributes
113         when(servletContext.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).thenReturn(configurationManager);
114         when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
115         when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webAppContext);
116         when(webAppContext.getBean(ToscaElementLifecycleOperation.class)).thenReturn(toscaElementLifecycleOperation);
117         when(webAppContext.getBean(ArtifactsBusinessLogic.class)).thenReturn(artifactsManager);
118
119         // createResource
120         resourceResponse = createResourceObject();
121         Either<ToscaElement, StorageOperationStatus> eitherComponent = Either.left(ModelConverter.convertToToscaElement(resourceResponse));
122         when(toscaElementLifecycleOperation.checkoutToscaElement(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(String.class)))
123                 .thenAnswer(createAnswer(eitherComponent));
124
125         when(toscaElementLifecycleOperation.checkinToscaELement(Mockito.any(LifecycleStateEnum.class), Mockito.any(String.class), Mockito.any(String.class), Mockito.any(String.class)))
126                 .thenAnswer(createAnswer(eitherComponent));
127
128         when(toscaElementLifecycleOperation.requestCertificationToscaElement(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(String.class)))
129                 .thenAnswer(createAnswer(eitherComponent));
130
131         Either<User, StorageOperationStatus> getOwnerResult = Either.left(user);
132         when(toscaElementLifecycleOperation.getToscaElementOwner(Mockito.anyString())).thenReturn(getOwnerResult);
133
134         Either<Component, StorageOperationStatus> eitherlatestDerived = Either.right(StorageOperationStatus.OK);
135         when(toscaOperationFacade.shouldUpgradeToLatestDerived(Mockito.any(Resource.class))).thenReturn(eitherlatestDerived);
136
137         responseManager = ResponseFormatManager.getInstance();
138
139     }
140
141     public static <T> Answer<T> createAnswer(final T value) {
142         Answer<T> dummy = new Answer<T>() {
143             @Override
144             public T answer(InvocationOnMock invocation) throws Throwable {
145                 return value;
146             }
147
148         };
149         return dummy;
150     }
151
152     protected Resource createResourceObject() {
153         Resource resource = new Resource();
154         resource.setUniqueId("uid");
155         resource.setName("MyResourceName");
156         resource.setUniqueId("uid");
157         resource.addCategory("VoIP", "INfra");
158         resource.setDescription("My short description");
159         List<String> tgs = new ArrayList<String>();
160         tgs.add("test");
161         resource.setTags(tgs);
162         List<String> template = new ArrayList<String>();
163         template.add("Root");
164         resource.setDerivedFrom(template);
165         resource.setVendorName("Motorola");
166         resource.setVendorRelease("1.0.0");
167         resource.setContactId("yavivi");
168         resource.setIcon("MyIcon.jpg");
169         resource.setToscaType(ToscaElementTypeEnum.NodeType.getValue());
170
171         return resource;
172     }
173
174     protected Resource createResourceVFCMTObject() {
175         ResourceMetadataDataDefinition rMetadataDataDefinition = new ResourceMetadataDataDefinition();
176         rMetadataDataDefinition.setResourceType(ResourceTypeEnum.VFCMT);
177         ComponentMetadataDefinition cMetadataDataDefinition = new ComponentMetadataDefinition(rMetadataDataDefinition) ;
178
179         Resource resource = new Resource(cMetadataDataDefinition);
180         resource.setUniqueId("rid");
181         resource.setName("MyResourceVFCMTName");
182         resource.addCategory("VoIP", "INfra");
183         resource.setDescription("My short description");
184         List<String> tgs = new ArrayList<String>();
185         tgs.add("test1");
186         resource.setTags(tgs);
187         List<String> template = new ArrayList<String>();
188         template.add("Root");
189         resource.setDerivedFrom(template);
190         resource.setVendorName("Motorola");
191         resource.setVendorRelease("1.0.0");
192         resource.setContactId("yavivi");
193         resource.setIcon("MyIcon.jpg");
194         resource.setToscaType(ToscaElementTypeEnum.NodeType.getValue());
195
196         return resource;
197     }
198
199     protected Service createServiceObject() {
200         Service service = new Service();
201         service.setName("MyServiceName");
202         service.setUniqueId("sid");
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 }