From 54850b63ac75b8240561da80b82d172495098d4d Mon Sep 17 00:00:00 2001 From: jitendra007 Date: Mon, 17 Aug 2020 18:06:36 +0530 Subject: VTP API Enhancements: Support Profile Issue-ID: VNFSDK-533 Signed-off-by: jitendra007 Change-Id: I769c60e65d82d798a7b87f724624519d258240c5 --- .../org/onap/vtp/profile/VTPProfileResource.java | 4 +- .../onap/vtp/profile/VTPProfileResourceTest.java | 119 +++++++++++++++++++++ 2 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 vnfmarket-be/vnf-sdk-marketplace/src/test/java/org/onap/vtp/profile/VTPProfileResourceTest.java diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vtp/profile/VTPProfileResource.java b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vtp/profile/VTPProfileResource.java index 880bfefa..a5c601da 100644 --- a/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vtp/profile/VTPProfileResource.java +++ b/vnfmarket-be/vnf-sdk-marketplace/src/main/java/org/onap/vtp/profile/VTPProfileResource.java @@ -67,7 +67,7 @@ public class VTPProfileResource extends VTPResource { "--product", "open-cli", "profile-list", "--format", "json" })); - JsonObject results = this.makeRpcAndGetJson(args).getAsJsonObject(); + JsonArray results = this.makeRpcAndGetJson(args).getAsJsonArray(); VTPTestProfileList list = new VTPTestProfileList(); @@ -100,7 +100,7 @@ public class VTPProfileResource extends VTPResource { args.addAll(Arrays.asList(new String[] { "--product", "open-cli", "profile-show", "--profile", profileName, "--format", "json" })); - JsonObject results = this.makeRpcAndGetJson(args).getAsJsonObject(); + JsonArray results = this.makeRpcAndGetJson(args).getAsJsonArray(); VTPTestProfile profile = new VTPTestProfile(); profile.setName(profileName); diff --git a/vnfmarket-be/vnf-sdk-marketplace/src/test/java/org/onap/vtp/profile/VTPProfileResourceTest.java b/vnfmarket-be/vnf-sdk-marketplace/src/test/java/org/onap/vtp/profile/VTPProfileResourceTest.java new file mode 100644 index 00000000..662e6bb9 --- /dev/null +++ b/vnfmarket-be/vnf-sdk-marketplace/src/test/java/org/onap/vtp/profile/VTPProfileResourceTest.java @@ -0,0 +1,119 @@ +/** + * Copyright 2020 Huawei Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.vtp.profile; + +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import mockit.Expectations; +import mockit.Mock; +import mockit.MockUp; +import mockit.Mocked; +import org.junit.Before; +import org.junit.Test; +import org.onap.vtp.VTPResource; +import org.onap.vtp.error.VTPError; + +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.core.Response; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.List; +import org.eclipse.jetty.http.HttpStatus; + +import static org.junit.Assert.assertEquals; + + +public class VTPProfileResourceTest { + + VTPProfileResource vtpProfileResource; + @Before + public void setUp() { + vtpProfileResource=new VTPProfileResource(); + } + + private void mockVTPResource(String jsonValue){ + new MockUp() { + @Mock + protected JsonElement makeRpcAndGetJson(List args, int timeout) throws VTPError.VTPException, IOException { + JsonElement jsonNode = new JsonParser().parse(jsonValue); + return jsonNode; + } + }; + } + + private void mockGetInputStream(HttpServletRequest request) throws IOException { + new Expectations(){{ + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( + ("{\"name\":\"https\",\"properties\":[{\"testCaseName\":\"weather-report\"," + + " \"testSuiteName\":\"tutorial\", \"scenario\":\"learning\"," + + " \"inputParameterName\":\"zipcod\",\"value\":\"412\"}]}").getBytes()); + request.getInputStream(); + result = new ServletInputStream(){ + public int read() throws IOException { + return byteArrayInputStream.read(); + } + @Override + public boolean isFinished() { + return true; + } + @Override + public boolean isReady() { + return true; + } + @Override + public void setReadListener(ReadListener arg0) { + } + }; + }}; + } + + @Test + public void testListTestProfiles() throws IOException, VTPError.VTPException { + String jsonValue = "[{\"profile\":\"https\"}]"; + mockVTPResource(jsonValue); + assertEquals(HttpStatus.OK_200,vtpProfileResource.listTestProfiles().getStatus()); + } + + @Test + public void testGetTestProfile() throws IOException, VTPError.VTPException { + String jsonValue = "[{\"profile\":\"https\",\"parameter\":\"tutorial\"," + + "\"value\":\"value\",\"service\":\"service\",\"command\":\"command\"" + + ",\"product\":\"product\"}]"; + mockVTPResource(jsonValue); + assertEquals(HttpStatus.OK_200,vtpProfileResource.getTestProfile("https").getStatus()); + } + + @Test + public void testCreateProfile(@Mocked HttpServletRequest request) throws IOException, VTPError.VTPException { + mockGetInputStream(request); + mockVTPResource("[]"); + Response response= vtpProfileResource.createProfile(request); + assertEquals(HttpStatus.OK_200,response.getStatus()); + } + + @Test(expected = VTPError.VTPException.class) + public void testCreateProfile2(@Mocked HttpServletRequest request) throws IOException, VTPError.VTPException { + String jsonValue = "[{\"profile\":\"https\"}]"; + mockGetInputStream(request); + mockVTPResource(jsonValue); + vtpProfileResource.createProfile(request); + } + +} \ No newline at end of file -- cgit 1.2.3-korg