restructured folders and files
This commit is contained in:
@@ -2,5 +2,7 @@ package com.vaessl.app.connection;
|
|||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
||||||
|
import com.vaessl.app.shared.ServiceType;
|
||||||
|
|
||||||
public record AuthResponse(ServiceType serviceType, Instant expiresAt) {
|
public record AuthResponse(ServiceType serviceType, Instant expiresAt) {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,9 @@ import jakarta.servlet.http.HttpSession;
|
|||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import com.vaessl.app.shared.ServiceType;
|
||||||
|
import com.vaessl.app.shared.SessionKeys;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class ConnectionController {
|
public class ConnectionController {
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package com.vaessl.app.connection;
|
|||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
||||||
|
import com.vaessl.app.shared.ServiceProvider;
|
||||||
|
|
||||||
public interface ConnectionProvider extends ServiceProvider {
|
public interface ConnectionProvider extends ServiceProvider {
|
||||||
|
|
||||||
void checkCredentials(ConnectionRequest request);
|
void checkCredentials(ConnectionRequest request);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.vaessl.app.connection;
|
package com.vaessl.app.connection;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.vaessl.app.shared.ServiceType;
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.util.stream.Collectors;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.vaessl.app.exception.WrongServiceTypeException;
|
import com.vaessl.app.exception.WrongServiceTypeException;
|
||||||
|
import com.vaessl.app.shared.ServiceType;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ConnectionService {
|
public class ConnectionService {
|
||||||
|
|||||||
@@ -11,8 +11,9 @@ import org.springframework.web.client.RestClient;
|
|||||||
|
|
||||||
import com.vaessl.app.exception.EmptyCredentialsException;
|
import com.vaessl.app.exception.EmptyCredentialsException;
|
||||||
import com.vaessl.app.exception.RemoteApiException;
|
import com.vaessl.app.exception.RemoteApiException;
|
||||||
|
import com.vaessl.app.shared.ServiceType;
|
||||||
|
|
||||||
import static com.vaessl.app.connection.Endpoint.*;
|
import static com.vaessl.app.shared.Endpoint.*;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class HomeboxConnectionProvider implements ConnectionProvider {
|
public class HomeboxConnectionProvider implements ConnectionProvider {
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
package com.vaessl.app.connection;
|
|
||||||
|
|
||||||
public interface ServiceProvider {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the service type key used to look up this provider in a registry, e.g.
|
|
||||||
* {@code "HOMEBOX"}.
|
|
||||||
*/
|
|
||||||
ServiceType getServiceType();
|
|
||||||
}
|
|
||||||
@@ -12,11 +12,11 @@ import org.springframework.web.client.RestClient;
|
|||||||
import com.vaessl.app.connection.ConnectionEntity;
|
import com.vaessl.app.connection.ConnectionEntity;
|
||||||
import com.vaessl.app.connection.ConnectionRepository;
|
import com.vaessl.app.connection.ConnectionRepository;
|
||||||
import com.vaessl.app.connection.HomeboxEntity;
|
import com.vaessl.app.connection.HomeboxEntity;
|
||||||
import com.vaessl.app.connection.ServiceType;
|
|
||||||
import com.vaessl.app.exception.ConnectionNotFoundException;
|
import com.vaessl.app.exception.ConnectionNotFoundException;
|
||||||
import com.vaessl.app.exception.RemoteApiException;
|
import com.vaessl.app.exception.RemoteApiException;
|
||||||
|
import com.vaessl.app.shared.ServiceType;
|
||||||
|
|
||||||
import static com.vaessl.app.connection.Endpoint.*;
|
import static com.vaessl.app.shared.Endpoint.*;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class HomeboxSearchProvider implements SearchProvider {
|
public class HomeboxSearchProvider implements SearchProvider {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.PostMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import com.vaessl.app.connection.SessionKeys;
|
import com.vaessl.app.shared.SessionKeys;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpSession;
|
import jakarta.servlet.http.HttpSession;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.vaessl.app.search;
|
|||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
|
||||||
import com.vaessl.app.connection.ServiceProvider;
|
import com.vaessl.app.shared.ServiceProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implemented by any service that supports querying its remote API for items.
|
* Implemented by any service that supports querying its remote API for items.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.vaessl.app.search;
|
package com.vaessl.app.search;
|
||||||
|
|
||||||
import com.vaessl.app.connection.ServiceType;
|
import com.vaessl.app.shared.ServiceType;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import java.util.stream.Collectors;
|
|||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.vaessl.app.connection.ServiceType;
|
import com.vaessl.app.shared.ServiceType;
|
||||||
import com.vaessl.app.exception.WrongServiceTypeException;
|
import com.vaessl.app.exception.WrongServiceTypeException;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.vaessl.app.connection;
|
package com.vaessl.app.shared;
|
||||||
|
|
||||||
public enum Endpoint {
|
public enum Endpoint {
|
||||||
HOMEBOX_LOGIN("/api/v1/users/login"), LOGIN("/login"), CONNECTION_STATUS(
|
HOMEBOX_LOGIN("/api/v1/users/login"), LOGIN("/login"), CONNECTION_STATUS(
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.vaessl.app.shared;
|
||||||
|
|
||||||
|
public interface ServiceProvider {
|
||||||
|
|
||||||
|
ServiceType getServiceType();
|
||||||
|
}
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.vaessl.app.connection;
|
package com.vaessl.app.shared;
|
||||||
|
|
||||||
public enum ServiceType {
|
public enum ServiceType {
|
||||||
HOMEBOX;
|
HOMEBOX;
|
||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
package com.vaessl.app.connection;
|
package com.vaessl.app.shared;
|
||||||
|
|
||||||
public final class SessionKeys {
|
public final class SessionKeys {
|
||||||
|
|
||||||
static final String CONNECTION_ID_SUFFIX = "_CONNECTION_ID";
|
public static final String CONNECTION_ID_SUFFIX = "_CONNECTION_ID";
|
||||||
|
|
||||||
private SessionKeys() {}
|
private SessionKeys() {}
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.vaessl.app;
|
package com.vaessl.app;
|
||||||
|
|
||||||
import com.vaessl.app.connection.ServiceType;
|
import com.vaessl.app.shared.ServiceType;
|
||||||
|
|
||||||
public final class Mockdata {
|
public final class Mockdata {
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package com.vaessl.app.connection;
|
|||||||
|
|
||||||
import static com.vaessl.app.Mockdata.*;
|
import static com.vaessl.app.Mockdata.*;
|
||||||
|
|
||||||
import static com.vaessl.app.connection.Endpoint.*;
|
import static com.vaessl.app.shared.Endpoint.*;
|
||||||
import static com.vaessl.app.connection.ServiceType.*;
|
import static com.vaessl.app.shared.ServiceType.*;
|
||||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import org.junit.jupiter.api.Test;
|
|||||||
|
|
||||||
import com.vaessl.app.exception.EmptyCredentialsException;
|
import com.vaessl.app.exception.EmptyCredentialsException;
|
||||||
import static com.vaessl.app.Mockdata.*;
|
import static com.vaessl.app.Mockdata.*;
|
||||||
import static com.vaessl.app.connection.ServiceType.HOMEBOX;
|
import static com.vaessl.app.shared.ServiceType.HOMEBOX;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
class HomeboxConnectionProviderTest {
|
class HomeboxConnectionProviderTest {
|
||||||
@@ -15,8 +15,7 @@ class HomeboxConnectionProviderTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void checkCredentialsShouldThrowExceptionWhenFieldsAreMissing() {
|
void checkCredentialsShouldThrowExceptionWhenFieldsAreMissing() {
|
||||||
ConnectionRequest request =
|
ConnectionRequest request = new ConnectionRequest(MOCK_URL, HOMEBOX, null, null, false);
|
||||||
new ConnectionRequest(MOCK_URL, HOMEBOX, null, null, false);
|
|
||||||
|
|
||||||
EmptyCredentialsException exception = assertThrows(EmptyCredentialsException.class, () -> {
|
EmptyCredentialsException exception = assertThrows(EmptyCredentialsException.class, () -> {
|
||||||
provider.checkCredentials(request);
|
provider.checkCredentials(request);
|
||||||
|
|||||||
@@ -23,9 +23,9 @@ import com.jayway.jsonpath.JsonPath;
|
|||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
import static com.github.tomakehurst.wiremock.client.WireMock.*;
|
import static com.github.tomakehurst.wiremock.client.WireMock.*;
|
||||||
import static com.vaessl.app.connection.Endpoint.*;
|
import static com.vaessl.app.shared.Endpoint.*;
|
||||||
import static com.vaessl.app.exception.ErrorMessage.*;
|
import static com.vaessl.app.exception.ErrorMessage.*;
|
||||||
import static com.vaessl.app.connection.ServiceType.*;
|
import static com.vaessl.app.shared.ServiceType.*;
|
||||||
|
|
||||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||||
@AutoConfigureTestRestTemplate
|
@AutoConfigureTestRestTemplate
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import org.springframework.data.domain.PageRequest;
|
|||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import com.vaessl.app.connection.ConnectionRepository;
|
import com.vaessl.app.connection.ConnectionRepository;
|
||||||
import com.vaessl.app.exception.ConnectionNotFoundException;
|
import com.vaessl.app.exception.ConnectionNotFoundException;
|
||||||
import static com.vaessl.app.connection.ServiceType.HOMEBOX;
|
import static com.vaessl.app.shared.ServiceType.HOMEBOX;
|
||||||
|
|
||||||
|
|
||||||
@ExtendWith(MockitoExtension.class)
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.vaessl.app.search;
|
|||||||
|
|
||||||
import static com.vaessl.app.Mockdata.MOCK_PASS;
|
import static com.vaessl.app.Mockdata.MOCK_PASS;
|
||||||
import static com.vaessl.app.Mockdata.MOCK_USER;
|
import static com.vaessl.app.Mockdata.MOCK_USER;
|
||||||
import static com.vaessl.app.connection.Endpoint.*;
|
import static com.vaessl.app.shared.Endpoint.*;
|
||||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user