2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
19 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
\r
20 * ============LICENSE_END=========================================================
\r
23 package org.onap.appc.provider.lcm.service;
\r
25 import org.junit.Assert;
\r
26 import org.junit.Before;
\r
27 import org.junit.Test;
\r
28 import org.junit.runner.RunWith;
\r
29 import org.mockito.Mockito;
\r
30 import org.mockito.internal.util.reflection.Whitebox;
\r
31 import org.mockito.runners.MockitoJUnitRunner;
\r
32 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.*;
\r
33 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.action.identifiers.ActionIdentifiers;
\r
34 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.CommonHeader;
\r
35 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.status.Status;
\r
36 import org.onap.appc.domainmodel.lcm.ResponseContext;
\r
37 import org.onap.appc.executor.objects.LCMCommandStatus;
\r
38 import org.onap.appc.requesthandler.objects.RequestHandlerOutput;
\r
39 import org.onap.appc.requesthandler.objects.RequestHandlerInput;
\r
41 import static org.mockito.Matchers.any;
\r
42 import static org.mockito.Mockito.mock;
\r
43 import static org.mockito.Mockito.spy;
\r
44 import static org.mockito.Mockito.times;
\r
46 @RunWith(MockitoJUnitRunner.class)
\r
47 public class LicenseManagementServiceTest {
\r
48 private final Action myAction = Action.LicenseManagement;
\r
49 private final String PAYLOAD_STRING = "{\"A\":\"A-value\",\"B\":{\"C\":\"B.C-value\",\"D\":\"B.D-value\"}}";
\r
50 private LicenseManagementInput mockInput = mock(LicenseManagementInput.class);
\r
51 private CommonHeader mockCommonHeader = mock(CommonHeader.class);
\r
52 private ActionIdentifiers mockAI = mock(ActionIdentifiers.class);
\r
53 private Payload mockPayload = mock(Payload.class);
\r
55 private LicenseManagementService licenseManagementAction;
\r
57 public void setUp() throws Exception {
\r
58 licenseManagementAction = spy(new LicenseManagementService());
\r
62 public void testProcess() throws Exception {
\r
63 // test error occurs in validation
\r
64 LicenseManagementOutputBuilder outputBuilder = licenseManagementAction.process(mockInput);
\r
65 Mockito.verify(licenseManagementAction, times(0)).proceedAction(any(),any(),any());
\r
66 Assert.assertTrue("Should not have commonHeader as we did not mock it",outputBuilder.getCommonHeader() == null);
\r
67 Assert.assertEquals("should return missing parameter status",
\r
68 Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()),
\r
69 outputBuilder.getStatus().getCode());
\r
71 // make validation pass
\r
72 Mockito.doReturn(mockCommonHeader).when(mockInput).getCommonHeader();
\r
73 Mockito.doReturn(mockPayload).when(mockInput).getPayload();
\r
74 Mockito.doReturn(PAYLOAD_STRING).when(mockPayload).getValue();
\r
75 // to make validation pass
\r
76 ZULU zuluTimeStamp = new ZULU("2017-06-29T21:44:00.35Z");
\r
77 Mockito.doReturn(zuluTimeStamp).when(mockCommonHeader).getTimestamp();
\r
78 Mockito.doReturn("api ver").when(mockCommonHeader).getApiVer();
\r
79 Mockito.doReturn("orignator Id").when(mockCommonHeader).getOriginatorId();
\r
80 Mockito.doReturn("request Id").when(mockCommonHeader).getRequestId();
\r
82 Mockito.doReturn(myAction).when(mockInput).getAction();
\r
83 Mockito.doReturn(mockAI).when(mockInput).getActionIdentifiers();
\r
84 Mockito.doReturn("vnfId").when(mockAI).getVnfId();
\r
86 // test processAction return without error
\r
87 RequestExecutor mockExecutor = mock(RequestExecutor.class);
\r
88 // whenNew(RequestExecutor.class).withNoArguments().thenReturn(mockExecutor);
\r
90 RequestHandlerOutput mockOutput = mock(RequestHandlerOutput.class);
\r
91 Mockito.doReturn(mockOutput).when(mockExecutor).executeRequest(any());
\r
93 ResponseContext mockResponseContext = mock(ResponseContext.class);
\r
94 Mockito.doReturn(mockResponseContext).when(mockOutput).getResponseContext();
\r
96 org.onap.appc.domainmodel.lcm.Status mockStatus = mock(org.onap.appc.domainmodel.lcm.Status.class);
\r
97 Integer successCode = Integer.valueOf(LCMCommandStatus.SUCCESS.getResponseCode());
\r
98 Mockito.doReturn(successCode).when(mockStatus).getCode();
\r
99 Mockito.doReturn(mockStatus).when(mockResponseContext).getStatus();
\r
100 RequestHandlerInput requestHandlerInputInput = mock(RequestHandlerInput.class);
\r
101 AbstractBaseService abstractBaseService = mock(AbstractBaseService.class);
\r
102 Mockito.when(abstractBaseService.executeAction(requestHandlerInputInput)).thenReturn(mockOutput);
\r
104 outputBuilder = licenseManagementAction.process(mockInput);
\r
105 }catch(Exception e){
\r
106 Assert.assertTrue(true);
\r
108 Assert.assertTrue("Should have commonHeader",outputBuilder.getCommonHeader() == null);
\r
109 Assert.assertEquals("should return success status", new Integer(302), outputBuilder.getStatus().getCode());
\r
113 public void testValidate() throws Exception {
\r
114 licenseManagementAction.validate(mockCommonHeader, Action.LicenseManagement, mockAI,mockPayload);
\r
115 Status status = (Status) Whitebox.getInternalState(licenseManagementAction, "status");
\r
116 Assert.assertEquals("should return missing parameter",
\r
117 Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()), status.getCode());
\r
118 Mockito.verify(licenseManagementAction, times(0)).buildStatusForParamName(any(), any());
\r
119 Mockito.verify(licenseManagementAction, times(0)).buildStatusForErrorMsg(any(), any());
\r
121 ZULU mockTimeStamp = mock(ZULU.class);
\r
122 Mockito.doReturn(mockTimeStamp).when(mockCommonHeader).getTimestamp();
\r
123 Mockito.doReturn("api ver").when(mockCommonHeader).getApiVer();
\r
124 Mockito.doReturn("orignator Id").when(mockCommonHeader).getOriginatorId();
\r
125 Mockito.doReturn("request Id").when(mockCommonHeader).getRequestId();
\r
127 // test empty action
\r
128 licenseManagementAction.validate(mockCommonHeader, Action.LicenseManagement, mockAI,mockPayload);
\r
129 status = (Status) Whitebox.getInternalState(licenseManagementAction, "status");
\r
130 Assert.assertEquals("Should return missing parameter for action",
\r
131 Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()), status.getCode());
\r
133 // test empty ActionIdentifier
\r
134 licenseManagementAction.validate(mockCommonHeader, Action.LicenseManagement, mockAI,mockPayload);
\r
135 status = (Status) Whitebox.getInternalState(licenseManagementAction, "status");
\r
136 Assert.assertEquals("should return missing parameter",
\r
137 Integer.valueOf(LCMCommandStatus.MISSING_MANDATORY_PARAMETER.getResponseCode()), status.getCode());
\r
139 // test Invalid VNF_ID
\r
140 Mockito.doReturn("").when(mockAI).getVnfId();
\r
141 licenseManagementAction.validate(mockCommonHeader, Action.LicenseManagement, mockAI,mockPayload);
\r
142 status = (Status) Whitebox.getInternalState(licenseManagementAction, "status");
\r
143 Assert.assertEquals("should return invalid parameter",
\r
144 Integer.valueOf(LCMCommandStatus.INVALID_INPUT_PARAMETER.getResponseCode()), status.getCode());
\r
146 // test null payload
\r
147 Mockito.doReturn("vnfId").when(mockAI).getVnfId();
\r
148 licenseManagementAction.validate(mockCommonHeader, Action.LicenseManagement, mockAI, null);
\r
149 Mockito.verify(licenseManagementAction, times(1)).validateExcludedActIds(any(), any());
\r
150 status = (Status) Whitebox.getInternalState(licenseManagementAction, "status");
\r
151 Assert.assertTrue("Should skip Payload",true);
\r
153 // test empty payload
\r
155 Mockito.doReturn("").when(mockPayload).getValue();
\r
156 licenseManagementAction.validate(mockCommonHeader, Action.LicenseManagement, mockAI, mockPayload);
\r
157 status = (Status) Whitebox.getInternalState(licenseManagementAction, "status");
\r
158 Assert.assertTrue("Should skip Payload",true);
\r
160 // test space payload
\r
161 Mockito.doReturn(" ").when(mockPayload).getValue();
\r
162 licenseManagementAction.validate(mockCommonHeader, Action.LicenseManagement, mockAI, mockPayload);
\r
163 status = (Status) Whitebox.getInternalState(licenseManagementAction, "status");
\r
164 Assert.assertTrue("Should skip Payload",true);
\r