f1bb344d93efcc40d0a3373133e8597370cbd63a
[sdc.git] /
1 /*
2
3  * Copyright (c) 2018 AT&T Intellectual Property.
4
5  *
6
7  * Licensed under the Apache License, Version 2.0 (the "License");
8
9  * you may not use this file except in compliance with the License.
10
11  * You may obtain a copy of the License at
12
13  *
14
15  *     http://www.apache.org/licenses/LICENSE-2.0
16
17  *
18
19  * Unless required by applicable law or agreed to in writing, software
20
21  * distributed under the License is distributed on an "AS IS" BASIS,
22
23  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
25  * See the License for the specific language governing permissions and
26
27  * limitations under the License.
28
29  */
30 package org.openecomp.sdc.be.components.impl;
31
32 import fj.data.Either;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.mockito.ArgumentMatchers;
36 import org.mockito.InjectMocks;
37 import org.mockito.Mock;
38 import org.mockito.junit.MockitoJUnitRunner;
39 import org.openecomp.sdc.be.components.validation.UserValidations;
40 import org.openecomp.sdc.be.config.Configuration;
41 import org.openecomp.sdc.be.config.ConfigurationManager;
42 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
43 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
44 import org.openecomp.sdc.be.datatypes.elements.AdditionalInfoParameterInfo;
45 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
46 import org.openecomp.sdc.be.impl.ComponentsUtils;
47 import org.openecomp.sdc.be.model.LifecycleStateEnum;
48 import org.openecomp.sdc.be.model.Resource;
49 import org.openecomp.sdc.be.model.AdditionalInformationDefinition;
50 import org.openecomp.sdc.be.model.User;
51 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
52 import org.openecomp.sdc.be.model.operations.api.IAdditionalInformationOperation;
53 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
54 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
55 import org.openecomp.sdc.common.api.ConfigurationSource;
56 import org.openecomp.sdc.common.impl.ExternalConfiguration;
57 import org.openecomp.sdc.common.impl.FSConfigurationSource;
58 import org.openecomp.sdc.exception.ResponseFormat;
59 import static org.assertj.core.api.Assertions.assertThat;
60
61 import java.util.ArrayList;
62 import java.util.List;
63
64 import static org.mockito.ArgumentMatchers.anyString;
65 import static org.mockito.ArgumentMatchers.eq;
66 import static org.mockito.Mockito.when;
67
68 @RunWith(MockitoJUnitRunner.class)
69 public class AdditionalInformationBusinessLogicTest {
70         @InjectMocks
71         private AdditionalInformationBusinessLogic additionalInformationBusinessLogic;
72         @Mock
73         private IGraphLockOperation graphLockOperation;
74         @Mock
75         private UserValidations userValidations;
76         @Mock
77         private ToscaOperationFacade toscaOperationFacade;
78         @Mock
79         private ComponentsUtils componentsUtils;
80         @Mock
81         private TitanDao titanDao;
82         @Mock
83         private IAdditionalInformationOperation additionalInformationOperation;
84
85         private AdditionalInformationBusinessLogic createTestSubject() {
86                 return new AdditionalInformationBusinessLogic();
87         }
88
89         static ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
90
91
92         @Test
93         public void testCreateAdditionalInformation() {
94                 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
95                 String resourceId = "resourceId";
96                 AdditionalInfoParameterInfo additionalInfoParameterInfo = new AdditionalInfoParameterInfo();
97                 additionalInfoParameterInfo.setKey("key");
98                 additionalInfoParameterInfo.setValue("value");
99                 AdditionalInformationDefinition additionalInformationDefinition = new AdditionalInformationDefinition();
100                 List<AdditionalInfoParameterInfo> parameters = new ArrayList<>();
101                 parameters.add(additionalInfoParameterInfo);
102                 additionalInformationDefinition.setParameters(parameters);
103                 User user = new User();
104                 String userId = "userId";
105                 user.setUserId(userId);
106                 ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
107                 configurationManager.setConfiguration(new Configuration());
108                 configurationManager.getConfiguration().setAdditionalInformationMaxNumberOfKeys(0);
109                 Resource component = new Resource();
110                 component.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
111                 component.setLastUpdaterUserId(userId);
112                 when(additionalInformationBusinessLogic.validateUserExists(anyString(), anyString(), eq(false))).thenReturn(user);
113                 when(toscaOperationFacade.getToscaElement(ArgumentMatchers.eq("resourceId"), ArgumentMatchers.eq(JsonParseFlagEnum.ParseMetadata))).thenReturn(Either.left(component));
114                 when(graphLockOperation.lockComponent(resourceId, NodeTypeEnum.Resource)).thenReturn(StorageOperationStatus.OK);
115                 when(additionalInformationOperation.getNumberOfAdditionalInformationParameters(NodeTypeEnum.Resource,resourceId,true)).thenReturn(Either.left(0));
116                 when(additionalInformationOperation.createAdditionalInformationParameter(NodeTypeEnum.Resource, resourceId, additionalInfoParameterInfo.getKey(),additionalInfoParameterInfo.getValue(), true)).thenReturn(Either.left(additionalInformationDefinition));
117
118                 result = additionalInformationBusinessLogic.createAdditionalInformation(NodeTypeEnum.Resource,resourceId,additionalInfoParameterInfo,userId);
119                 assertThat(result.isLeft());
120         }
121
122
123         @Test
124         public void testUpdateAdditionalInformation() throws Exception {
125                 AdditionalInformationBusinessLogic testSubject;
126                 NodeTypeEnum nodeType = null;
127                 String resourceId = "";
128                 AdditionalInfoParameterInfo additionalInfoParameterInfo = null;
129                 String additionalInformationUid = "";
130                 String userId = "";
131                 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
132
133                 // default test
134                 testSubject = createTestSubject();
135         }
136
137
138         @Test
139         public void testDeleteAdditionalInformation() throws Exception {
140                 AdditionalInformationBusinessLogic testSubject;
141                 NodeTypeEnum nodeType = null;
142                 String resourceId = "";
143                 AdditionalInfoParameterInfo additionalInfoParameterInfo = null;
144                 String additionalInformationUid = "";
145                 String userId = "";
146                 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
147
148                 // default test
149                 testSubject = createTestSubject();
150         }
151
152
153         @Test
154         public void testGetAdditionalInformation() throws Exception {
155                 AdditionalInformationBusinessLogic testSubject;
156                 NodeTypeEnum nodeType = null;
157                 String resourceId = "";
158                 AdditionalInfoParameterInfo additionalInfoParameterInfo = null;
159                 String additionalInformationUid = "";
160                 String userId = "";
161                 Either<AdditionalInfoParameterInfo, ResponseFormat> result;
162
163                 // default test
164                 testSubject = createTestSubject();
165         }
166
167
168         @Test
169         public void testGetAllAdditionalInformation() throws Exception {
170                 AdditionalInformationBusinessLogic testSubject;
171                 NodeTypeEnum nodeType = null;
172                 String resourceId = "";
173                 String additionalInformationUid = "";
174                 String userId = "";
175                 Either<AdditionalInformationDefinition, ResponseFormat> result;
176
177                 // default test
178                 testSubject = createTestSubject();
179         }
180 }