diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/CommentsManager.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/CommentsManager.java index 6428f11ceb4..82beeca2c3e 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/CommentsManager.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/services/CommentsManager.java @@ -35,12 +35,11 @@ public interface CommentsManager { * To add a comment to a application * * @param comment comment of the application. - * @param uuid uuid of the application release - * @param tenantId tenant id of the application + * @param uuid uuid of the application release\ * @return {@link Comment} Comment added * @throws CommentManagementException Exceptions of the comment management. */ - Comment addComment(Comment comment, String uuid, int tenantId) throws CommentManagementException; + Comment addComment(Comment comment, String uuid) throws CommentManagementException; /** * To validate the pre-request of the comment diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/CommentsManagerImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/CommentsManagerImpl.java index 4a5ab8b1c9d..6f8b6a1fa64 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/CommentsManagerImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/CommentsManagerImpl.java @@ -56,11 +56,12 @@ public class CommentsManagerImpl implements CommentsManager { } @Override - public Comment addComment(Comment comment, String uuid, int tenantId) throws CommentManagementException { + public Comment addComment(Comment comment, String uuid) throws CommentManagementException { if (log.isDebugEnabled()) { log.debug("Request for comment is received for uuid" + uuid); } + int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true); comment.setCreatedAt(Timestamp.from(Instant.now())); try { ConnectionManagerUtil.beginDBTransaction(); @@ -140,7 +141,7 @@ public class CommentsManagerImpl implements CommentsManager { public Comment getComment(int commentId) throws CommentManagementException { PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true); - Comment comment = null; + Comment comment; if (log.isDebugEnabled()) { log.debug("Comment retrieval request is received for the comment id " + commentId); } @@ -214,7 +215,7 @@ public class CommentsManagerImpl implements CommentsManager { @Override public int getRatedUser(String uuid) throws ApplicationManagementException { - int ratedUsers = 0; + int ratedUsers; if (log.isDebugEnabled()) { log.debug("Get the rated users for the application release number" + uuid); } @@ -233,7 +234,7 @@ public class CommentsManagerImpl implements CommentsManager { @Override public int getStars(String uuid) throws ApplicationManagementException { - int stars = 0; + int stars; if (log.isDebugEnabled()) { log.debug("Get the average of rated stars for the application " + uuid); } @@ -255,7 +256,7 @@ public class CommentsManagerImpl implements CommentsManager { if (log.isDebugEnabled()) { log.debug("Stars are received for the application " + uuid); } - int newStars = 0; + int newStars; try { ConnectionManagerUtil.beginDBTransaction(); int ratedUsers = commentDAO.getRatedUser(uuid); diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/pom.xml b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/pom.xml index 1a7bbecce25..67ce79c8b8e 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/pom.xml +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/pom.xml @@ -157,6 +157,16 @@ org.wso2.carbon.devicemgt org.wso2.carbon.device.application.mgt.core provided + + + org.mockito + mockito-core + + + javassist + javassist + + org.wso2.carbon.devicemgt @@ -229,5 +239,15 @@ javax.ws.rs javax.ws.rs-api + + org.powermock + powermock-module-testng + test + + + org.powermock + powermock-api-mockito + test + \ No newline at end of file diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/CommentManagementAPI.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/CommentManagementAPI.java similarity index 99% rename from components/application-mgt/org.wso2.carbon.device.application.mgt.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/CommentManagementAPI.java rename to components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/CommentManagementAPI.java index 87a391758ad..8fda8cd31dc 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/CommentManagementAPI.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/CommentManagementAPI.java @@ -16,7 +16,7 @@ * under the License. * */ -package org.wso2.carbon.device.application.mgt.api.services; +package org.wso2.carbon.device.application.mgt.store.api.services; import io.swagger.annotations.ApiParam; import io.swagger.annotations.Api; @@ -30,7 +30,7 @@ import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.wso2.carbon.apimgt.annotations.api.Scope; import org.wso2.carbon.apimgt.annotations.api.Scopes; -import org.wso2.carbon.device.application.mgt.api.beans.ErrorResponse; +import org.wso2.carbon.device.application.mgt.publisher.api.beans.ErrorResponse; import org.wso2.carbon.device.application.mgt.common.Comment; import javax.validation.Valid; import javax.ws.rs.Path; diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/impl/CommentManagementAPIImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/impl/CommentManagementAPIImpl.java similarity index 79% rename from components/application-mgt/org.wso2.carbon.device.application.mgt.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/impl/CommentManagementAPIImpl.java rename to components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/impl/CommentManagementAPIImpl.java index be1a7cfe851..8f842d3e1a6 100644 --- a/components/application-mgt/org.wso2.carbon.device.application.mgt.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/impl/CommentManagementAPIImpl.java +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/main/java/org/wso2/carbon/device/application/mgt/store/api/services/impl/CommentManagementAPIImpl.java @@ -16,14 +16,13 @@ * under the License. * */ -package org.wso2.carbon.device.application.mgt.api.services.impl; +package org.wso2.carbon.device.application.mgt.store.api.services.impl; import io.swagger.annotations.ApiParam; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.context.PrivilegedCarbonContext; -import org.wso2.carbon.device.application.mgt.api.APIUtil; -import org.wso2.carbon.device.application.mgt.api.services.CommentManagementAPI; +import org.wso2.carbon.device.application.mgt.store.api.APIUtil; +import org.wso2.carbon.device.application.mgt.store.api.services.CommentManagementAPI; import org.wso2.carbon.device.application.mgt.common.Comment; import org.wso2.carbon.device.application.mgt.common.PaginationRequest; import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException; @@ -38,7 +37,6 @@ import javax.ws.rs.PUT; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.DELETE; -import javax.ws.rs.NotFoundException; import javax.ws.rs.core.Response; import java.util.ArrayList; import java.util.List; @@ -63,19 +61,17 @@ public class CommentManagementAPIImpl implements CommentManagementAPI { List comments = new ArrayList<>(); try { PaginationRequest request = new PaginationRequest(offSet, limit); - if (request.validatePaginationRequest(offSet, limit)) { + if (uuid == null) { + return Response.status(Response.Status.NOT_FOUND).entity("Comments not found").build(); + } else if (request.validatePaginationRequest(offSet, limit)) { commentsManager.getAllComments(request, uuid); return Response.status(Response.Status.OK).entity(comments).build(); } - } catch (NotFoundException e) { - log.error("Not found exception occurs to uuid " + uuid + " .", e); - return Response.status(Response.Status.NOT_FOUND).entity("Application with UUID " + uuid + " not found") - .build(); } catch (CommentManagementException e) { String msg = "Error occurred while retrieving comments."; log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR) - .entity(" Internal server error occurs").build(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg) + .build(); } return Response.status(Response.Status.OK).entity(comments).build(); } @@ -89,9 +85,8 @@ public class CommentManagementAPIImpl implements CommentManagementAPI { @PathParam("uuid") String uuid) { CommentsManager commentsManager = APIUtil.getCommentsManager(); - int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true); try { - Comment newComment = commentsManager.addComment(comment, uuid, tenantId); + Comment newComment = commentsManager.addComment(comment, uuid); if (comment != null) { return Response.status(Response.Status.CREATED).entity(newComment).build(); } else { @@ -103,7 +98,7 @@ public class CommentManagementAPIImpl implements CommentManagementAPI { String msg = "Error occurred while creating the comment"; log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR) - .entity("Internal server error occurs").build(); + .entity(msg).build(); } } @@ -132,7 +127,7 @@ public class CommentManagementAPIImpl implements CommentManagementAPI { String msg = "Error occurred while retrieving comments."; log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR) - .entity(" Internal server error occurs").build(); + .entity(msg).build(); } } @@ -144,15 +139,16 @@ public class CommentManagementAPIImpl implements CommentManagementAPI { CommentsManager commentsManager = APIUtil.getCommentsManager(); try { - commentsManager.deleteComment(commentId); + if (commentId == 0) { + return Response.status(Response.Status.NOT_FOUND).entity("Comment not found").build(); + } else { + commentsManager.deleteComment(commentId); + } } catch (CommentManagementException e) { String msg = "Error occurred while deleting the comment."; log.error(msg, e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR) - .entity("Internal server error occurs").build(); - } catch (NotFoundException e) { - log.error("Not found exception occurs to comment id " + commentId + " .", e); - return Response.status(Response.Status.NOT_FOUND).entity("Comment not found").build(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg) + .build(); } return Response.status(Response.Status.OK).entity("Comment is deleted successfully.").build(); } @@ -164,16 +160,17 @@ public class CommentManagementAPIImpl implements CommentManagementAPI { @PathParam("uuid") String uuid) { CommentsManager commentsManager = APIUtil.getCommentsManager(); - int Stars = 0; + int Stars; try { Stars = commentsManager.getStars(uuid); } catch (CommentManagementException e) { log.error("Comment Management Exception occurs", e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } catch (ApplicationManagementException e) { - log.error("Application Management Exception occurs", e); + String msg="Application Management Exception occurs"; + log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR) - .entity("Internal server error occurs").build(); + .entity(msg).build(); } return Response.status(Response.Status.OK).entity(Stars).build(); } @@ -185,15 +182,17 @@ public class CommentManagementAPIImpl implements CommentManagementAPI { @PathParam("uuid") String uuid) { CommentsManager commentsManager = APIUtil.getCommentsManager(); - int ratedUsers = 0; + int ratedUsers; try { ratedUsers = commentsManager.getRatedUser(uuid); } catch (CommentManagementException e) { - log.error("Comment Management Exception occurs", e); + String msg="Comment Management Exception occurs"; + log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR) - .entity("Internal server error occurs").build(); + .entity(msg).build(); } catch (ApplicationManagementException e) { - log.error("Application Management Exception occurs", e); + String msg="Application Management Exception occurs"; + log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR) .entity("Application with UUID" + uuid + " Internal server error occurs").build(); } @@ -208,10 +207,9 @@ public class CommentManagementAPIImpl implements CommentManagementAPI { @PathParam("uuid") String uuid) { CommentsManager commentsManager = APIUtil.getCommentsManager(); - int newStars = 0; + int newStars; try { newStars = commentsManager.updateStars(stars, uuid); - if (stars != 0) { return Response.status(Response.Status.CREATED).entity(newStars).build(); } else { @@ -220,9 +218,10 @@ public class CommentManagementAPIImpl implements CommentManagementAPI { return Response.status(Response.Status.BAD_REQUEST).build(); } } catch (ApplicationManagementException e) { - log.error("Application Management Exception occurs", e); + String msg="Application Management Exception occurs"; + log.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR) - .entity(" Internal server error occurs").build(); + .entity(msg).build(); } } } \ No newline at end of file diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/java/org/wso2/carbon/device/application/mgt/store/api/services/CommentManagementAPITest.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/java/org/wso2/carbon/device/application/mgt/store/api/services/CommentManagementAPITest.java new file mode 100644 index 00000000000..e48346c9ae7 --- /dev/null +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/java/org/wso2/carbon/device/application/mgt/store/api/services/CommentManagementAPITest.java @@ -0,0 +1,303 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you 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.wso2.carbon.device.application.mgt.store.api.services; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.mockito.Mockito; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor; +import org.testng.Assert; +import org.testng.IObjectFactory; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.ObjectFactory; +import org.testng.annotations.Test; +import org.wso2.carbon.device.application.mgt.common.Comment; +import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException; +import org.wso2.carbon.device.application.mgt.common.exception.CommentManagementException; +import org.wso2.carbon.device.application.mgt.common.services.CommentsManager; +import org.wso2.carbon.device.application.mgt.store.api.APIUtil; +import org.wso2.carbon.device.application.mgt.store.api.services.impl.CommentManagementAPIImpl; +import org.wso2.carbon.device.application.mgt.store.api.services.util.CommentMgtTestHelper; + +import javax.ws.rs.core.Response; + +import static org.mockito.MockitoAnnotations.initMocks; + +@PowerMockIgnore("javax.ws.rs.*") +@SuppressStaticInitializationFor({ + "org.wso2.carbon.device.application.mgt.api.APIUtil" }) +@PrepareForTest({ APIUtil.class, CommentsManager.class, + CommentManagementAPITest.class}) +public class CommentManagementAPITest { + private static final Log log = LogFactory.getLog(CommentManagementAPI.class); + + private CommentManagementAPI commentManagementAPI; + private CommentsManager commentsManager; + + @ObjectFactory + public IObjectFactory getObjectFactory() { + return new org.powermock.modules.testng.PowerMockObjectFactory(); + } + + @BeforeClass + void init() throws CommentManagementException { + + log.info("Initializing CommentManagementAPI tests"); + initMocks(this); + this.commentsManager = Mockito.mock(CommentsManager.class, Mockito.RETURNS_DEFAULTS); + this.commentManagementAPI = new CommentManagementAPIImpl(); + } + + @Test + public void testGetAllCommentsWithValidDetails() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.getAllComments("a", 1, 2); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode(), + "The response status should be 200."); + Mockito.reset(commentsManager); + } + + @Test + public void testGetAllCommentsInternalError() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Mockito.doThrow(new CommentManagementException()).when(this.commentsManager) + .getAllComments(Mockito.any(), Mockito.anyString()); + Response response = this.commentManagementAPI.getAllComments("a", 1, 4); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), + "The response status should be 500."); + Mockito.reset(commentsManager); + } + + @Test + public void testGetAllCommentsNotFoundError() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.getAllComments(null, 1, 3); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode(), + "The response status should be 404."); + Mockito.reset(commentsManager); + } + + @Test + public void testAddComments() throws Exception { + Comment comment = CommentMgtTestHelper.getDummyComment("a", "a"); + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.addComments(comment, "a"); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode(), + "The response status should be 201."); + Mockito.reset(commentsManager); + } + + @Test + public void testAddNullComment() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.addComments(null, "a"); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.BAD_REQUEST.getStatusCode(), + "The response status should be 400."); + Mockito.reset(commentsManager); + } + + @Test + public void testAddCommentsInternalError() throws Exception { + Comment comment = CommentMgtTestHelper.getDummyComment("a", "a"); + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Mockito.when(this.commentManagementAPI.addComments(Mockito.any(), Mockito.anyString())) + .thenThrow(new CommentManagementException()); + Response response = this.commentManagementAPI.addComments(comment, null); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), + "The response status should be 500."); + Mockito.reset(commentsManager); + } + + @Test + public void testUpdateComment() throws Exception { + Comment comment = CommentMgtTestHelper.getDummyComment("a", "a"); + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.updateComment(comment, 1); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode(), + "The response status should be 200."); + } + + @Test + public void testUpdateNullComment() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.updateComment(null, 1); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.BAD_REQUEST.getStatusCode(), + "The response status should be 400."); + } + + @Test + public void testUpdateCommentWhenNullCommentId() throws Exception { + Comment comment = CommentMgtTestHelper.getDummyComment("a", "a"); + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.updateComment(comment, 0); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode(), + "The response status should be 404."); + } + + @Test + public void testUpdateCommentInternalServerError() throws Exception { + Comment comment = CommentMgtTestHelper.getDummyComment("a", "a"); + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Mockito.doThrow(new CommentManagementException()).when(this.commentsManager).updateComment(comment, 9); + Response response = this.commentManagementAPI.updateComment(comment, 9); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), + "The response status should be 500."); + } + + @Test + public void testDeleteComment() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.deleteComment(1); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode(), + "The response status should be 200."); + } + + @Test + public void testDeleteCommentInternalError() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Mockito.when(this.commentManagementAPI.deleteComment(1)).thenThrow(new CommentManagementException()); + Response response = this.commentManagementAPI.deleteComment(1); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), + "The response status should be 500."); + } + + @Test + public void testDeleteCommentNotFoundError() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.deleteComment(0); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode(), + "The response status should be 404."); + } + + @Test + public void testGetStars() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.getStars("a"); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode(), + "The response status should be 200."); + Mockito.reset(commentsManager); + } + + @Test + public void testGetStarsCommentError() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Mockito.when(this.commentManagementAPI.getStars(Mockito.anyString())) + .thenThrow(new CommentManagementException()); + Response response = this.commentManagementAPI.getStars("a"); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), + "The response status should be 500."); + Mockito.reset(commentsManager); + } + + @Test + public void testGetStarsApplicationError() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Mockito.when(this.commentManagementAPI.getStars(Mockito.anyString())) + .thenThrow(new ApplicationManagementException()); + Response response = this.commentManagementAPI.getStars("a"); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), + "The response status should be 500."); + Mockito.reset(commentsManager); + } + + @Test + public void testGetRatedUser() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.getRatedUser("a"); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode(), + "The response status should be 200."); + Mockito.reset(commentsManager); + } + + @Test + public void testGetRatedUserCommentError() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Mockito.when(this.commentManagementAPI.getRatedUser(Mockito.anyString())) + .thenThrow(new CommentManagementException()); + Response response = this.commentManagementAPI.getRatedUser("a"); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), + "The response status should be 500."); + Mockito.reset(commentsManager); + } + + @Test + public void testGetRatedUserApplicationError() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Mockito.when(this.commentManagementAPI.getRatedUser(Mockito.anyString())) + .thenThrow(new ApplicationManagementException()); + Response response = this.commentManagementAPI.getRatedUser("a"); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), + "The response status should be 500."); + Mockito.reset(commentsManager); + } + + @Test + public void testUpdateStars() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.updateStars(3, "a"); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode(), + "The response status should be 201."); + Mockito.reset(commentsManager); + } + + @Test + public void testUpdateInvalidStars() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Response response = this.commentManagementAPI.updateStars(0, "a"); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.BAD_REQUEST.getStatusCode(), + "The response status should be 400."); + Mockito.reset(commentsManager); + } + + @Test + public void testUpdateStarsApplicationError() throws Exception { + PowerMockito.stub(PowerMockito.method(APIUtil.class, "getCommentsManager")).toReturn(this.commentsManager); + Mockito.doThrow(new ApplicationManagementException()).when(this.commentsManager) + .updateStars(Mockito.anyInt(), Mockito.anyString()); + Response response = this.commentManagementAPI.updateStars(3, "a"); + Assert.assertNotNull(response, "The response object is null."); + Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), + "The response status should be 500."); + Mockito.reset(commentsManager); + } +} \ No newline at end of file diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/java/org/wso2/carbon/device/application/mgt/store/api/services/util/CommentMgtTestHelper.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/java/org/wso2/carbon/device/application/mgt/store/api/services/util/CommentMgtTestHelper.java new file mode 100644 index 00000000000..836d2798aed --- /dev/null +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/java/org/wso2/carbon/device/application/mgt/store/api/services/util/CommentMgtTestHelper.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you 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.wso2.carbon.device.application.mgt.store.api.services.util; + +import org.wso2.carbon.device.application.mgt.common.Comment; + +/** + * Helper class for Comment Management API test cases. + */ + +public class CommentMgtTestHelper { + + private static final String COMMENT_TEXT = "Dummy Comment"; + private static final String CREATED_BY = "TEST_CREATED_BY"; + private static final String MODIFIED_BY = "TEST_MODIFIED_BY"; + private static final int PARENT_ID = 123; + private static final int COMMENT_ID = 1; + + /** + * Creates a Comment with given text and given uuid. + * If the text is null, the COMMENT_TEXT will be used as the Dummy Comment. + * + * @param commentText : Text of the Comment + * @return Comment + */ + public static Comment getDummyComment(String commentText, String uuid) { + Comment comment = new Comment(); + comment.setId(COMMENT_ID); + comment.setCreatedBy(CREATED_BY); + comment.setModifiedBy(MODIFIED_BY); + comment.setParent(PARENT_ID); + comment.setComment(commentText != null ? commentText : COMMENT_TEXT); + + return comment; + } +} + + diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/resources/log4j.properties b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/resources/log4j.properties new file mode 100644 index 00000000000..d2bd747bafb --- /dev/null +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/resources/log4j.properties @@ -0,0 +1,30 @@ +# Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. +# +# WSO2 Inc. licenses this file to you 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. +# +# +# This is the log4j configuration file used by WSO2 Carbon +# +# IMPORTANT : Please do not remove or change the names of any +# of the Appender defined here. The layout pattern & log file +# can be changed using the WSO2 Carbon Management Console, and those +# settings will override the settings in this file. +# +log4j.rootLogger=DEBUG, STD_OUT +# Redirect log messages to console +log4j.appender.STD_OUT=org.apache.log4j.ConsoleAppender +log4j.appender.STD_OUT.Target=System.out +log4j.appender.STD_OUT.layout=org.apache.log4j.PatternLayout +log4j.appender.STD_OUT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/resources/testng.xml b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/resources/testng.xml new file mode 100644 index 00000000000..ab33c9c4105 --- /dev/null +++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.store.api/src/test/resources/testng.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + +