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