forked from Hithomelabs/CFTunnels
Hithomelabs/HomeLabDocker#86: refactor: move cftunnels source into :cftunnels-service module
This commit is contained in:
parent
2a6e7c176c
commit
0c2e186ba7
@ -1,4 +0,0 @@
|
||||
FROM openjdk:17-jdk
|
||||
ARG JAR_FILE=target/*.jar
|
||||
COPY ${JAR_FILE} app.jar
|
||||
ENTRYPOINT ["java","-jar","/app.jar"]
|
||||
12
cftunnels-service/Dockerfile
Normal file
12
cftunnels-service/Dockerfile
Normal file
@ -0,0 +1,12 @@
|
||||
FROM openjdk:17-jdk as build
|
||||
WORKDIR /app
|
||||
COPY gradlew settings.gradle build.gradle ./
|
||||
COPY gradle ./gradle
|
||||
COPY common ./common
|
||||
COPY cftunnels-service ./cftunnels-service
|
||||
COPY portainer-automation ./portainer-automation
|
||||
RUN ./gradlew :cftunnels-service:bootJar
|
||||
|
||||
FROM openjdk:17-jdk-slim
|
||||
COPY --from=build /app/cftunnels-service/build/libs/*.jar app.jar
|
||||
ENTRYPOINT ["java", "-jar", "/app.jar"]
|
||||
46
cftunnels-service/build.gradle
Normal file
46
cftunnels-service/build.gradle
Normal file
@ -0,0 +1,46 @@
|
||||
apply plugin: 'org.springframework.boot'
|
||||
|
||||
dependencies {
|
||||
implementation project(':common')
|
||||
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-security'
|
||||
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.5'
|
||||
implementation 'org.hibernate.validator:hibernate-validator'
|
||||
|
||||
runtimeOnly 'org.postgresql:postgresql'
|
||||
runtimeOnly 'com.h2database:h2'
|
||||
|
||||
compileOnly 'org.projectlombok:lombok'
|
||||
annotationProcessor 'org.projectlombok:lombok'
|
||||
|
||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
||||
testImplementation 'org.springframework.security:spring-security-test'
|
||||
}
|
||||
|
||||
test {
|
||||
systemProperty 'spring.profiles.active', 'ci'
|
||||
useJUnitPlatform {
|
||||
excludeTags 'integration'
|
||||
}
|
||||
testLogging {
|
||||
events "passed", "skipped", "failed", "standardOut", "standardError"
|
||||
exceptionFormat "full"
|
||||
showStandardStreams = true
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('integrationTestOnly', Test) {
|
||||
useJUnitPlatform {
|
||||
includeTags 'integration'
|
||||
}
|
||||
description = 'Runs only integration tests tagged with @Tag("integration")'
|
||||
group = 'verification'
|
||||
testLogging {
|
||||
events "passed", "skipped", "failed"
|
||||
exceptionFormat "full"
|
||||
showStandardStreams = true
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels;
|
||||
package com.hithomelabs.cftunnels;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
@ -32,7 +32,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
* @see <a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-negative">Cloudflare Tunnel Documentation</a>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@SpringBootApplication(scanBasePackages = "com.hithomelabs")
|
||||
public class CfTunnelsApplication {
|
||||
|
||||
/**
|
||||
@ -1,7 +1,7 @@
|
||||
package com.hithomelabs.CFTunnels.Config;
|
||||
package com.hithomelabs.cftunnels.Config;
|
||||
|
||||
import com.hithomelabs.CFTunnels.Models.Authorities;
|
||||
import com.hithomelabs.CFTunnels.Models.Groups;
|
||||
import com.hithomelabs.cftunnels.Models.Authorities;
|
||||
import com.hithomelabs.cftunnels.Models.Groups;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Config;
|
||||
package com.hithomelabs.cftunnels.Config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Config;
|
||||
package com.hithomelabs.cftunnels.Config;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Config;
|
||||
package com.hithomelabs.cftunnels.Config;
|
||||
|
||||
import io.swagger.v3.oas.models.Components;
|
||||
import io.swagger.v3.oas.models.OpenAPI;
|
||||
@ -1,6 +1,6 @@
|
||||
package com.hithomelabs.CFTunnels.Config.Security;
|
||||
package com.hithomelabs.cftunnels.Config.Security;
|
||||
|
||||
import com.hithomelabs.CFTunnels.Config.CustomOidcUserConfiguration;
|
||||
import com.hithomelabs.cftunnels.Config.CustomOidcUserConfiguration;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@ -1,20 +1,20 @@
|
||||
package com.hithomelabs.CFTunnels.Controllers;
|
||||
package com.hithomelabs.cftunnels.Controllers;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.hithomelabs.CFTunnels.Config.AuthoritiesToGroupMapping;
|
||||
import com.hithomelabs.CFTunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.CFTunnels.Config.RestTemplateConfig;
|
||||
import com.hithomelabs.CFTunnels.Entity.Request;
|
||||
import com.hithomelabs.CFTunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.CFTunnels.Entity.User;
|
||||
import com.hithomelabs.CFTunnels.Headers.AuthKeyEmailHeader;
|
||||
import com.hithomelabs.CFTunnels.Models.Config;
|
||||
import com.hithomelabs.CFTunnels.Models.Ingress;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelResponse;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelsResponse;
|
||||
import com.hithomelabs.CFTunnels.Repositories.UserRepository;
|
||||
import com.hithomelabs.CFTunnels.Services.CloudflareAPIService;
|
||||
import com.hithomelabs.CFTunnels.Services.MappingRequestService;
|
||||
import com.hithomelabs.cftunnels.Config.AuthoritiesToGroupMapping;
|
||||
import com.hithomelabs.cftunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.cftunnels.Config.RestTemplateConfig;
|
||||
import com.hithomelabs.cftunnels.Entity.Request;
|
||||
import com.hithomelabs.cftunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.cftunnels.Entity.User;
|
||||
import com.hithomelabs.cftunnels.Headers.AuthKeyEmailHeader;
|
||||
import com.hithomelabs.cftunnels.Models.Config;
|
||||
import com.hithomelabs.cftunnels.Models.Ingress;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelResponse;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelsResponse;
|
||||
import com.hithomelabs.cftunnels.Repositories.UserRepository;
|
||||
import com.hithomelabs.cftunnels.Services.CloudflareAPIService;
|
||||
import com.hithomelabs.cftunnels.Services.MappingRequestService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Entity;
|
||||
package com.hithomelabs.cftunnels.Entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Entity;
|
||||
package com.hithomelabs.cftunnels.Entity;
|
||||
|
||||
/**
|
||||
* Enum representing supported protocols for Cloudflare Tunnel ingress mappings.
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Entity;
|
||||
package com.hithomelabs.cftunnels.Entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Entity;
|
||||
package com.hithomelabs.cftunnels.Entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Entity;
|
||||
package com.hithomelabs.cftunnels.Entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import jakarta.validation.constraints.Size;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Exceptions;
|
||||
package com.hithomelabs.cftunnels.Exceptions;
|
||||
|
||||
public class ExternalServiceException extends RuntimeException {
|
||||
public ExternalServiceException(String message) { super(message); }
|
||||
@ -1,6 +1,6 @@
|
||||
package com.hithomelabs.CFTunnels.Headers;
|
||||
package com.hithomelabs.cftunnels.Headers;
|
||||
|
||||
import com.hithomelabs.CFTunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.cftunnels.Config.CloudflareConfig;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.stereotype.Component;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Models;
|
||||
package com.hithomelabs.cftunnels.Models;
|
||||
|
||||
public class Authorities {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Models;
|
||||
package com.hithomelabs.cftunnels.Models;
|
||||
|
||||
import com.fasterxml.jackson.annotation.*;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Models;
|
||||
package com.hithomelabs.cftunnels.Models;
|
||||
|
||||
public class Groups {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Models;
|
||||
package com.hithomelabs.cftunnels.Models;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Models;
|
||||
package com.hithomelabs.cftunnels.Models;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Models;
|
||||
package com.hithomelabs.cftunnels.Models;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Models;
|
||||
package com.hithomelabs.cftunnels.Models;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.Models;
|
||||
package com.hithomelabs.cftunnels.Models;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -1,6 +1,6 @@
|
||||
package com.hithomelabs.CFTunnels.Repositories;
|
||||
package com.hithomelabs.cftunnels.Repositories;
|
||||
|
||||
import com.hithomelabs.CFTunnels.Entity.Mapping;
|
||||
import com.hithomelabs.cftunnels.Entity.Mapping;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.hithomelabs.CFTunnels.Repositories;
|
||||
package com.hithomelabs.cftunnels.Repositories;
|
||||
|
||||
import com.hithomelabs.CFTunnels.Entity.Request;
|
||||
import com.hithomelabs.cftunnels.Entity.Request;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
@ -1,6 +1,6 @@
|
||||
package com.hithomelabs.CFTunnels.Repositories;
|
||||
package com.hithomelabs.cftunnels.Repositories;
|
||||
|
||||
import com.hithomelabs.CFTunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.cftunnels.Entity.Tunnel;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.hithomelabs.CFTunnels.Repositories;
|
||||
package com.hithomelabs.cftunnels.Repositories;
|
||||
|
||||
import com.hithomelabs.CFTunnels.Entity.User;
|
||||
import com.hithomelabs.cftunnels.Entity.User;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
package com.hithomelabs.CFTunnels.Services;
|
||||
package com.hithomelabs.cftunnels.Services;
|
||||
|
||||
import com.hithomelabs.CFTunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.CFTunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.CFTunnels.Exceptions.ExternalServiceException;
|
||||
import com.hithomelabs.CFTunnels.Headers.AuthKeyEmailHeader;
|
||||
import com.hithomelabs.CFTunnels.Models.Config;
|
||||
import com.hithomelabs.CFTunnels.Models.Ingress;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelResponse;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelResult;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelsResponse;
|
||||
import com.hithomelabs.CFTunnels.Repositories.TunnelRepository;
|
||||
import com.hithomelabs.cftunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.cftunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.cftunnels.Exceptions.ExternalServiceException;
|
||||
import com.hithomelabs.cftunnels.Headers.AuthKeyEmailHeader;
|
||||
import com.hithomelabs.cftunnels.Models.Config;
|
||||
import com.hithomelabs.cftunnels.Models.Ingress;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelResponse;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelResult;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelsResponse;
|
||||
import com.hithomelabs.cftunnels.Repositories.TunnelRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
import org.springframework.http.*;
|
||||
@ -1,15 +1,15 @@
|
||||
package com.hithomelabs.CFTunnels.Services;
|
||||
package com.hithomelabs.cftunnels.Services;
|
||||
|
||||
import com.hithomelabs.CFTunnels.Entity.Mapping;
|
||||
import com.hithomelabs.CFTunnels.Entity.Protocol;
|
||||
import com.hithomelabs.CFTunnels.Entity.Request;
|
||||
import com.hithomelabs.CFTunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.CFTunnels.Entity.User;
|
||||
import com.hithomelabs.CFTunnels.Models.Ingress;
|
||||
import com.hithomelabs.CFTunnels.Repositories.MappingRepository;
|
||||
import com.hithomelabs.CFTunnels.Repositories.RequestRepository;
|
||||
import com.hithomelabs.CFTunnels.Repositories.TunnelRepository;
|
||||
import com.hithomelabs.CFTunnels.Repositories.UserRepository;
|
||||
import com.hithomelabs.cftunnels.Entity.Mapping;
|
||||
import com.hithomelabs.cftunnels.Entity.Protocol;
|
||||
import com.hithomelabs.cftunnels.Entity.Request;
|
||||
import com.hithomelabs.cftunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.cftunnels.Entity.User;
|
||||
import com.hithomelabs.cftunnels.Models.Ingress;
|
||||
import com.hithomelabs.cftunnels.Repositories.MappingRepository;
|
||||
import com.hithomelabs.cftunnels.Repositories.RequestRepository;
|
||||
import com.hithomelabs.cftunnels.Repositories.TunnelRepository;
|
||||
import com.hithomelabs.cftunnels.Repositories.UserRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels;
|
||||
package com.hithomelabs.cftunnels;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
@ -1,21 +1,21 @@
|
||||
package com.hithomelabs.CFTunnels.Controllers;
|
||||
package com.hithomelabs.cftunnels.Controllers;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.hithomelabs.CFTunnels.Config.AuthoritiesToGroupMapping;
|
||||
import com.hithomelabs.CFTunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.CFTunnels.Config.RestTemplateConfig;
|
||||
import com.hithomelabs.CFTunnels.Headers.AuthKeyEmailHeader;
|
||||
import com.hithomelabs.CFTunnels.Entity.Request;
|
||||
import com.hithomelabs.CFTunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.CFTunnels.Models.Authorities;
|
||||
import com.hithomelabs.CFTunnels.Models.Config;
|
||||
import com.hithomelabs.CFTunnels.Models.Groups;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelResponse;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelResult;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelsResponse;
|
||||
import com.hithomelabs.CFTunnels.Repositories.UserRepository;
|
||||
import com.hithomelabs.CFTunnels.Services.CloudflareAPIService;
|
||||
import com.hithomelabs.CFTunnels.Services.MappingRequestService;
|
||||
import com.hithomelabs.cftunnels.Config.AuthoritiesToGroupMapping;
|
||||
import com.hithomelabs.cftunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.cftunnels.Config.RestTemplateConfig;
|
||||
import com.hithomelabs.cftunnels.Headers.AuthKeyEmailHeader;
|
||||
import com.hithomelabs.cftunnels.Entity.Request;
|
||||
import com.hithomelabs.cftunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.cftunnels.Models.Authorities;
|
||||
import com.hithomelabs.cftunnels.Models.Config;
|
||||
import com.hithomelabs.cftunnels.Models.Groups;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelResponse;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelResult;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelsResponse;
|
||||
import com.hithomelabs.cftunnels.Repositories.UserRepository;
|
||||
import com.hithomelabs.cftunnels.Services.CloudflareAPIService;
|
||||
import com.hithomelabs.cftunnels.Services.MappingRequestService;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -38,7 +38,7 @@ import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
|
||||
import static com.hithomelabs.CFTunnels.TestUtils.Util.getClassPathDataResource;
|
||||
import static com.hithomelabs.cftunnels.TestUtils.Util.getClassPathDataResource;
|
||||
import static org.hamcrest.core.IsIterableContaining.hasItem;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
@ -207,9 +207,9 @@ class TunnelControllerTest {
|
||||
@Test
|
||||
@DisplayName("should return list of requests")
|
||||
void getAllRequests_Success() throws Exception {
|
||||
List<com.hithomelabs.CFTunnels.Entity.Request> requests = Arrays.asList(
|
||||
createTestRequest(UUID.randomUUID(), com.hithomelabs.CFTunnels.Entity.Request.RequestStatus.PENDING),
|
||||
createTestRequest(UUID.randomUUID(), com.hithomelabs.CFTunnels.Entity.Request.RequestStatus.APPROVED)
|
||||
List<com.hithomelabs.cftunnels.Entity.Request> requests = Arrays.asList(
|
||||
createTestRequest(UUID.randomUUID(), com.hithomelabs.cftunnels.Entity.Request.RequestStatus.PENDING),
|
||||
createTestRequest(UUID.randomUUID(), com.hithomelabs.cftunnels.Entity.Request.RequestStatus.APPROVED)
|
||||
);
|
||||
|
||||
when(mappingRequestService.getAllRequests()).thenReturn(requests);
|
||||
@ -227,11 +227,11 @@ class TunnelControllerTest {
|
||||
@DisplayName("should create mapping request successfully")
|
||||
void createTunnelMappingRequest_Success() throws Exception {
|
||||
UUID tunnelId = UUID.randomUUID();
|
||||
com.hithomelabs.CFTunnels.Entity.Request createdRequest = new com.hithomelabs.CFTunnels.Entity.Request();
|
||||
com.hithomelabs.cftunnels.Entity.Request createdRequest = new com.hithomelabs.cftunnels.Entity.Request();
|
||||
createdRequest.setId(UUID.randomUUID());
|
||||
createdRequest.setStatus(com.hithomelabs.CFTunnels.Entity.Request.RequestStatus.PENDING);
|
||||
createdRequest.setStatus(com.hithomelabs.cftunnels.Entity.Request.RequestStatus.PENDING);
|
||||
|
||||
when(mappingRequestService.createMappingRequest(any(String.class), any(com.hithomelabs.CFTunnels.Models.Ingress.class), any())).thenReturn(createdRequest);
|
||||
when(mappingRequestService.createMappingRequest(any(String.class), any(com.hithomelabs.cftunnels.Models.Ingress.class), any())).thenReturn(createdRequest);
|
||||
|
||||
mockMvc.perform(post("/cloudflare/tunnels/configure/{tunnelId}/requests", tunnelId.toString())
|
||||
.with(oauth2Login().oauth2User(buildOidcUser("developer", Groups.HOMELAB_DEVELOPER)))
|
||||
@ -247,15 +247,15 @@ class TunnelControllerTest {
|
||||
@DisplayName("should approve mapping request successfully")
|
||||
void approveMappingRequest_Success() throws Exception {
|
||||
UUID requestId = UUID.randomUUID();
|
||||
com.hithomelabs.CFTunnels.Entity.User approverUser = new com.hithomelabs.CFTunnels.Entity.User();
|
||||
com.hithomelabs.cftunnels.Entity.User approverUser = new com.hithomelabs.cftunnels.Entity.User();
|
||||
approverUser.setEmail("approver@example.com");
|
||||
approverUser.setName("Approver");
|
||||
|
||||
com.hithomelabs.CFTunnels.Entity.Request approvedRequest = new com.hithomelabs.CFTunnels.Entity.Request();
|
||||
com.hithomelabs.cftunnels.Entity.Request approvedRequest = new com.hithomelabs.cftunnels.Entity.Request();
|
||||
approvedRequest.setId(requestId);
|
||||
approvedRequest.setStatus(com.hithomelabs.CFTunnels.Entity.Request.RequestStatus.APPROVED);
|
||||
approvedRequest.setStatus(com.hithomelabs.cftunnels.Entity.Request.RequestStatus.APPROVED);
|
||||
|
||||
when(mappingRequestService.approveRequest(eq(requestId), any(com.hithomelabs.CFTunnels.Entity.User.class)))
|
||||
when(mappingRequestService.approveRequest(eq(requestId), any(com.hithomelabs.cftunnels.Entity.User.class)))
|
||||
.thenReturn(approvedRequest);
|
||||
when(userRepository.findByEmail("approver@example.com"))
|
||||
.thenReturn(java.util.Optional.of(approverUser));
|
||||
@ -272,11 +272,11 @@ class TunnelControllerTest {
|
||||
@DisplayName("should return 404 when request not found")
|
||||
void approveMappingRequest_NotFound() throws Exception {
|
||||
UUID requestId = UUID.randomUUID();
|
||||
com.hithomelabs.CFTunnels.Entity.User approverUser = new com.hithomelabs.CFTunnels.Entity.User();
|
||||
com.hithomelabs.cftunnels.Entity.User approverUser = new com.hithomelabs.cftunnels.Entity.User();
|
||||
approverUser.setEmail("approver@example.com");
|
||||
approverUser.setName("Approver");
|
||||
|
||||
when(mappingRequestService.approveRequest(eq(requestId), any(com.hithomelabs.CFTunnels.Entity.User.class)))
|
||||
when(mappingRequestService.approveRequest(eq(requestId), any(com.hithomelabs.cftunnels.Entity.User.class)))
|
||||
.thenThrow(new NoSuchElementException("Request not found"));
|
||||
when(userRepository.findByEmail("approver@example.com"))
|
||||
.thenReturn(java.util.Optional.of(approverUser));
|
||||
@ -291,11 +291,11 @@ class TunnelControllerTest {
|
||||
@DisplayName("should return 500 when mapping creation fails")
|
||||
void approveMappingRequest_InternalServerError() throws Exception {
|
||||
UUID requestId = UUID.randomUUID();
|
||||
com.hithomelabs.CFTunnels.Entity.User approverUser = new com.hithomelabs.CFTunnels.Entity.User();
|
||||
com.hithomelabs.cftunnels.Entity.User approverUser = new com.hithomelabs.cftunnels.Entity.User();
|
||||
approverUser.setEmail("approver@example.com");
|
||||
approverUser.setName("Approver");
|
||||
|
||||
when(mappingRequestService.approveRequest(eq(requestId), any(com.hithomelabs.CFTunnels.Entity.User.class)))
|
||||
when(mappingRequestService.approveRequest(eq(requestId), any(com.hithomelabs.cftunnels.Entity.User.class)))
|
||||
.thenThrow(new RuntimeException("Failed to add mapping to Cloudflare"));
|
||||
when(userRepository.findByEmail("approver@example.com"))
|
||||
.thenReturn(java.util.Optional.of(approverUser));
|
||||
@ -310,15 +310,15 @@ class TunnelControllerTest {
|
||||
@DisplayName("should reject mapping request successfully")
|
||||
void rejectMappingRequest_Success() throws Exception {
|
||||
UUID requestId = UUID.randomUUID();
|
||||
com.hithomelabs.CFTunnels.Entity.User rejecterUser = new com.hithomelabs.CFTunnels.Entity.User();
|
||||
com.hithomelabs.cftunnels.Entity.User rejecterUser = new com.hithomelabs.cftunnels.Entity.User();
|
||||
rejecterUser.setEmail("rejecter@example.com");
|
||||
rejecterUser.setName("Rejecter");
|
||||
|
||||
com.hithomelabs.CFTunnels.Entity.Request rejectedRequest = new com.hithomelabs.CFTunnels.Entity.Request();
|
||||
com.hithomelabs.cftunnels.Entity.Request rejectedRequest = new com.hithomelabs.cftunnels.Entity.Request();
|
||||
rejectedRequest.setId(requestId);
|
||||
rejectedRequest.setStatus(com.hithomelabs.CFTunnels.Entity.Request.RequestStatus.REJECTED);
|
||||
rejectedRequest.setStatus(com.hithomelabs.cftunnels.Entity.Request.RequestStatus.REJECTED);
|
||||
|
||||
when(mappingRequestService.rejectRequest(eq(requestId), any(com.hithomelabs.CFTunnels.Entity.User.class)))
|
||||
when(mappingRequestService.rejectRequest(eq(requestId), any(com.hithomelabs.cftunnels.Entity.User.class)))
|
||||
.thenReturn(rejectedRequest);
|
||||
when(userRepository.findByEmail("rejecter@example.com"))
|
||||
.thenReturn(java.util.Optional.of(rejecterUser));
|
||||
@ -335,11 +335,11 @@ class TunnelControllerTest {
|
||||
@DisplayName("should return 404 when rejecting non-existent request")
|
||||
void rejectMappingRequest_NotFound() throws Exception {
|
||||
UUID requestId = UUID.randomUUID();
|
||||
com.hithomelabs.CFTunnels.Entity.User rejecterUser = new com.hithomelabs.CFTunnels.Entity.User();
|
||||
com.hithomelabs.cftunnels.Entity.User rejecterUser = new com.hithomelabs.cftunnels.Entity.User();
|
||||
rejecterUser.setEmail("rejecter@example.com");
|
||||
rejecterUser.setName("Rejecter");
|
||||
|
||||
when(mappingRequestService.rejectRequest(eq(requestId), any(com.hithomelabs.CFTunnels.Entity.User.class)))
|
||||
when(mappingRequestService.rejectRequest(eq(requestId), any(com.hithomelabs.cftunnels.Entity.User.class)))
|
||||
.thenThrow(new NoSuchElementException("Request not found"));
|
||||
when(userRepository.findByEmail("rejecter@example.com"))
|
||||
.thenReturn(java.util.Optional.of(rejecterUser));
|
||||
@ -354,11 +354,11 @@ class TunnelControllerTest {
|
||||
@DisplayName("should return 409 when rejecting already processed request")
|
||||
void rejectMappingRequest_Conflict() throws Exception {
|
||||
UUID requestId = UUID.randomUUID();
|
||||
com.hithomelabs.CFTunnels.Entity.User rejecterUser = new com.hithomelabs.CFTunnels.Entity.User();
|
||||
com.hithomelabs.cftunnels.Entity.User rejecterUser = new com.hithomelabs.cftunnels.Entity.User();
|
||||
rejecterUser.setEmail("rejecter@example.com");
|
||||
rejecterUser.setName("Rejecter");
|
||||
|
||||
when(mappingRequestService.rejectRequest(eq(requestId), any(com.hithomelabs.CFTunnels.Entity.User.class)))
|
||||
when(mappingRequestService.rejectRequest(eq(requestId), any(com.hithomelabs.cftunnels.Entity.User.class)))
|
||||
.thenThrow(new IllegalStateException("Request is not in PENDING status"));
|
||||
when(userRepository.findByEmail("rejecter@example.com"))
|
||||
.thenReturn(java.util.Optional.of(rejecterUser));
|
||||
@ -1,13 +1,13 @@
|
||||
package com.hithomelabs.CFTunnels.Integration;
|
||||
package com.hithomelabs.cftunnels.Integration;
|
||||
|
||||
import com.hithomelabs.CFTunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.CFTunnels.Headers.AuthKeyEmailHeader;
|
||||
import com.hithomelabs.CFTunnels.Models.Config;
|
||||
import com.hithomelabs.CFTunnels.Models.Ingress;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelResponse;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelResult;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelsResponse;
|
||||
import com.hithomelabs.CFTunnels.Services.CloudflareAPIService;
|
||||
import com.hithomelabs.cftunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.cftunnels.Headers.AuthKeyEmailHeader;
|
||||
import com.hithomelabs.cftunnels.Models.Config;
|
||||
import com.hithomelabs.cftunnels.Models.Ingress;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelResponse;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelResult;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelsResponse;
|
||||
import com.hithomelabs.cftunnels.Services.CloudflareAPIService;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Tag;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -1,10 +1,10 @@
|
||||
package com.hithomelabs.CFTunnels.Repositories;
|
||||
package com.hithomelabs.cftunnels.Repositories;
|
||||
|
||||
import com.hithomelabs.CFTunnels.Entity.Mapping;
|
||||
import com.hithomelabs.CFTunnels.Entity.Protocol;
|
||||
import com.hithomelabs.CFTunnels.Entity.Request;
|
||||
import com.hithomelabs.CFTunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.CFTunnels.Entity.User;
|
||||
import com.hithomelabs.cftunnels.Entity.Mapping;
|
||||
import com.hithomelabs.cftunnels.Entity.Protocol;
|
||||
import com.hithomelabs.cftunnels.Entity.Request;
|
||||
import com.hithomelabs.cftunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.cftunnels.Entity.User;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -1,17 +1,17 @@
|
||||
package com.hithomelabs.CFTunnels.Services;
|
||||
package com.hithomelabs.cftunnels.Services;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.hithomelabs.CFTunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.CFTunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.CFTunnels.Exceptions.ExternalServiceException;
|
||||
import com.hithomelabs.CFTunnels.Headers.AuthKeyEmailHeader;
|
||||
import com.hithomelabs.CFTunnels.Models.Config;
|
||||
import com.hithomelabs.CFTunnels.Models.Ingress;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelResponse;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelResult;
|
||||
import com.hithomelabs.CFTunnels.Models.TunnelsResponse;
|
||||
import com.hithomelabs.CFTunnels.Repositories.TunnelRepository;
|
||||
import com.hithomelabs.cftunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.cftunnels.Entity.Tunnel;
|
||||
import com.hithomelabs.cftunnels.Exceptions.ExternalServiceException;
|
||||
import com.hithomelabs.cftunnels.Headers.AuthKeyEmailHeader;
|
||||
import com.hithomelabs.cftunnels.Models.Config;
|
||||
import com.hithomelabs.cftunnels.Models.Ingress;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelResponse;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelResult;
|
||||
import com.hithomelabs.cftunnels.Models.TunnelsResponse;
|
||||
import com.hithomelabs.cftunnels.Repositories.TunnelRepository;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
@ -26,7 +26,7 @@ import java.util.NoSuchElementException;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
import static com.hithomelabs.CFTunnels.TestUtils.Util.getClassPathDataResource;
|
||||
import static com.hithomelabs.cftunnels.TestUtils.Util.getClassPathDataResource;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.hithomelabs.CFTunnels.TestUtils;
|
||||
package com.hithomelabs.cftunnels.TestUtils;
|
||||
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
|
||||
@ -1,22 +0,0 @@
|
||||
package com.hithomelabs.CFTunnels.Config;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@Configuration
|
||||
public class RestTemplateConfig {
|
||||
|
||||
@Bean
|
||||
public RestTemplate restTemplate() {
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
|
||||
converter.setObjectMapper(new ObjectMapper().enable(SerializationFeature.WRAP_ROOT_VALUE).setSerializationInclusion(JsonInclude.Include.NON_NULL));
|
||||
restTemplate.getMessageConverters().add(0, converter);
|
||||
return restTemplate;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user