a4e7983f7ed28c6805e355be3fc94fcb01f9c775
[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 import org.springframework.test.context.junit4.SpringRunner;
39
40 import java.util.Map;
41
42 import static org.junit.Assert.assertEquals;
43 import static org.mockito.ArgumentMatchers.any;
44 import static org.mockito.ArgumentMatchers.eq;
45 import static org.mockito.Mockito.mock;
46 import static org.mockito.Mockito.verify;
47 import static org.mockito.Mockito.when;
48
49 @SpringBootTest
50 @RunWith(SpringRunner.class)
51 public class InstanceUpgradeServiceTest {
52
53     @InjectMocks
54     private InstanceUpgradeService tested;
55
56     @Mock
57     MulticloudClient instanceApi;
58
59     @Captor
60     ArgumentCaptor<MulticloudInstanceRequest> multicloudInstanceRequestCaptor;
61
62
63     @Test
64     public void shouldUpgradeInstanceSuccessfully() throws BadResponseException {
65         // given
66         String instanceId = "instanceId";
67         InstanceUpgradeRequest upgradeRequest = mock(InstanceUpgradeRequest.class);
68         String k8sRBProfileName = "k8sRBProfileName";
69         String modelInvariantId = "modelInvariantId";
70         String modelCustomizationId = "modelCustomizationId";
71         String cloudRegionId = "cloudRegionId";
72         Map<String, String> labels = mock(Map.class);
73         Map<String, String> overrideValues = mock(Map.class);
74         String response = "response";
75
76         // when
77         when(upgradeRequest.getK8sRBProfileName()).thenReturn(k8sRBProfileName);
78         when(upgradeRequest.getModelInvariantId()).thenReturn(modelInvariantId);
79         when(upgradeRequest.getModelCustomizationId()).thenReturn(modelCustomizationId);
80         when(upgradeRequest.getCloudRegionId()).thenReturn(cloudRegionId);
81         when(upgradeRequest.getLabels()).thenReturn(labels);
82         when(upgradeRequest.getOverrideValues()).thenReturn(overrideValues);
83         when(instanceApi.upgradeInstance(eq(instanceId), any(MulticloudInstanceRequest.class))).thenReturn(response);
84
85         // than
86         String actual = tested.upgradeInstance(instanceId, upgradeRequest);
87
88         assertEquals(actual, response);
89         verify(instanceApi).upgradeInstance(eq(instanceId), multicloudInstanceRequestCaptor.capture());
90         MulticloudInstanceRequest requestCaptureValue = multicloudInstanceRequestCaptor.getValue();
91         assertEquals(requestCaptureValue.getRbName(), modelInvariantId);
92         assertEquals(requestCaptureValue.getRbVersion(), modelCustomizationId);
93         assertEquals(requestCaptureValue.getProfileName(), k8sRBProfileName);
94         assertEquals(requestCaptureValue.getLabels(), labels);
95         assertEquals(requestCaptureValue.getOverrideValues(), overrideValues);
96     }
97
98     @Test(expected = RuntimeException.class)
99     public void shouldThrowRuntimeExceptionWhenProfileNameIsNull() throws BadResponseException {
100         // given
101         String instanceId = "instanceId";
102         InstanceUpgradeRequest upgradeRequest = mock(InstanceUpgradeRequest.class);
103
104         // when
105         when(upgradeRequest.getK8sRBProfileName()).thenReturn(null);
106
107         // than
108
109         tested.upgradeInstance(instanceId, upgradeRequest);
110     }
111
112 }