2  * ============LICENSE_START=======================================================
 
   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
 
  13  *      http://www.apache.org/licenses/LICENSE-2.0
 
  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.
 
  21  * ============LICENSE_END=========================================================
 
  24 package org.onap.appc.provider.lcm.service;
 
  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;
 
  37 import java.text.ParseException;
 
  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;
 
  44 public class AbstractBaseUtilsTest {
 
  46     private AbstractBaseUtilsTest.testAbc testAbstractBaseUtils;
 
  48     class testAbc extends AbstractBaseUtils {
 
  53     public void setUp() throws Exception {
 
  54         testAbstractBaseUtils = spy(new AbstractBaseUtilsTest.testAbc());
 
  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());
 
  65     public void testBuildStatusWithoutParams() throws Exception {
 
  66         LCMCommandStatus lcmCommandStatus = LCMCommandStatus.ACCEPTED;
 
  67         Status status = testAbstractBaseUtils.buildStatusWithoutParams(lcmCommandStatus);
 
  68         validateStatusResult(null, lcmCommandStatus, status);
 
  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);
 
  84     public void testBuildStatusForVnfId() throws Exception {
 
  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);
 
  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);
 
 106     public void testBuildStatusForId() throws Exception {
 
 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);
 
 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);
 
 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);
 
 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);
 
 139     public void testBuildStatusWithParseException() throws Exception {
 
 140         LCMCommandStatus lcmCommandStatus = LCMCommandStatus.REQUEST_PARSING_FAILED;
 
 141         String key = "errorMsg";
 
 142         String exceptionMsg = null;
 
 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);
 
 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);
 
 157     public void testBuildStatusWithDispatcherOutput() throws Exception {
 
 158         RequestHandlerOutput mockOutput = mock(RequestHandlerOutput.class);
 
 160         ResponseContext mockContext = mock(ResponseContext.class);
 
 161         Mockito.doReturn(mockContext).when(mockOutput).getResponseContext();
 
 163         org.onap.appc.domainmodel.lcm.Status mockStatus = mock(org.onap.appc.domainmodel.lcm.Status.class);
 
 164         Mockito.doReturn(mockStatus).when(mockContext).getStatus();
 
 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();
 
 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());
 
 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));