3 * ============LICENSE_START=======================================================
5 * ================================================================================
6 * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.appc.provider.lcm.service;
25 import org.junit.Assert;
26 import org.junit.Before;
27 import org.junit.Test;
28 import org.junit.runner.RunWith;
29 import org.mockito.Mockito;
30 import org.mockito.internal.util.reflection.Whitebox;
31 import org.mockito.runners.MockitoJUnitRunner;
32 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.*;
33 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.action.identifiers.ActionIdentifiers;
34 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.CommonHeader;
35 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.status.Status;
36 import org.onap.appc.domainmodel.lcm.ResponseContext;
37 import org.onap.appc.executor.objects.LCMCommandStatus;
38 import org.onap.appc.requesthandler.objects.RequestHandlerOutput;
39 import org.onap.appc.requesthandler.objects.RequestHandlerInput;
41 import static org.mockito.Matchers.any;
42 import static org.mockito.Mockito.mock;
43 import static org.mockito.Mockito.spy;
44 import static org.mockito.Mockito.times;
45 import static org.mockito.Matchers.isNull;
47 @RunWith(MockitoJUnitRunner.class)
48 public class RebootServiceTest {
49 private final Action myAction = Action.Reboot;
50 private String PAYLOAD_STRING = "{\"A\":\"A-value\",\"B\":{\"C\":\"B.C-value\",\"D\":\"B.D-value\"}}";
51 private RebootInput mockInput = mock(RebootInput.class);
52 private CommonHeader mockCommonHeader = mock(CommonHeader.class);
53 private ActionIdentifiers mockAI = mock(ActionIdentifiers.class);
54 private Payload mockPayload = mock(Payload.class);
55 private AbstractBaseService abstractService= mock(AbstractBaseService.class);
56 //private Action action = mock(Action.class);
58 private RebootService rebootService;
60 public void setUp() throws Exception {
61 rebootService = spy(new RebootService());
65 public void testValidateMissingParameters() throws Exception {
66 rebootService.validate(mockInput);
67 Status status = (Status) Whitebox.getInternalState(rebootService, "status");
68 //testing missing parameters in the input
69 Assert.assertEquals("should return missing parameter",
70 Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()), status.getCode());
73 public void testValidateForInvalidAction() throws Exception {
75 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
76 Mockito.doReturn(mockPayload).when(mockInput).getPayload();
77 Mockito.doReturn(PAYLOAD_STRING).when(mockPayload).getValue();
78 ZULU zuluTimeStamp = new ZULU("2017-06-29T21:44:00.35Z");
79 Mockito.doReturn(zuluTimeStamp).when(mockCommonHeader).getTimestamp();
80 Mockito.doReturn("api ver").when(mockCommonHeader).getApiVer();
81 Mockito.doReturn("orignator Id").when(mockCommonHeader).getOriginatorId();
82 Mockito.doReturn("request Id").when(mockCommonHeader).getRequestId();
84 Mockito.doReturn(Action.AttachVolume).when(mockInput).getAction();
85 Mockito.doReturn(mockAI).when(mockInput).getActionIdentifiers();
86 Mockito.doReturn("vserverId").when(mockAI).getVserverId();
88 // test invalid action
89 rebootService.validate(mockInput);
90 Status status = (Status) Whitebox.getInternalState(rebootService, "status");
91 Assert.assertEquals("should return missing parameter",
92 Integer.valueOf(LCMCommandStatus.INVALID_INPUT_PARAMETER.getResponseCode()), status.getCode());
96 public void testValidateForMissingActionIdentifiers() throws Exception {
98 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
99 Mockito.doReturn(mockPayload).when(mockInput).getPayload();
100 Mockito.doReturn(PAYLOAD_STRING).when(mockPayload).getValue();
101 ZULU zuluTimeStamp = new ZULU("2017-06-29T21:44:00.35Z");
102 Mockito.doReturn(zuluTimeStamp).when(mockCommonHeader).getTimestamp();
103 Mockito.doReturn("api ver").when(mockCommonHeader).getApiVer();
104 Mockito.doReturn("orignator Id").when(mockCommonHeader).getOriginatorId();
105 Mockito.doReturn("request Id").when(mockCommonHeader).getRequestId();
107 Mockito.doReturn(Action.Reboot).when(mockInput).getAction();
108 //Mockito.doReturn(mockAI).when(mockInput).getActionIdentifiers();
109 Mockito.doReturn("vserverId").when(mockAI).getVserverId();
111 // test invalid action
112 rebootService.validate(mockInput);
113 Status status = (Status) Whitebox.getInternalState(rebootService, "status");
114 Assert.assertEquals("should return missing parameter",
115 Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()), status.getCode());
119 public void testValidateMissingOrIncorrectPayload() throws Exception {
120 PAYLOAD_STRING = "{\"A\":\"A-value\",\"B\":{\"C\":\"B.C-value\",\"D\":\"B.D-value\"},\"type\":\"HARD\"}";
122 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
123 ZULU zuluTimeStamp = new ZULU("2017-06-29T21:44:00.35Z");
124 Mockito.doReturn(zuluTimeStamp).when(mockCommonHeader).getTimestamp();
125 Mockito.doReturn("api ver").when(mockCommonHeader).getApiVer();
126 Mockito.doReturn("orignator Id").when(mockCommonHeader).getOriginatorId();
127 Mockito.doReturn("request Id").when(mockCommonHeader).getRequestId();
129 Mockito.doReturn(Action.Reboot).when(mockInput).getAction();
130 Mockito.doReturn(mockAI).when(mockInput).getActionIdentifiers();
131 Mockito.doReturn("vserverId").when(mockAI).getVserverId();
132 Mockito.doReturn("vnfId").when(mockAI).getVnfId();
134 //testing missing payload
135 rebootService.validate(mockInput);
136 Status status = (Status) Whitebox.getInternalState(rebootService, "status");
137 Assert.assertEquals("should return missing parameter",
138 Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()), status.getCode());
140 //testing payload with no value or empty
141 Mockito.doReturn(mockPayload).when(mockInput).getPayload();
142 rebootService.validate(mockInput);
143 status = (Status) Whitebox.getInternalState(rebootService, "status");
144 Assert.assertEquals("should return missing parameter",
145 Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()), status.getCode());
147 //Incorrect PayLoad leads to unexpected error during conversion to map
148 PAYLOAD_STRING = "{\"A\":\"A-value\"\"B\":{\"C\":\"B.C-value\",\"D\":\"B.D-value\"},\"type\":\"HARD\"}";
149 Mockito.doReturn(PAYLOAD_STRING).when(mockPayload).getValue();
150 rebootService.validate(mockInput);
151 status = (Status) Whitebox.getInternalState(rebootService, "status");
152 Assert.assertEquals("should return missing parameter",
153 Integer.valueOf(LCMCommandStatus.UNEXPECTED_ERROR.getResponseCode()), status.getCode());
157 public void testValidateMissingRebootType() throws Exception {
159 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
160 Mockito.doReturn(mockPayload).when(mockInput).getPayload();
161 Mockito.doReturn(PAYLOAD_STRING).when(mockPayload).getValue();
162 ZULU zuluTimeStamp = new ZULU("2017-06-29T21:44:00.35Z");
163 Mockito.doReturn(zuluTimeStamp).when(mockCommonHeader).getTimestamp();
164 Mockito.doReturn("api ver").when(mockCommonHeader).getApiVer();
165 Mockito.doReturn("orignator Id").when(mockCommonHeader).getOriginatorId();
166 Mockito.doReturn("request Id").when(mockCommonHeader).getRequestId();
168 Mockito.doReturn(Action.Reboot).when(mockInput).getAction();
169 Mockito.doReturn(mockAI).when(mockInput).getActionIdentifiers();
170 Mockito.doReturn("vserverId").when(mockAI).getVserverId();
171 Mockito.doReturn("vnfId").when(mockAI).getVnfId();
173 // testing missing reboot-type in the payload
174 rebootService.validate(mockInput);
175 Status status = (Status) Whitebox.getInternalState(rebootService, "status");
176 Assert.assertEquals("should return status null",
181 public void testValidateInvalidRebootType() throws Exception {
182 PAYLOAD_STRING = "{\"A\":\"A-value\",\"B\":{\"C\":\"B.C-value\",\"D\":\"B.D-value\"},\"type\":\"test\"}";
183 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
184 Mockito.doReturn(mockPayload).when(mockInput).getPayload();
185 Mockito.doReturn(PAYLOAD_STRING).when(mockPayload).getValue();
186 ZULU zuluTimeStamp = new ZULU("2017-06-29T21:44:00.35Z");
187 Mockito.doReturn(zuluTimeStamp).when(mockCommonHeader).getTimestamp();
188 Mockito.doReturn("api ver").when(mockCommonHeader).getApiVer();
189 Mockito.doReturn("orignator Id").when(mockCommonHeader).getOriginatorId();
190 Mockito.doReturn("request Id").when(mockCommonHeader).getRequestId();
192 Mockito.doReturn(Action.Reboot).when(mockInput).getAction();
193 Mockito.doReturn(mockAI).when(mockInput).getActionIdentifiers();
194 Mockito.doReturn("vserverId").when(mockAI).getVserverId();
195 Mockito.doReturn("vnfId").when(mockAI).getVnfId();
197 // test invalid reboot-type ex: pass "test" in this case
198 rebootService.validate(mockInput);
199 Status status = (Status) Whitebox.getInternalState(rebootService, "status");
200 Assert.assertEquals("should return missing parameter",
201 Integer.valueOf(LCMCommandStatus.INVALID_INPUT_PARAMETER.getResponseCode()), status.getCode());