+1 (315) 557-6473 

Program To Create a Simple Chat Application With 4 Endpoints Using Java Programming Language Assignment Solutions.


Instructions

Objective
Write a program to create a simple chat application with 4 endpoints in Java programming language.

Requirements and Specifications

Program to create a simple chat application with 4 endpoints in Java programming language

Source Code

CREATE MESSAGE HANDLER

package handler;

import dao.MessageDao;

import dto.MessageDto;

import java.util.List;

import org.testng.Assert;

import org.testng.annotations.Test;

import server.Server;

public class CreateMessageHandlerTest {

  @Test

  public void createMessageTest(){

    MessageDto messageDto = new MessageDto();

    messageDto.setMessage(String.valueOf(Math.random()));

    messageDto.setFromId(String.valueOf(Math.random()));

    messageDto.setToId(String.valueOf(Math.random()));

    String test1 = "POST /createMessage HTTP/1.1\n"

        + "Host: test\n"

        + "Connection: Keep-Alive\n"

        + "\n"

        + GsonTool.gson.toJson(messageDto);

    String response = Server.processRequest(test1);

    String[] responseParts = response.split("\n");

    Assert.assertEquals(responseParts[0], "HTTP/1.1 200 OK");

    List<MessageDto> messageDtos = MessageDao.getInstance().getAll();

    Assert.assertEquals(messageDtos.size(), 1);

    Assert.assertNotNull(messageDtos.get(0).getUniqueId());

    Assert.assertEquals(messageDtos.get(0).getMessage(), messageDto.getMessage());

  }

}

CREATE USER HANDLER

package handler;

import com.google.gson.Gson;

import dao.UserDao;

import dto.UserDto;

import java.util.List;

import org.testng.Assert;

import org.testng.annotations.Test;

import server.Server;

public class CreateUserHandlerTest {

  private static final Gson gson = new Gson();

  @Test

  public void createUserTest(){

    String user1 = String.valueOf(Math.random());

    UserDto user = new UserDto();

    user.setUserName(user1);

    String test1 = "POST /createUser HTTP/1.1\n"

        + "Host: test\n"

        + "Connection: Keep-Alive\n"

        + "\n"

        + gson.toJson(user);

    String response = Server.processRequest(test1);

    String[] responseParts = response.split("\n");

    Assert.assertEquals(responseParts[0], "HTTP/1.1 200 OK");

    List<UserDto> users = UserDao.getInstance().getAll();

    Assert.assertEquals(users.size(), 1);

    Assert.assertNotNull(users.get(0).getUniqueId());

    Assert.assertEquals(users.get(0).getUserName(), user1);

  }

}

GET MESSAGES HANDLER

package handler;

import com.google.gson.reflect.TypeToken;

import dao.MessageDao;

import dto.MessageDto;

import org.testng.Assert;

import org.testng.annotations.Test;

import response.RestApiAppResponse;

import server.Server;

public class GetMessagesHandlerTest {

  @Test

  public void createUserTest() {

    String fromUserId = String.valueOf(Math.random());

    String toUserId = String.valueOf(Math.random());

    String toUserId2 = String.valueOf(Math.random());

    String messageId1 = String.valueOf(Math.random());

    MessageDto messageDto1 = new MessageDto(messageId1);

    messageDto1.setToId(toUserId);

    messageDto1.setFromId(fromUserId);

    messageDto1.setMessage(String.valueOf(Math.random()));

    String messageId2 = String.valueOf(Math.random());

    MessageDto messageDto2 = new MessageDto(messageId2);

    messageDto2.setToId(toUserId2);

    messageDto2.setFromId(fromUserId);

    MessageDao messageDao = MessageDao.getInstance();

    messageDao.put(messageDto1);

    messageDao.put(messageDto2);

    String test1 = "GET /getMessages?fromId=" + fromUserId + "&toId=" + toUserId + " HTTP/1.1\n"

        + "Host: test\n"

        + "Connection: Keep-Alive\n"

        + "\n";

    System.out.println(test1);

    String response = Server.processRequest(test1);

    String[] responseParts = response.split("\n");

    Assert.assertEquals(responseParts[0], "HTTP/1.1 200 OK");

    RestApiAppResponse<MessageDto> messages = GsonTool.gson.fromJson(responseParts[2],

        new TypeToken<RestApiAppResponse<MessageDto>>() {

        }.getType());

    Assert.assertEquals(messages.data.size(), 1);

    Assert.assertEquals(messages.data.get(0).getUniqueId(), messageDto1.getUniqueId());

    Assert.assertEquals(messages.data.get(0).getToId(), messageDto1.getToId());

    Assert.assertEquals(messages.data.get(0).getFromId(), messageDto1.getFromId());

    Assert.assertEquals(messages.data.get(0).getMessage(), messageDto1.getMessage());

  }

  @Test

  public void createUserTest2() {

    String fromUserId = String.valueOf(Math.random());

    String toUserId = String.valueOf(Math.random());

    String toUserId2 = String.valueOf(Math.random());

    String messageId1 = String.valueOf(Math.random());

    MessageDto messageDto1 = new MessageDto(messageId1);

    messageDto1.setToId(toUserId);

    messageDto1.setFromId(fromUserId);

    messageDto1.setMessage(String.valueOf(Math.random()));

    String messageId2 = String.valueOf(Math.random());

    MessageDto messageDto2 = new MessageDto(messageId2);

    messageDto2.setToId(toUserId2);

    messageDto2.setFromId(fromUserId);

    MessageDao messageDao = MessageDao.getInstance();

    messageDao.put(messageDto1);

    messageDao.put(messageDto2);

    String test1 = "GET /getMessages?fromId=" + String.valueOf(Math.random()) + "&toId=" + toUserId + " HTTP/1.1\n"

        + "Host: test\n"

        + "Connection: Keep-Alive\n"

        + "\n";

    System.out.println(test1);

    String response = Server.processRequest(test1);

    String[] responseParts = response.split("\n");

    Assert.assertEquals(responseParts[0], "HTTP/1.1 200 OK");

    RestApiAppResponse<MessageDto> messages = GsonTool.gson.fromJson(responseParts[2],

        new TypeToken<RestApiAppResponse<MessageDto>>() {

        }.getType());

    Assert.assertEquals(messages.data.size(), 0);

  }

}

GET USER HANDLER

package handler;

import com.google.gson.reflect.TypeToken;

import dao.UserDao;

import dto.UserDto;

import org.testng.Assert;

import org.testng.annotations.Test;

import response.RestApiAppResponse;

import server.Server;

public class GetUsersHandlerTest {

  @Test

  public void createUserTest(){

    String user1 = String.valueOf(Math.random());

    String user1Id = String.valueOf(Math.random());

    UserDto user = new UserDto();

    UserDao userDao = UserDao.getInstance();

    user.setUserName(user1);

    user.setUniqueId(user1Id);

    userDao.put(user);

    String test1 = "GET /getUsers HTTP/1.1\n"

        + "Host: test\n"

        + "Connection: Keep-Alive\n"

        + "\n";

    String response = Server.processRequest(test1);

    String[] responseParts = response.split("\n");

    Assert.assertEquals(responseParts[0], "HTTP/1.1 200 OK");

    RestApiAppResponse<UserDto> userRes = GsonTool.gson.fromJson(responseParts[2],

        new TypeToken<RestApiAppResponse<UserDto>>() {}.getType());

    Assert.assertEquals(userRes.data.size(), 1);

    Assert.assertEquals(userRes.data.get(0).getUserName(), user1);

    Assert.assertEquals(userRes.data.get(0).getUniqueId(), user1Id);

  }

}