diff --git a/pom.xml b/pom.xml
index 3a6efb60..19d7cd06 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,6 +40,12 @@
log4j-core
2.17.1
+
+ io.github.hakky54
+ logcaptor
+ 2.7.8
+ test
+
diff --git a/src/test/java/org/fungover/storm/client/ClientHandlerTest.java b/src/test/java/org/fungover/storm/client/ClientHandlerTest.java
new file mode 100644
index 00000000..fc4a03e7
--- /dev/null
+++ b/src/test/java/org/fungover/storm/client/ClientHandlerTest.java
@@ -0,0 +1,41 @@
+package org.fungover.storm.client;
+
+import nl.altindag.log.LogCaptor;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+import java.io.*;
+import java.net.Socket;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+
+
+class ClientHandlerTest {
+
+ @Test
+ void shouldNotLogAnErrorWhenThereIsASuccessfulConnection() throws IOException {
+ LogCaptor logCaptor = LogCaptor.forName("SERVER");
+ Socket socket = mock(Socket.class);
+ Mockito.when(socket.getOutputStream()).thenReturn(new ByteArrayOutputStream());
+ Mockito.when(socket.getInputStream()).thenReturn(new ByteArrayInputStream("Hello Storm!".getBytes()));
+ ClientHandler clientHandler = new ClientHandler(socket);
+
+ clientHandler.run();
+
+ assertThat(logCaptor.getErrorLogs()).isEmpty();
+ }
+
+ @Test
+ void shouldLogAnErrorWhenThereIsAConnectionError() throws IOException {
+ LogCaptor logCaptor = LogCaptor.forName("SERVER");
+ Socket socket = new Socket();
+ ClientHandler clientHandler = new ClientHandler(socket);
+
+ socket.close();
+ clientHandler.run();
+
+ assertThat(logCaptor.getErrorLogs()).hasSize(1);
+ }
+
+}