From 7de38afec27e1c715945be320c1d05edfabdf8b8 Mon Sep 17 00:00:00 2001 From: kasun Date: Thu, 9 Apr 2026 21:11:17 +0200 Subject: [PATCH] added ConnectionService and HomeboxProvider tests --- .../app/connection/ConnectionServiceTest.java | 50 +++++++++++++++++++ .../HomeBoxConnectionProviderTest.java | 27 ++++++++++ .../com/vaessl/app/connection/Mockdata.java | 9 ++++ 3 files changed, 86 insertions(+) create mode 100644 backend/src/test/java/com/vaessl/app/connection/ConnectionServiceTest.java create mode 100644 backend/src/test/java/com/vaessl/app/connection/HomeBoxConnectionProviderTest.java create mode 100644 backend/src/test/java/com/vaessl/app/connection/Mockdata.java diff --git a/backend/src/test/java/com/vaessl/app/connection/ConnectionServiceTest.java b/backend/src/test/java/com/vaessl/app/connection/ConnectionServiceTest.java new file mode 100644 index 0000000..2c626f9 --- /dev/null +++ b/backend/src/test/java/com/vaessl/app/connection/ConnectionServiceTest.java @@ -0,0 +1,50 @@ +package com.vaessl.app.connection; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import com.vaessl.app.dto.ConnectionRequest; +import com.vaessl.app.exception.EmptyCredentialsException; + +import static com.vaessl.app.connection.Mockdata.*; + +@ExtendWith(MockitoExtension.class) +class ConnectionServiceTest { + + @Mock + private ConnectionProvider mockProvider; + @Mock + private ConnectionRepository mockRepo; + + private ConnectionService connectionService; + + @BeforeEach + void setup() { + when(mockProvider.getServiceType()).thenReturn(MOCK_SERVICE_TYPE); + connectionService = new ConnectionService(List.of(mockProvider), mockRepo); + } + + @Test + void login_ShouldAbort_WhenCheckCredentialsThrowsException() { + ConnectionRequest request = new ConnectionRequest(MOCK_URL, MOCK_SERVICE_TYPE, null, null, false); + + doThrow(new EmptyCredentialsException(List.of("username"))) + .when(mockProvider).checkCredentials(request); + + assertThrows(EmptyCredentialsException.class, () -> connectionService.login(request)); + + verify(mockProvider, never()).authenticate(any()); + } +} \ No newline at end of file diff --git a/backend/src/test/java/com/vaessl/app/connection/HomeBoxConnectionProviderTest.java b/backend/src/test/java/com/vaessl/app/connection/HomeBoxConnectionProviderTest.java new file mode 100644 index 0000000..eaaca00 --- /dev/null +++ b/backend/src/test/java/com/vaessl/app/connection/HomeBoxConnectionProviderTest.java @@ -0,0 +1,27 @@ +package com.vaessl.app.connection; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +import org.junit.jupiter.api.Test; + +import com.vaessl.app.dto.ConnectionRequest; +import com.vaessl.app.exception.EmptyCredentialsException; + +import static org.assertj.core.api.Assertions.assertThat; +import static com.vaessl.app.connection.Mockdata.*; + +class HomeBoxConnectionProviderTest { + + private final HomeBoxConnectionProvider provider = new HomeBoxConnectionProvider(null, null); + + @Test + void checkCredentials_ShouldThrowException_WhenFieldsAreMissing() { + ConnectionRequest request = new ConnectionRequest(MOCK_URL, "HOMEBOX", null, null, false); + + EmptyCredentialsException exception = assertThrows(EmptyCredentialsException.class, () -> { + provider.checkCredentials(request); + }); + + assertThat(exception.getMissingFields()).containsExactly("username", "password"); + } +} diff --git a/backend/src/test/java/com/vaessl/app/connection/Mockdata.java b/backend/src/test/java/com/vaessl/app/connection/Mockdata.java new file mode 100644 index 0000000..657e15c --- /dev/null +++ b/backend/src/test/java/com/vaessl/app/connection/Mockdata.java @@ -0,0 +1,9 @@ +package com.vaessl.app.connection; + +public final class Mockdata { + + private Mockdata() {} + + public static final String MOCK_URL = "http://localhost:1234"; + public static final String MOCK_SERVICE_TYPE = "SERVICE_TYPE"; +}