90a7e3f45e6069c8dc14cb6f7d47eda7b9c8b6ac
[appc.git] / appc-provider / appc-provider-bundle / src / test / java / org / onap / appc / provider / lcm / service / RebootServiceTest.java
1
2 /*-
3  * ============LICENSE_START=======================================================
4  * ONAP : APPC
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
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
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.
19  *
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.appc.provider.lcm.service;
24
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;
40
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;
46
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);
57
58     private RebootService rebootService;
59     @Before
60     public void setUp() throws Exception {
61         rebootService = spy(new RebootService());
62     }
63
64     @Test
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());
71     }
72     @Test
73     public void testValidateForInvalidAction() throws Exception {
74
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();
83
84         Mockito.doReturn(Action.AttachVolume).when(mockInput).getAction();
85         Mockito.doReturn(mockAI).when(mockInput).getActionIdentifiers();
86         Mockito.doReturn("vserverId").when(mockAI).getVserverId();
87
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());
93     }
94
95     @Test
96     public void testValidateForMissingActionIdentifiers() throws Exception {
97
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();
106
107         Mockito.doReturn(Action.Reboot).when(mockInput).getAction();
108         //Mockito.doReturn(mockAI).when(mockInput).getActionIdentifiers();
109         Mockito.doReturn("vserverId").when(mockAI).getVserverId();
110
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());
116     }
117
118     @Test
119     public void testValidateMissingOrIncorrectPayload() throws Exception {
120         PAYLOAD_STRING = "{\"A\":\"A-value\",\"B\":{\"C\":\"B.C-value\",\"D\":\"B.D-value\"},\"type\":\"HARD\"}";
121
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();
128
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();
133
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());
139
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());
146
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());
154     }
155
156     @Test
157     public void testValidateMissingRebootType() throws Exception {
158
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();
167
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();
172
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",
177                 null, status);
178     }
179
180     @Test
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();
191
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();
196
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());
202     }
203
204 }
205