263b85bef684c570d87548973b69a6682d6f08eb
[appc.git] / appc-provider / appc-provider-bundle / src / test / java / org / onap / appc / provider / lcm / service / AbstractBaseUtilsTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Copyright (C) 2017 Amdocs
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  * 
21  * ============LICENSE_END=========================================================
22  */
23
24 package org.onap.appc.provider.lcm.service;
25
26 import org.junit.Assert;
27 import org.junit.Before;
28 import org.junit.Test;
29 import org.mockito.Mockito;
30 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.Action;
31 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.status.Status;
32 import org.onap.appc.domainmodel.lcm.ResponseContext;
33 import org.onap.appc.executor.objects.LCMCommandStatus;
34 import org.onap.appc.executor.objects.Params;
35 import org.onap.appc.requesthandler.objects.RequestHandlerOutput;
36
37 import java.text.ParseException;
38
39 import static org.mockito.Mockito.mock;
40 import static org.mockito.Mockito.spy;
41 import static org.mockito.Mockito.times;
42 import static org.mockito.Mockito.verify;
43
44 public class AbstractBaseUtilsTest {
45
46     private AbstractBaseUtilsTest.testAbc testAbstractBaseUtils;
47
48     class testAbc extends AbstractBaseUtils {
49         // no content needed
50     }
51
52     @Before
53     public void setUp() throws Exception {
54         testAbstractBaseUtils = spy(new AbstractBaseUtilsTest.testAbc());
55     }
56
57     private void validateStatusResult(Params params, LCMCommandStatus lcmCommandStatus, Status status) {
58         Assert.assertEquals(String.format("Should return proper code of %s", lcmCommandStatus.toString()),
59             Integer.valueOf(lcmCommandStatus.getResponseCode()), status.getCode());
60         Assert.assertEquals(String.format("Should return proper message of $s", lcmCommandStatus.toString()),
61             lcmCommandStatus.getFormattedMessage(params), status.getMessage());
62     }
63
64     @Test
65     public void testBuildStatusWithoutParams() throws Exception {
66         LCMCommandStatus lcmCommandStatus = LCMCommandStatus.ACCEPTED;
67         Status status = testAbstractBaseUtils.buildStatusWithoutParams(lcmCommandStatus);
68         validateStatusResult(null, lcmCommandStatus, status);
69     }
70
71     @Test
72     public void testBuildStatusForErrorMsg() throws Exception {
73         String key = "errorMsg";
74         String msg = "testing";
75         Params params = new Params().addParam(key, msg);
76         LCMCommandStatus lcmCommandStatus = LCMCommandStatus.INVALID_INPUT_PARAMETER;
77         Status status = testAbstractBaseUtils.buildStatusForErrorMsg(lcmCommandStatus, msg);
78         verify(testAbstractBaseUtils, times(1)).buildStatus(lcmCommandStatus, msg, key);
79         validateStatusResult(params, lcmCommandStatus, status);
80     }
81
82
83     @Test
84     public void testBuildStatusForVnfId() throws Exception {
85         String key = "vnfId";
86         String msg = "testing";
87         Params params = new Params().addParam(key, msg);
88         LCMCommandStatus lcmCommandStatus = LCMCommandStatus.VNF_NOT_FOUND;
89         Status status = testAbstractBaseUtils.buildStatusForVnfId(lcmCommandStatus, msg);
90         verify(testAbstractBaseUtils, times(1)).buildStatus(lcmCommandStatus, msg, key);
91         validateStatusResult(params, lcmCommandStatus, status);
92     }
93
94     @Test
95     public void testBuildStatusForParamName() throws Exception {
96         String key = "paramName";
97         String msg = "testing";
98         Params params = new Params().addParam(key, msg);
99         LCMCommandStatus lcmCommandStatus = LCMCommandStatus.MISSING_MANDATORY_PARAMETER;
100         Status status = testAbstractBaseUtils.buildStatusForParamName(lcmCommandStatus, msg);
101         verify(testAbstractBaseUtils, times(1)).buildStatus(lcmCommandStatus, msg, key);
102         validateStatusResult(params, lcmCommandStatus, status);
103     }
104
105     @Test
106     public void testBuildStatusForId() throws Exception {
107         String key = "id";
108         String msg = "testing";
109         Params params = new Params().addParam(key, msg);
110         LCMCommandStatus lcmCommandStatus = LCMCommandStatus.VSERVER_NOT_FOUND;
111         Status status = testAbstractBaseUtils.buildStatusForId(lcmCommandStatus, msg);
112         verify(testAbstractBaseUtils, times(1)).buildStatus(lcmCommandStatus, msg, key);
113         validateStatusResult(params, lcmCommandStatus, status);
114     }
115
116     @Test
117     public void testBuildStatus() throws Exception {
118         String key = "errorMsg";
119         String msg = "testing";
120         Params params = new Params().addParam(key, msg);
121         LCMCommandStatus lcmCommandStatus = LCMCommandStatus.UNEXPECTED_ERROR;
122         Status status = testAbstractBaseUtils.buildStatus(lcmCommandStatus, msg, key);
123         validateStatusResult(params, lcmCommandStatus, status);
124
125         key = "vnfId";
126         params = new Params().addParam(key, msg);
127         lcmCommandStatus = LCMCommandStatus.VNF_NOT_FOUND;
128         status = testAbstractBaseUtils.buildStatus(lcmCommandStatus, msg, key);
129         validateStatusResult(params, lcmCommandStatus, status);
130
131         key = "paramName";
132         params = new Params().addParam(key, msg);
133         lcmCommandStatus = LCMCommandStatus.MISSING_MANDATORY_PARAMETER;
134         status = testAbstractBaseUtils.buildStatus(lcmCommandStatus, msg, key);
135         validateStatusResult(params, lcmCommandStatus, status);
136     }
137
138     @Test
139     public void testBuildStatusWithParseException() throws Exception {
140         LCMCommandStatus lcmCommandStatus = LCMCommandStatus.REQUEST_PARSING_FAILED;
141         String key = "errorMsg";
142         String exceptionMsg = null;
143
144         ParseException parseException = new ParseException(exceptionMsg, 0);
145         Params params = new Params().addParam(key, parseException.toString());
146         Status status = testAbstractBaseUtils.buildStatusWithParseException(parseException);
147         validateStatusResult(params, lcmCommandStatus, status);
148
149         exceptionMsg = "testing message";
150         parseException = new ParseException(exceptionMsg, 0);
151         params = new Params().addParam(key, exceptionMsg);
152         status = testAbstractBaseUtils.buildStatusWithParseException(parseException);
153         validateStatusResult(params, lcmCommandStatus, status);
154     }
155
156     @Test
157     public void testBuildStatusWithDispatcherOutput() throws Exception {
158         RequestHandlerOutput mockOutput = mock(RequestHandlerOutput.class);
159
160         ResponseContext mockContext = mock(ResponseContext.class);
161         Mockito.doReturn(mockContext).when(mockOutput).getResponseContext();
162
163         org.onap.appc.domainmodel.lcm.Status mockStatus = mock(org.onap.appc.domainmodel.lcm.Status.class);
164         Mockito.doReturn(mockStatus).when(mockContext).getStatus();
165
166         Integer resultCode = new Integer(401);
167         String resultMsg = "testing result message";
168         Mockito.doReturn(resultCode).when(mockStatus).getCode();
169         Mockito.doReturn(resultMsg).when(mockStatus).getMessage();
170
171         Status status = testAbstractBaseUtils.buildStatusWithDispatcherOutput(mockOutput);
172         Assert.assertEquals("Should return result code", resultCode, status.getCode());
173         Assert.assertEquals("Should return result message", resultMsg, status.getMessage());
174     }
175
176     @Test
177     public void testGetRpcName() throws Exception {
178         Assert.assertEquals("Should return action-status",
179             "action-status", testAbstractBaseUtils.getRpcName(Action.ActionStatus));
180         Assert.assertEquals("Should return query",
181             "query", testAbstractBaseUtils.getRpcName(Action.Query));
182         Assert.assertEquals("Should return reboot",
183             "reboot", testAbstractBaseUtils.getRpcName(Action.Reboot));
184         Assert.assertEquals("Should return attach-volume",
185             "attach-volume", testAbstractBaseUtils.getRpcName(Action.AttachVolume));
186         Assert.assertEquals("Should return detach-volume",
187             "detach-volume", testAbstractBaseUtils.getRpcName(Action.DetachVolume));
188         Assert.assertEquals("Should return quiesce-traffic",
189             "quiesce-traffic", testAbstractBaseUtils.getRpcName(Action.QuiesceTraffic));
190         Assert.assertEquals("Should return resume-traffic",
191                 "resume-traffic", testAbstractBaseUtils.getRpcName(Action.ResumeTraffic));
192         Assert.assertEquals("Should return upgrade-pre-check",
193                 "upgrade-pre-check", testAbstractBaseUtils.getRpcName(Action.UpgradePreCheck));
194         Assert.assertEquals("Should return upgrade-post-check",
195                 "upgrade-post-check", testAbstractBaseUtils.getRpcName(Action.UpgradePostCheck));
196         Assert.assertEquals("Should return upgrade-software",
197                 "upgrade-software", testAbstractBaseUtils.getRpcName(Action.UpgradeSoftware));
198         Assert.assertEquals("Should return upgrade-backup",
199                 "upgrade-backup", testAbstractBaseUtils.getRpcName(Action.UpgradeBackup));
200         Assert.assertEquals("Should return upgrade-backout",
201                 "upgrade-backout", testAbstractBaseUtils.getRpcName(Action.UpgradeBackout));
202         Assert.assertEquals("Should return download-n-e-sw",
203                 "download-n-e-sw", testAbstractBaseUtils.getRpcName(Action.DownloadNESw));
204         Assert.assertEquals("Should return activate-n-e-sw",
205                 "activate-n-e-sw", testAbstractBaseUtils.getRpcName(Action.ActivateNESw));
206     }
207 }