From 94833e4a0cb9ed014116671de440fdac7527dc13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20St=C3=A4hr?= <software@mstaehr.net> Date: Thu, 14 Jun 2018 13:04:55 +0200 Subject: [PATCH] feat: adding removeUserFromChat-Endpoint test: adding unit tests for endpoints --- .../gf/interfaces/ICommunication.java | 6 +- .../service/CommunicationDummyService.java | 7 +- .../communication/view/CommunicationView.java | 36 +++++++++-- .../view/CommunicationViewTest.java | 64 +++++++++++++++++-- 4 files changed, 98 insertions(+), 15 deletions(-) diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java index 923f3597..f95b9c69 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java @@ -22,7 +22,7 @@ public interface ICommunication { List<ChatMessage> getChatHistory(String roomId); - boolean sendMessageToChat(Message message); + boolean sendMessageToChat(Message message, String roomId); /** * endpoint: https://rocket.chat/docs/developer-guides/rest-api/groups/create/ @@ -44,6 +44,8 @@ public interface ICommunication { */ boolean addUserToChatRoom(String roomId, User user); + boolean removeUserFromChatRoom(User user, String roomId); + /** * endpoint: https://rocket.chat/docs/developer-guides/rest-api/groups/settopic/ * @@ -79,6 +81,6 @@ public interface ICommunication { */ boolean registerUser(User user); - String getChatRoomLink(String userToken,String projectToken, String groupToken); + String getChatRoomLink(String userToken, String projectToken, String groupToken); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java index da54f55c..2a07f342 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java @@ -37,7 +37,7 @@ public class CommunicationDummyService implements ICommunication { } @Override - public boolean sendMessageToChat(Message message) { + public boolean sendMessageToChat(Message message, String roomId) { return true; } @@ -55,6 +55,11 @@ public class CommunicationDummyService implements ICommunication { return true; } + @Override + public boolean removeUserFromChatRoom(User user, String roomId) { + return true; + } + @Override public boolean setChatRoomTopic(String roomId, String topic) { return true; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/view/CommunicationView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/view/CommunicationView.java index 16e00c61..bc2c6ff9 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/view/CommunicationView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/view/CommunicationView.java @@ -62,19 +62,19 @@ public class CommunicationView { @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - @Path("/send") - public Response sendMessage(Message message) { + @Path("/send/{roomId}") + public Response sendMessage(Message message, @PathParam("roomId") String roomId) { if (isNull(message)) { log.trace("sendMessage message object was null"); return Response.status(Response.Status.BAD_REQUEST).entity("must provide message").build(); } - boolean wasSend = communicationService.sendMessageToChat(message); + boolean wasSend = communicationService.sendMessageToChat(message, roomId); Response response; if (wasSend) { - log.error("error while sending message for message: {}", message); + log.trace("response for sendMessage: {}", wasSend); response = Response.ok(wasSend).build(); } else { - log.trace("response for sendMessage: {}", wasSend); + log.error("error while sending message for message: {}", message); response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("error while sending message").build(); } return response; @@ -105,7 +105,31 @@ public class CommunicationView { return response; } - // TODO: remove user from chatroom + + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Path("/removeUser/{roomId}") + public Response removeUserFromChatRoom(User user, @PathParam("roomId") String roomId) { + if (isNull(user)) { + log.trace("removeUser user object was null"); + return Response.status(Response.Status.BAD_REQUEST).entity("must provide user").build(); + } + boolean wasRemoved = communicationService.removeUserFromChatRoom(user, roomId); + if (isNull(wasRemoved)) { + log.error("removeUserToChatRoom: chatRoom not found for roomId: {}, user: {}", roomId, user); + return Response.status(Response.Status.NOT_FOUND).build(); + } + Response response; + if (wasRemoved) { + log.trace("response for removeUser: {}", wasRemoved); + response = Response.ok(wasRemoved).build(); + } else { + log.error("error while adding user to chat room"); + response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("error while adding user to chatRoom").build(); + } + return response; + } @POST @Produces(MediaType.APPLICATION_JSON) diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/view/CommunicationViewTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/view/CommunicationViewTest.java index 726beabf..d9bbfc17 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/view/CommunicationViewTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/view/CommunicationViewTest.java @@ -6,6 +6,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import unipotsdam.gf.config.GFResourceConfig; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.modules.communication.model.Message; import unipotsdam.gf.modules.communication.model.chat.ChatRoom; import javax.ws.rs.client.Entity; @@ -25,6 +26,7 @@ import static org.junit.Assert.assertThat; @RunWith(ConcurrentRunner.class) public class CommunicationViewTest extends JerseyTest { + private final static String ENDPOINT = "chat/"; @Override protected Application configure() { @@ -36,7 +38,7 @@ public class CommunicationViewTest extends JerseyTest { @Test public void getChatRoomInformation() { - String path = "chat/info/"; + String path = ENDPOINT + "info/"; Response responseOk = target().path(path + "1").request().get(); assertThat(responseOk.getStatus(), is(OK.getStatusCode())); assertNotNull(responseOk.readEntity(ChatRoom.class)); @@ -47,7 +49,7 @@ public class CommunicationViewTest extends JerseyTest { @Test public void getChatHistory() { - String path = "chat/history/"; + String path = ENDPOINT + "history/"; Response responseOk = target().path(path + "1").request().get(); assertThat(responseOk.getStatus(), is(OK.getStatusCode())); assertNotNull(responseOk.readEntity(List.class)); @@ -58,19 +60,69 @@ public class CommunicationViewTest extends JerseyTest { @Test public void createChatRoom() { - String path = "chat/create"; + String path = ENDPOINT + "create"; Response responseOk = target().path(path).queryParam("name", "test").request().post(null); assertThat(responseOk.getStatus(), is(CREATED.getStatusCode())); assertNotNull(responseOk.readEntity(String.class)); ArrayList<User> users = new ArrayList<>(); users.add(new User("test", "test", "test", true)); - responseOk = target().path(path).queryParam("name", "test").request().post(Entity.json(users)); - assertThat(responseOk.getStatus(), is(CREATED.getStatusCode())); - assertNotNull(responseOk.readEntity(String.class)); + Response responseOk2 = target().path(path).queryParam("name", "test").request().post(Entity.json(users)); + assertThat(responseOk2.getStatus(), is(CREATED.getStatusCode())); + assertNotNull(responseOk2.readEntity(String.class)); Response responseBadRequest = target().path(path).request().post(Entity.json(users)); assertThat(responseBadRequest.getStatus(), is(BAD_REQUEST.getStatusCode())); } + @Test + public void sendMessage() { + String path = ENDPOINT + "send"; + Message message = new Message(); + message.setMessage("test"); + message.setRoomIdOrChannel("1"); + Response responseOk = target().path(path + "/1").request().post(Entity.json(message)); + assertThat(responseOk.getStatus(), is(OK.getStatusCode())); + assertNotNull(responseOk.readEntity(String.class)); + + Response responseBadRequest = target().path(path + "/1").request().post(Entity.json(null)); + assertThat(responseBadRequest.getStatus(), is(BAD_REQUEST.getStatusCode())); + } + + @Test + public void addUserToChatRoom() { + String fullPath = ENDPOINT + "addUser" + "/1"; + + User user = new User("test", "test", "test", true); + Response responseOk = target().path(fullPath).request().post(Entity.json(user)); + assertThat(responseOk.getStatus(), is(OK.getStatusCode())); + assertNotNull(responseOk.readEntity(String.class)); + + Response responseBadRequest = target().path(fullPath).request().post(Entity.json(null)); + assertThat(responseBadRequest.getStatus(), is(BAD_REQUEST.getStatusCode())); + } + + @Test + public void removeUserFromChatRoom() { + String fullPath = ENDPOINT + "removeUser" + "/1"; + + User user = new User("test2", "test2", "test", true); + Response responseOk = target().path(fullPath).request().post(Entity.json(user)); + assertThat(responseOk.getStatus(), is(OK.getStatusCode())); + assertNotNull(responseOk.readEntity(String.class)); + + Response responseBadRequest = target().path(fullPath).request().post(Entity.json(null)); + assertThat(responseBadRequest.getStatus(), is(BAD_REQUEST.getStatusCode())); + } + + @Test + public void setChatRoomTopic() { + String fullPath = ENDPOINT + "setTopic" + "/1"; + Response responseOk = target().path(fullPath).queryParam("topic", "test").request().post(null); + assertThat(responseOk.getStatus(), is(OK.getStatusCode())); + assertNotNull(responseOk.readEntity(String.class)); + + Response responseBadRequest = target().path(fullPath).request().post(Entity.json(null)); + assertThat(responseBadRequest.getStatus(), is(BAD_REQUEST.getStatusCode())); + } } -- GitLab