Merge from ECOMP's repository
[vid.git] / vid-app-common / src / test / java / org / onap / vid / job / command / InstanceGroupCommandTest.java
1 package org.onap.vid.job.command;
2
3 import com.google.common.collect.ImmutableMap;
4 import org.apache.commons.beanutils.BeanUtils;
5 import org.mockito.Answers;
6 import org.mockito.InjectMocks;
7 import org.mockito.Mock;
8 import org.mockito.MockitoAnnotations;
9 import org.onap.vid.job.impl.JobSharedData;
10 import org.onap.vid.model.RequestReferencesContainer;
11 import org.onap.vid.model.serviceInstantiation.InstanceGroup;
12 import org.onap.vid.mso.RestMsoImplementation;
13 import org.onap.vid.mso.model.ModelInfo;
14 import org.onap.vid.services.AsyncInstantiationBusinessLogic;
15 import org.springframework.http.HttpMethod;
16 import org.testng.annotations.BeforeMethod;
17 import org.testng.annotations.Test;
18
19 import java.util.Optional;
20 import java.util.Set;
21
22 import static java.util.function.Function.identity;
23 import static java.util.stream.Collectors.toMap;
24 import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.Mockito.*;
27
28 public class InstanceGroupCommandTest {
29
30     @Mock(answer = Answers.RETURNS_MOCKS)
31     RestMsoImplementation restMso;
32
33     @Mock InstanceGroup instanceGroupRequest;
34
35     @Mock(answer = Answers.RETURNS_MOCKS)
36     MsoResultHandlerService msoResultHandlerService;
37
38     @Mock WatchChildrenJobsBL watchChildrenJobsBL;
39
40     @Mock(answer = Answers.RETURNS_MOCKS)
41     AsyncInstantiationBusinessLogic asyncInstantiationBL;
42
43     @Mock InProgressStatusService inProgressStatusService;
44
45     @InjectMocks
46     private InstanceGroupCommand command;
47
48     @BeforeMethod
49     public void initMocks() {
50         command = null;
51         MockitoAnnotations.initMocks(this);
52     }
53
54     @Test
55     public void createMyself_callsMso() {
56         final ModelInfo serviceModelInfo = setRandomStrings(new ModelInfo());
57         final String serviceInstanceId = "service-instance-id";
58         final String userId = "ff3223";
59
60         command.init(new JobSharedData(
61                 null, userId, instanceGroupRequest
62         ), ImmutableMap.of(
63                 "resourceModelInfos", ImmutableMap.of("SERVICE_MODEL_INFO", serviceModelInfo),
64                 "resourceInstancesIds", ImmutableMap.of("SERVICE_INSTANCE_ID", serviceInstanceId)
65         ));
66
67         command.createMyself();
68
69         verify(asyncInstantiationBL).generateInstanceGroupInstantiationRequest(
70                 same(instanceGroupRequest), eq(serviceModelInfo), eq(serviceInstanceId), eq(userId));
71         verify(restMso, only()).restCall(eq(HttpMethod.POST), eq(RequestReferencesContainer.class), any(), any(), eq(Optional.empty()));
72
73     }
74
75     private ModelInfo setRandomStrings(ModelInfo object) {
76         try {
77             Set<String> fields = BeanUtils.describe(object).keySet();
78             BeanUtils.populate(object,
79                     fields.stream().collect(toMap(identity(), s -> randomAlphanumeric(4))));
80             return object;
81         } catch (Exception e) {
82             throw new RuntimeException(e);
83         }
84     }
85 }