diff --git a/groupChat/GroupChatDAO.txt b/groupChat/GroupChatDAO.txt
deleted file mode 100644
index 91f62ea849e22f154908fafed49504853166b9df..0000000000000000000000000000000000000000
--- a/groupChat/GroupChatDAO.txt
+++ /dev/null
@@ -1,222 +0,0 @@
-package dao;
-
-import data.GroupChat;
-import data.Message;
-import data.User;
-import java.sql.*;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.TimeZone;
-
-import static dao.Database.close;
-
-
-/**
- * Data access object for GroupChat
- */
-public class GroupChatDAO {
-
-    /**
-     * Add a new GroupChat
-     * @param groupChat GroupChat to be added
-     * @return GroupChat, empty GroupChat object if unsuccessful
-     */
-
-
-    public GroupChat addGroupChat(GroupChat groupChat){
-        PreparedStatement preparedStatement = null;
-        Connection connection = null;
-        ResultSet resultSet = null;
-        try{
-            connection = Database.instance().getConnection();
-            preparedStatement = connection.prepareStatement("INSERT INTO groupChat (groupChatName) VALUES (?)", Statement.RETURN_GENERATED_KEYS);
-            preparedStatement.setString(1, groupChat.getGroupChatName());
-
-            int result = preparedStatement.executeUpdate();
-
-            if(result == 1){
-                resultSet = preparedStatement.getGeneratedKeys();
-                if(resultSet.next()){
-                    int groupChatId = resultSet.getInt(1);
-                    groupChat.setGroupChatId(groupChatId);
-
-                    ArrayList<User> users = groupChat.getUserList();
-                    preparedStatement = connection.prepareStatement("INSERT INTO user_groupChat (userId, groupChatId) VALUES (?, ?) ");
-                    for(User user:users){
-                        preparedStatement.setInt(1, user.getUserId());
-                        preparedStatement.setInt(2, groupChatId);
-                        preparedStatement.executeUpdate();
-                    }
-                    return groupChat;
-                }
-            }
-
-        }catch (SQLException e){
-            e.printStackTrace();
-        }finally{
-            close(connection, preparedStatement, resultSet);
-        }
-        return new GroupChat();
-    }
-
-    /**
-     * Get a GroupChat, with given groupChatId
-     * @param groupChatId groupChatId as int
-     * @return requested GroupChat if found, empty GroupChat object if not found
-     */
-
-
-    public GroupChat getGroupChat(int groupChatId){
-        PreparedStatement preparedStatement = null;
-        Connection connection = null;
-        ResultSet resultSet = null;
-        GroupChat groupChat = new GroupChat();
-        try{
-            connection = Database.instance().getConnection();
-            preparedStatement = connection.prepareStatement("SELECT * FROM groupChat WHERE groupChatId = ?");
-            preparedStatement.setInt(1, groupChatId);
-            resultSet = preparedStatement.executeQuery();
-            while(resultSet.next()) {
-                groupChat.setGroupChatId(groupChatId);
-                groupChat.setGroupChatName(resultSet.getString("groupChatName"));
-            }
-        }catch(SQLException e){
-            e.printStackTrace();
-        }finally{
-            close(connection, preparedStatement, resultSet);
-        }
-        return groupChat;
-    }
-
-
-
-    /**
-     * Get all GroupChats for user with given userId
-     * @param userId int userId of the user
-     * @return ArrayList of GroupChats
-     */
-
-
-    public ArrayList<GroupChat> getGroupChatByUserId(int userId){
-        ArrayList<GroupChat> groupChats = new ArrayList<>();
-        PreparedStatement preparedStatement = null;
-        Connection connection = null;
-        ResultSet resultSet = null;
-        try{
-            connection = Database.instance().getConnection();
-            preparedStatement = connection.prepareStatement("SELECT * FROM groupChat WHERE groupChatId IN (SELECT groupChatId FROM user_groupChat WHERE userId = ?)");
-            preparedStatement.setInt(1, userId);
-            resultSet = preparedStatement.executeQuery();
-            GroupChat groupChat;
-            while(resultSet.next()){
-                groupChat = new GroupChat();
-                groupChat.setGroupChatId(resultSet.getInt("groupChatId"));
-                groupChat.setGroupChatName(resultSet.getString("groupChatName"));
-                groupChats.add(groupChat);
-            }
-            return groupChats;
-        }catch (SQLException e){
-            e.printStackTrace();
-        }finally{
-            close(connection, preparedStatement, resultSet);
-        }
-        return groupChats;
-    }
-
-    /**
-     * Get all messages for a GroupChat
-     * @param groupChatId groupChatId as int
-     * @return ArrayList of Messages
-     */
-
-
-    public ArrayList<Message> getGroupChatMessages(int groupChatId){
-        ArrayList<Message> messages = new ArrayList<>();
-        PreparedStatement preparedStatement = null;
-        Connection connection = null;
-        ResultSet resultSet = null;
-        try{
-            connection = Database.instance().getConnection();
-            preparedStatement = connection.prepareStatement("SELECT * FROM message WHERE groupChatId = ?");
-            preparedStatement.setInt(1, groupChatId);
-            resultSet = preparedStatement.executeQuery();
-
-            Message message;
-            while(resultSet.next()){
-                message = new Message();
-                message.setMessageId(resultSet.getInt("messageId"));
-                message.setUserId1(resultSet.getInt("userId1"));
-                Calendar cal = Calendar.getInstance();
-                cal.setTimeZone(TimeZone.getTimeZone("UTC"));
-                message.setTimestamp(resultSet.getTimestamp("timestamp",cal));
-                message.setMessageContent(resultSet.getString("messageContent"));
-                message.setGroupChatId(resultSet.getInt("groupChatId"));
-                messages.add(message);
-            }
-        }catch (SQLException e){
-            e.printStackTrace();
-        }finally {
-            close(connection, preparedStatement, resultSet);
-        }
-        return messages;
-    }
-
-    /**
-     * Adds a Message to a GroupChat
-     * @param groupChatId groupChatId as int
-     * @param message Message object to be added to GroupChat
-     * @return The message that was added
-     */
-
-    public Message addMessage(int groupChatId, Message message){
-        PreparedStatement preparedStatement = null;
-        Connection connection = null;
-        try{
-            connection = Database.instance().getConnection();
-            preparedStatement = connection.prepareStatement("INSERT INTO message (userId1, timestamp, messageContent, groupChatId) VALUES (?, NOW(), ?, ?)");
-            preparedStatement.setInt(1, message.getUserId1());
-            preparedStatement.setString(2, message.getMessageContent());
-            preparedStatement.setInt(3, groupChatId);
-
-            preparedStatement.executeUpdate();
-        }catch (SQLException e){
-            e.printStackTrace();
-        }finally{
-            close(connection, preparedStatement, null);
-        }
-        return message;
-    }
-
-    /**
-     * Get all users in a GroupChat
-     * @param groupChatId groupChatId as int
-     * @return ArrayList of Users the GroupChat
-     */
-
-
-    public ArrayList<User> getGroupChatUsers(int groupChatId){
-        ArrayList<User> users = new ArrayList<>();
-        PreparedStatement preparedStatement = null;
-        ResultSet resultSet = null;
-        Connection connection = null;
-        try{
-            connection = Database.instance().getConnection();
-            preparedStatement = connection.prepareStatement("SELECT * FROM user WHERE user.userId IN (SELECT userId FROM user_groupChat WHERE groupChatId = ?)");
-            preparedStatement.setInt(1, groupChatId);
-            resultSet = preparedStatement.executeQuery();
-
-            User user;
-            while(resultSet.next()){
-                user = new User();
-                user.setUserId(resultSet.getInt("userId"));
-                user.setUsername(resultSet.getString("username"));
-                users.add(user);
-            }
-        }catch(SQLException e){
-            e.printStackTrace();
-        }finally{
-            close(connection, preparedStatement, resultSet);
-        }
-        return users;
-    }
-}
diff --git a/pom.xml b/pom.xml
index 5961d8e59a59f02464e6668678a5b08864899e77..85dee391011400d6d8ced5fe8961a1d9c6685c4d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -107,6 +107,16 @@
             <artifactId>json-simple</artifactId>
             <version>1.1.1</version>
         </dependency>
+        <dependency>
+            <groupId>org.glassfish.jersey.test-framework</groupId>
+            <artifactId>jersey-test-framework-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
     <properties>
         <jersey.version>2.26</jersey.version>
diff --git a/src/main/java/dao/GroupChatDAO.java b/src/main/java/dao/GroupChatDAO.java
index f2c5f339109a312ab30e990f0d6e3ddb4ae71346..91f62ea849e22f154908fafed49504853166b9df 100644
--- a/src/main/java/dao/GroupChatDAO.java
+++ b/src/main/java/dao/GroupChatDAO.java
@@ -1,13 +1,222 @@
 package dao;
 
+import data.GroupChat;
+import data.Message;
 import data.User;
-
+import java.sql.*;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.TimeZone;
+
+import static dao.Database.close;
+
 
+/**
+ * Data access object for GroupChat
+ */
 public class GroupChatDAO {
 
-    //Made so that the rest of the application runs without group chats implemented.
+    /**
+     * Add a new GroupChat
+     * @param groupChat GroupChat to be added
+     * @return GroupChat, empty GroupChat object if unsuccessful
+     */
+
+
+    public GroupChat addGroupChat(GroupChat groupChat){
+        PreparedStatement preparedStatement = null;
+        Connection connection = null;
+        ResultSet resultSet = null;
+        try{
+            connection = Database.instance().getConnection();
+            preparedStatement = connection.prepareStatement("INSERT INTO groupChat (groupChatName) VALUES (?)", Statement.RETURN_GENERATED_KEYS);
+            preparedStatement.setString(1, groupChat.getGroupChatName());
+
+            int result = preparedStatement.executeUpdate();
+
+            if(result == 1){
+                resultSet = preparedStatement.getGeneratedKeys();
+                if(resultSet.next()){
+                    int groupChatId = resultSet.getInt(1);
+                    groupChat.setGroupChatId(groupChatId);
+
+                    ArrayList<User> users = groupChat.getUserList();
+                    preparedStatement = connection.prepareStatement("INSERT INTO user_groupChat (userId, groupChatId) VALUES (?, ?) ");
+                    for(User user:users){
+                        preparedStatement.setInt(1, user.getUserId());
+                        preparedStatement.setInt(2, groupChatId);
+                        preparedStatement.executeUpdate();
+                    }
+                    return groupChat;
+                }
+            }
+
+        }catch (SQLException e){
+            e.printStackTrace();
+        }finally{
+            close(connection, preparedStatement, resultSet);
+        }
+        return new GroupChat();
+    }
+
+    /**
+     * Get a GroupChat, with given groupChatId
+     * @param groupChatId groupChatId as int
+     * @return requested GroupChat if found, empty GroupChat object if not found
+     */
+
+
+    public GroupChat getGroupChat(int groupChatId){
+        PreparedStatement preparedStatement = null;
+        Connection connection = null;
+        ResultSet resultSet = null;
+        GroupChat groupChat = new GroupChat();
+        try{
+            connection = Database.instance().getConnection();
+            preparedStatement = connection.prepareStatement("SELECT * FROM groupChat WHERE groupChatId = ?");
+            preparedStatement.setInt(1, groupChatId);
+            resultSet = preparedStatement.executeQuery();
+            while(resultSet.next()) {
+                groupChat.setGroupChatId(groupChatId);
+                groupChat.setGroupChatName(resultSet.getString("groupChatName"));
+            }
+        }catch(SQLException e){
+            e.printStackTrace();
+        }finally{
+            close(connection, preparedStatement, resultSet);
+        }
+        return groupChat;
+    }
+
+
+
+    /**
+     * Get all GroupChats for user with given userId
+     * @param userId int userId of the user
+     * @return ArrayList of GroupChats
+     */
+
+
+    public ArrayList<GroupChat> getGroupChatByUserId(int userId){
+        ArrayList<GroupChat> groupChats = new ArrayList<>();
+        PreparedStatement preparedStatement = null;
+        Connection connection = null;
+        ResultSet resultSet = null;
+        try{
+            connection = Database.instance().getConnection();
+            preparedStatement = connection.prepareStatement("SELECT * FROM groupChat WHERE groupChatId IN (SELECT groupChatId FROM user_groupChat WHERE userId = ?)");
+            preparedStatement.setInt(1, userId);
+            resultSet = preparedStatement.executeQuery();
+            GroupChat groupChat;
+            while(resultSet.next()){
+                groupChat = new GroupChat();
+                groupChat.setGroupChatId(resultSet.getInt("groupChatId"));
+                groupChat.setGroupChatName(resultSet.getString("groupChatName"));
+                groupChats.add(groupChat);
+            }
+            return groupChats;
+        }catch (SQLException e){
+            e.printStackTrace();
+        }finally{
+            close(connection, preparedStatement, resultSet);
+        }
+        return groupChats;
+    }
+
+    /**
+     * Get all messages for a GroupChat
+     * @param groupChatId groupChatId as int
+     * @return ArrayList of Messages
+     */
+
+
+    public ArrayList<Message> getGroupChatMessages(int groupChatId){
+        ArrayList<Message> messages = new ArrayList<>();
+        PreparedStatement preparedStatement = null;
+        Connection connection = null;
+        ResultSet resultSet = null;
+        try{
+            connection = Database.instance().getConnection();
+            preparedStatement = connection.prepareStatement("SELECT * FROM message WHERE groupChatId = ?");
+            preparedStatement.setInt(1, groupChatId);
+            resultSet = preparedStatement.executeQuery();
+
+            Message message;
+            while(resultSet.next()){
+                message = new Message();
+                message.setMessageId(resultSet.getInt("messageId"));
+                message.setUserId1(resultSet.getInt("userId1"));
+                Calendar cal = Calendar.getInstance();
+                cal.setTimeZone(TimeZone.getTimeZone("UTC"));
+                message.setTimestamp(resultSet.getTimestamp("timestamp",cal));
+                message.setMessageContent(resultSet.getString("messageContent"));
+                message.setGroupChatId(resultSet.getInt("groupChatId"));
+                messages.add(message);
+            }
+        }catch (SQLException e){
+            e.printStackTrace();
+        }finally {
+            close(connection, preparedStatement, resultSet);
+        }
+        return messages;
+    }
+
+    /**
+     * Adds a Message to a GroupChat
+     * @param groupChatId groupChatId as int
+     * @param message Message object to be added to GroupChat
+     * @return The message that was added
+     */
+
+    public Message addMessage(int groupChatId, Message message){
+        PreparedStatement preparedStatement = null;
+        Connection connection = null;
+        try{
+            connection = Database.instance().getConnection();
+            preparedStatement = connection.prepareStatement("INSERT INTO message (userId1, timestamp, messageContent, groupChatId) VALUES (?, NOW(), ?, ?)");
+            preparedStatement.setInt(1, message.getUserId1());
+            preparedStatement.setString(2, message.getMessageContent());
+            preparedStatement.setInt(3, groupChatId);
+
+            preparedStatement.executeUpdate();
+        }catch (SQLException e){
+            e.printStackTrace();
+        }finally{
+            close(connection, preparedStatement, null);
+        }
+        return message;
+    }
+
+    /**
+     * Get all users in a GroupChat
+     * @param groupChatId groupChatId as int
+     * @return ArrayList of Users the GroupChat
+     */
+
+
     public ArrayList<User> getGroupChatUsers(int groupChatId){
-        return null;
+        ArrayList<User> users = new ArrayList<>();
+        PreparedStatement preparedStatement = null;
+        ResultSet resultSet = null;
+        Connection connection = null;
+        try{
+            connection = Database.instance().getConnection();
+            preparedStatement = connection.prepareStatement("SELECT * FROM user WHERE user.userId IN (SELECT userId FROM user_groupChat WHERE groupChatId = ?)");
+            preparedStatement.setInt(1, groupChatId);
+            resultSet = preparedStatement.executeQuery();
+
+            User user;
+            while(resultSet.next()){
+                user = new User();
+                user.setUserId(resultSet.getInt("userId"));
+                user.setUsername(resultSet.getString("username"));
+                users.add(user);
+            }
+        }catch(SQLException e){
+            e.printStackTrace();
+        }finally{
+            close(connection, preparedStatement, resultSet);
+        }
+        return users;
     }
 }
diff --git a/src/main/java/data/GroupChat.java b/src/main/java/data/GroupChat.java
index 085d9b1526f36ee477dc6d3beb8bc9916d209e2f..6ab7f2f93d898b880c24ec33cd4dc194014b298d 100644
--- a/src/main/java/data/GroupChat.java
+++ b/src/main/java/data/GroupChat.java
@@ -1,6 +1,53 @@
 package data;
 
+import java.util.ArrayList;
+
 /**
  * Class for the GroupChat object as saved in database
  */
-public class GroupChat {}
+public class GroupChat {
+    private int groupChatID;
+    private String groupChatName;
+    private ArrayList<Message> messageList = new ArrayList<>();
+    private ArrayList<User> userList = new ArrayList<>();
+
+    public GroupChat(){}
+
+    public GroupChat(int ID,String name){
+        this.groupChatID=ID;
+        this.groupChatName=name;
+    }
+
+    public int getGroupChatID() {
+        return groupChatID;
+    }
+
+    public String getGroupChatName() {
+        return groupChatName;
+    }
+
+    public ArrayList<Message> getMessageList() {
+        return messageList;
+    }
+
+    public ArrayList<User> getUserList() {
+        return userList;
+    }
+
+
+    public void setGroupChatName(String groupChatName) {
+        this.groupChatName = groupChatName;
+    }
+
+    public void setMessageList(ArrayList<Message> messageList) {
+       this.messageList=messageList;
+    }
+
+    public void setUserList(ArrayList<User> userList) {
+        this.userList = userList;
+    }
+
+    public void setGroupChatId(int groupChatId) {
+        this.groupChatID=groupChatId;
+    }
+}
diff --git a/src/main/java/resources/GroupChatResource.java b/src/main/java/resources/GroupChatResource.java
index a24331a5faa8f57bafa5f563108d5615153573af..fd72bf0396b36b4f1fa8354d07a74e147c7bb649 100644
--- a/src/main/java/resources/GroupChatResource.java
+++ b/src/main/java/resources/GroupChatResource.java
@@ -1,9 +1,12 @@
 package resources;
 
+import dao.GroupChatDAO;
 import data.GroupChat;
+import data.Message;
 
 import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
+import java.util.ArrayList;
 
 /**
  * GroupChat resource exposed at "/groupchat" path
@@ -20,7 +23,16 @@ public class GroupChatResource {
     @Path ("{groupChatId}")
     @Produces (MediaType.APPLICATION_JSON)
     public GroupChat getGroupChat(@PathParam("groupChatId") int groupChatId){
-        return null;
+        GroupChatDAO groupChatDAO=new GroupChatDAO();
+        GroupChat groupChat = groupChatDAO.getGroupChat(groupChatId);
+        groupChat.setMessageList(groupChatDAO.getGroupChatMessages(groupChatId));
+        groupChat.setUserList(groupChatDAO.getGroupChatUsers(groupChatId));
+        return groupChat;
     }
 
+    public void postMessage(int groupChatID, String groupChatMessage){
+
+    }
+
+
 }
diff --git a/groupChat/GroupChatDAOTest.txt b/src/test/GroupChatDAOTest.java
similarity index 100%
rename from groupChat/GroupChatDAOTest.txt
rename to src/test/GroupChatDAOTest.java
diff --git a/groupChat/GroupChatResourceTest.txt b/src/test/java/GroupChatResourceTest.java
similarity index 99%
rename from groupChat/GroupChatResourceTest.txt
rename to src/test/java/GroupChatResourceTest.java
index 952a99337923da0effffded2f498dae7a0217516..5e6ccf94f07a331128e7681483d80db0e0bd2173 100644
--- a/groupChat/GroupChatResourceTest.txt
+++ b/src/test/java/GroupChatResourceTest.java
@@ -1,6 +1,7 @@
 import data.GroupChat;
 import data.Message;
 import org.glassfish.jersey.server.ResourceConfig;
+
 import org.glassfish.jersey.test.JerseyTest;
 import org.glassfish.jersey.test.TestProperties;
 import org.junit.Test;