74d258d46bc900ea52e429674d174af3e4723f91
[so/adapters/so-cnf-adapter.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
6  * Modifications Copyright (C) 2021 Samsung Technologies Co.
7  * Modifications Copyright (C) 2021 Orange.
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22 package org.onap.so.adapters.cnf.service.upgrade;
23
24
25 import org.junit.Test;
26 import org.junit.runner.RunWith;
27 import org.mockito.ArgumentCaptor;
28 import org.mockito.Captor;
29 import org.mockito.InjectMocks;
30 import org.mockito.Mock;
31 import org.mockito.Mockito;
32 import org.mockito.junit.MockitoJUnitRunner;
33 import org.onap.so.adapters.cnf.client.MulticloudClient;
34 import org.onap.so.adapters.cnf.model.MulticloudInstanceRequest;
35 import org.onap.so.adapters.cnf.model.upgrade.InstanceUpgradeRequest;
36 import org.onap.so.client.exception.BadResponseException;
37 import org.springframework.boot.test.context.SpringBootTest;
38
39 import java.util.Map;
40
41 import static org.junit.Assert.assertEquals;
42 import static org.mockito.ArgumentMatchers.any;
43 import static org.mockito.ArgumentMatchers.eq;
44 import static org.mockito.Mockito.mock;
45 import static org.mockito.Mockito.verify;
46 import static org.mockito.Mockito.when;
47
48 @SpringBootTest
49 @RunWith(MockitoJUnitRunner.class)
50 public class InstanceUpgradeServiceTest {
51
52     @InjectMocks
53     private InstanceUpgradeService tested;
54
55     @Mock
56     MulticloudClient instanceApi;
57
58     @Captor
59     ArgumentCaptor<MulticloudInstanceRequest> multicloudInstanceRequestCaptor;
60
61
62     @Test
63     public void shouldUpgradeInstanceSuccessfully() throws BadResponseException {
64         // given
65         String instanceId = "instanceId";
66         InstanceUpgradeRequest upgradeRequest = mock(InstanceUpgradeRequest.class);
67         String k8sRBProfileName = "k8sRBProfileName";
68         String modelInvariantId = "modelInvariantId";
69         String modelCustomizationId = "modelCustomizationId";
70         String cloudRegionId = "cloudRegionId";
71         Map<String, String> labels = mock(Map.class);
72         Map<String, String> overrideValues = mock(Map.class);
73         String response = "response";
74
75         // when
76         when(upgradeRequest.getK8sRBProfileName()).thenReturn(k8sRBProfileName);
77         when(upgradeRequest.getModelInvariantId()).thenReturn(modelInvariantId);
78         when(upgradeRequest.getModelCustomizationId()).thenReturn(modelCustomizationId);
79         when(upgradeRequest.getCloudRegionId()).thenReturn(cloudRegionId);
80         when(upgradeRequest.getLabels()).thenReturn(labels);
81         when(upgradeRequest.getOverrideValues()).thenReturn(overrideValues);
82         when(instanceApi.upgradeInstance(eq(instanceId), any(MulticloudInstanceRequest.class))).thenReturn(response);
83
84         // than
85         String actual = tested.upgradeInstance(instanceId, upgradeRequest);
86
87         assertEquals(actual, response);
88         verify(instanceApi).upgradeInstance(eq(instanceId), multicloudInstanceRequestCaptor.capture());
89         MulticloudInstanceRequest requestCaptureValue = multicloudInstanceRequestCaptor.getValue();
90         assertEquals(requestCaptureValue.getRbName(), modelInvariantId);
91         assertEquals(requestCaptureValue.getRbVersion(), modelCustomizationId);
92         assertEquals(requestCaptureValue.getProfileName(), k8sRBProfileName);
93         assertEquals(requestCaptureValue.getLabels(), labels);
94         assertEquals(requestCaptureValue.getOverrideValues(), overrideValues);
95     }
96
97     @Test(expected = RuntimeException.class)
98     public void shouldThrowRuntimeExceptionWhenProfileNameIsNull() throws BadResponseException {
99         // given
100         String instanceId = "instanceId";
101         InstanceUpgradeRequest upgradeRequest = mock(InstanceUpgradeRequest.class);
102
103         // when
104         when(upgradeRequest.getK8sRBProfileName()).thenReturn(null);
105
106         // than
107
108         tested.upgradeInstance(instanceId, upgradeRequest);
109     }
110
111 }