diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 1885003..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,4 +0,0 @@
-FROM openjdk:17-jdk
-ARG JAR_FILE=target/*.jar
-COPY ${JAR_FILE} app.jar
-ENTRYPOINT ["java","-jar","/app.jar"]
\ No newline at end of file
diff --git a/cftunnels-service/Dockerfile b/cftunnels-service/Dockerfile
new file mode 100644
index 0000000..e6820da
--- /dev/null
+++ b/cftunnels-service/Dockerfile
@@ -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"]
diff --git a/cftunnels-service/build.gradle b/cftunnels-service/build.gradle
new file mode 100644
index 0000000..a17855f
--- /dev/null
+++ b/cftunnels-service/build.gradle
@@ -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
+ }
+}
diff --git a/src/main/java/com/hithomelabs/CFTunnels/CfTunnelsApplication.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/CfTunnelsApplication.java
similarity index 93%
rename from src/main/java/com/hithomelabs/CFTunnels/CfTunnelsApplication.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/CfTunnelsApplication.java
index 32ef9f9..0e71b1b 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/CfTunnelsApplication.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/CfTunnelsApplication.java
@@ -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 Cloudflare Tunnel Documentation
* @since 1.0.0
*/
-@SpringBootApplication
+@SpringBootApplication(scanBasePackages = "com.hithomelabs")
public class CfTunnelsApplication {
/**
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Config/AuthoritiesToGroupMapping.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/AuthoritiesToGroupMapping.java
similarity index 88%
rename from src/main/java/com/hithomelabs/CFTunnels/Config/AuthoritiesToGroupMapping.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/AuthoritiesToGroupMapping.java
index b323700..419a2a8 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Config/AuthoritiesToGroupMapping.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/AuthoritiesToGroupMapping.java
@@ -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;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Config/CloudflareConfig.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/CloudflareConfig.java
similarity index 97%
rename from src/main/java/com/hithomelabs/CFTunnels/Config/CloudflareConfig.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/CloudflareConfig.java
index 8d880e3..f503deb 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Config/CloudflareConfig.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/CloudflareConfig.java
@@ -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;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Config/CustomOidcUserConfiguration.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/CustomOidcUserConfiguration.java
similarity index 97%
rename from src/main/java/com/hithomelabs/CFTunnels/Config/CustomOidcUserConfiguration.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/CustomOidcUserConfiguration.java
index 22a4e64..9024866 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Config/CustomOidcUserConfiguration.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/CustomOidcUserConfiguration.java
@@ -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;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Config/OpenApiConfig.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/OpenApiConfig.java
similarity index 98%
rename from src/main/java/com/hithomelabs/CFTunnels/Config/OpenApiConfig.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/OpenApiConfig.java
index 72639fe..836b676 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Config/OpenApiConfig.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/OpenApiConfig.java
@@ -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;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Config/Security/SecuirtyConfig.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/Security/SecuirtyConfig.java
similarity index 92%
rename from src/main/java/com/hithomelabs/CFTunnels/Config/Security/SecuirtyConfig.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/Security/SecuirtyConfig.java
index 5cd6646..6dd3073 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Config/Security/SecuirtyConfig.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Config/Security/SecuirtyConfig.java
@@ -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;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Controllers/TunnelController.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Controllers/TunnelController.java
similarity index 95%
rename from src/main/java/com/hithomelabs/CFTunnels/Controllers/TunnelController.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Controllers/TunnelController.java
index d4e3962..c6ea6e8 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Controllers/TunnelController.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Controllers/TunnelController.java
@@ -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;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Entity/Mapping.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Mapping.java
similarity index 98%
rename from src/main/java/com/hithomelabs/CFTunnels/Entity/Mapping.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Mapping.java
index e89f674..f3b8c0b 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Entity/Mapping.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Mapping.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Entity;
+package com.hithomelabs.cftunnels.Entity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Entity/Protocol.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Protocol.java
similarity index 96%
rename from src/main/java/com/hithomelabs/CFTunnels/Entity/Protocol.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Protocol.java
index 0932524..6f82403 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Entity/Protocol.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Protocol.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Entity;
+package com.hithomelabs.cftunnels.Entity;
/**
* Enum representing supported protocols for Cloudflare Tunnel ingress mappings.
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Entity/Request.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Request.java
similarity index 98%
rename from src/main/java/com/hithomelabs/CFTunnels/Entity/Request.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Request.java
index c66bcb4..b32f64b 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Entity/Request.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Request.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Entity;
+package com.hithomelabs.cftunnels.Entity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Entity/Tunnel.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Tunnel.java
similarity index 97%
rename from src/main/java/com/hithomelabs/CFTunnels/Entity/Tunnel.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Tunnel.java
index 8892caf..bfd043c 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Entity/Tunnel.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/Tunnel.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Entity;
+package com.hithomelabs.cftunnels.Entity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Entity/User.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/User.java
similarity index 97%
rename from src/main/java/com/hithomelabs/CFTunnels/Entity/User.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/User.java
index eb1336b..38ef5dc 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Entity/User.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Entity/User.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Entity;
+package com.hithomelabs.cftunnels.Entity;
import jakarta.persistence.*;
import jakarta.validation.constraints.Size;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Exceptions/ExternalServiceException.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Exceptions/ExternalServiceException.java
similarity index 75%
rename from src/main/java/com/hithomelabs/CFTunnels/Exceptions/ExternalServiceException.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Exceptions/ExternalServiceException.java
index 2cf144a..681b5ad 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Exceptions/ExternalServiceException.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Exceptions/ExternalServiceException.java
@@ -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); }
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Headers/AuthKeyEmailHeader.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Headers/AuthKeyEmailHeader.java
similarity index 85%
rename from src/main/java/com/hithomelabs/CFTunnels/Headers/AuthKeyEmailHeader.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Headers/AuthKeyEmailHeader.java
index 8252c9c..ca17233 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Headers/AuthKeyEmailHeader.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Headers/AuthKeyEmailHeader.java
@@ -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;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Models/Authorities.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Authorities.java
similarity index 86%
rename from src/main/java/com/hithomelabs/CFTunnels/Models/Authorities.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Authorities.java
index f26a17b..db8a162 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Models/Authorities.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Authorities.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Models;
+package com.hithomelabs.cftunnels.Models;
public class Authorities {
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Models/Config.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Config.java
similarity index 95%
rename from src/main/java/com/hithomelabs/CFTunnels/Models/Config.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Config.java
index dd9196b..85ad76e 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Models/Config.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Config.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Models;
+package com.hithomelabs.cftunnels.Models;
import com.fasterxml.jackson.annotation.*;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Models/Groups.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Groups.java
similarity index 87%
rename from src/main/java/com/hithomelabs/CFTunnels/Models/Groups.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Groups.java
index f7c213d..765df9b 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Models/Groups.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Groups.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Models;
+package com.hithomelabs.cftunnels.Models;
public class Groups {
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Models/Ingress.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Ingress.java
similarity index 98%
rename from src/main/java/com/hithomelabs/CFTunnels/Models/Ingress.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Ingress.java
index 05d22ab..6c3c51e 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Models/Ingress.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Ingress.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Models;
+package com.hithomelabs.cftunnels.Models;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Models/Result.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Result.java
similarity index 96%
rename from src/main/java/com/hithomelabs/CFTunnels/Models/Result.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Result.java
index a7930fc..b1189c3 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Models/Result.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/Result.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Models;
+package com.hithomelabs.cftunnels.Models;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Models/TunnelResponse.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/TunnelResponse.java
similarity index 90%
rename from src/main/java/com/hithomelabs/CFTunnels/Models/TunnelResponse.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/TunnelResponse.java
index f5a4fb4..e604a11 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Models/TunnelResponse.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/TunnelResponse.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Models;
+package com.hithomelabs.cftunnels.Models;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Models/TunnelResult.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/TunnelResult.java
similarity index 89%
rename from src/main/java/com/hithomelabs/CFTunnels/Models/TunnelResult.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/TunnelResult.java
index 5c5e7b6..72e7293 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Models/TunnelResult.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/TunnelResult.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Models;
+package com.hithomelabs.cftunnels.Models;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Models/TunnelsResponse.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/TunnelsResponse.java
similarity index 92%
rename from src/main/java/com/hithomelabs/CFTunnels/Models/TunnelsResponse.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/TunnelsResponse.java
index 0a0af90..a3c5eac 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Models/TunnelsResponse.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Models/TunnelsResponse.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.Models;
+package com.hithomelabs.cftunnels.Models;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Repositories/MappingRepository.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/MappingRepository.java
similarity index 69%
rename from src/main/java/com/hithomelabs/CFTunnels/Repositories/MappingRepository.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/MappingRepository.java
index 73b469c..7b5869f 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Repositories/MappingRepository.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/MappingRepository.java
@@ -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;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Repositories/RequestRepository.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/RequestRepository.java
similarity index 90%
rename from src/main/java/com/hithomelabs/CFTunnels/Repositories/RequestRepository.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/RequestRepository.java
index 0b89b5c..1b8049f 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Repositories/RequestRepository.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/RequestRepository.java
@@ -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;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Repositories/TunnelRepository.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/TunnelRepository.java
similarity index 72%
rename from src/main/java/com/hithomelabs/CFTunnels/Repositories/TunnelRepository.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/TunnelRepository.java
index 719d3ce..f08d803 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Repositories/TunnelRepository.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/TunnelRepository.java
@@ -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;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Repositories/UserRepository.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/UserRepository.java
similarity index 75%
rename from src/main/java/com/hithomelabs/CFTunnels/Repositories/UserRepository.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/UserRepository.java
index a1038a7..ecbd83c 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Repositories/UserRepository.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Repositories/UserRepository.java
@@ -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;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Services/CloudflareAPIService.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Services/CloudflareAPIService.java
similarity index 92%
rename from src/main/java/com/hithomelabs/CFTunnels/Services/CloudflareAPIService.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Services/CloudflareAPIService.java
index 6d0084a..35ff374 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Services/CloudflareAPIService.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Services/CloudflareAPIService.java
@@ -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.*;
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Services/MappingRequestService.java b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Services/MappingRequestService.java
similarity index 89%
rename from src/main/java/com/hithomelabs/CFTunnels/Services/MappingRequestService.java
rename to cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Services/MappingRequestService.java
index ba86144..22c8566 100644
--- a/src/main/java/com/hithomelabs/CFTunnels/Services/MappingRequestService.java
+++ b/cftunnels-service/src/main/java/com/hithomelabs/cftunnels/Services/MappingRequestService.java
@@ -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;
diff --git a/src/main/resources/application-ci.properties b/cftunnels-service/src/main/resources/application-ci.properties
similarity index 100%
rename from src/main/resources/application-ci.properties
rename to cftunnels-service/src/main/resources/application-ci.properties
diff --git a/src/main/resources/application-integration.properties b/cftunnels-service/src/main/resources/application-integration.properties
similarity index 100%
rename from src/main/resources/application-integration.properties
rename to cftunnels-service/src/main/resources/application-integration.properties
diff --git a/src/main/resources/application-local.properties b/cftunnels-service/src/main/resources/application-local.properties
similarity index 100%
rename from src/main/resources/application-local.properties
rename to cftunnels-service/src/main/resources/application-local.properties
diff --git a/src/main/resources/application-prod.properties b/cftunnels-service/src/main/resources/application-prod.properties
similarity index 100%
rename from src/main/resources/application-prod.properties
rename to cftunnels-service/src/main/resources/application-prod.properties
diff --git a/src/main/resources/application-test.properties b/cftunnels-service/src/main/resources/application-test.properties
similarity index 100%
rename from src/main/resources/application-test.properties
rename to cftunnels-service/src/main/resources/application-test.properties
diff --git a/src/main/resources/application.properties b/cftunnels-service/src/main/resources/application.properties
similarity index 100%
rename from src/main/resources/application.properties
rename to cftunnels-service/src/main/resources/application.properties
diff --git a/src/main/resources/schema.sql b/cftunnels-service/src/main/resources/schema.sql
similarity index 100%
rename from src/main/resources/schema.sql
rename to cftunnels-service/src/main/resources/schema.sql
diff --git a/src/test/java/com/hithomelabs/CFTunnels/CfTunnelsApplicationTests.java b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/CfTunnelsApplicationTests.java
similarity index 84%
rename from src/test/java/com/hithomelabs/CFTunnels/CfTunnelsApplicationTests.java
rename to cftunnels-service/src/test/java/com/hithomelabs/cftunnels/CfTunnelsApplicationTests.java
index 721ec19..26a3076 100644
--- a/src/test/java/com/hithomelabs/CFTunnels/CfTunnelsApplicationTests.java
+++ b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/CfTunnelsApplicationTests.java
@@ -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;
diff --git a/src/test/java/com/hithomelabs/CFTunnels/Controllers/TunnelControllerTest.java b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Controllers/TunnelControllerTest.java
similarity index 89%
rename from src/test/java/com/hithomelabs/CFTunnels/Controllers/TunnelControllerTest.java
rename to cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Controllers/TunnelControllerTest.java
index e2ad575..9d49582 100644
--- a/src/test/java/com/hithomelabs/CFTunnels/Controllers/TunnelControllerTest.java
+++ b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Controllers/TunnelControllerTest.java
@@ -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 requests = Arrays.asList(
- createTestRequest(UUID.randomUUID(), com.hithomelabs.CFTunnels.Entity.Request.RequestStatus.PENDING),
- createTestRequest(UUID.randomUUID(), com.hithomelabs.CFTunnels.Entity.Request.RequestStatus.APPROVED)
+ List 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));
diff --git a/src/test/java/com/hithomelabs/CFTunnels/Integration/CoudflareApiIntegrationTest.java b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Integration/CoudflareApiIntegrationTest.java
similarity index 89%
rename from src/test/java/com/hithomelabs/CFTunnels/Integration/CoudflareApiIntegrationTest.java
rename to cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Integration/CoudflareApiIntegrationTest.java
index 0ceb02b..769b98a 100644
--- a/src/test/java/com/hithomelabs/CFTunnels/Integration/CoudflareApiIntegrationTest.java
+++ b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Integration/CoudflareApiIntegrationTest.java
@@ -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;
diff --git a/src/test/java/com/hithomelabs/CFTunnels/Repositories/RequestRepositoryTest.java b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Repositories/RequestRepositoryTest.java
similarity index 95%
rename from src/test/java/com/hithomelabs/CFTunnels/Repositories/RequestRepositoryTest.java
rename to cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Repositories/RequestRepositoryTest.java
index 257c315..5c42de7 100644
--- a/src/test/java/com/hithomelabs/CFTunnels/Repositories/RequestRepositoryTest.java
+++ b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Repositories/RequestRepositoryTest.java
@@ -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;
diff --git a/src/test/java/com/hithomelabs/CFTunnels/Services/CloudflareAPIServiceTest.java b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Services/CloudflareAPIServiceTest.java
similarity index 93%
rename from src/test/java/com/hithomelabs/CFTunnels/Services/CloudflareAPIServiceTest.java
rename to cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Services/CloudflareAPIServiceTest.java
index 67f7349..bf4a304 100644
--- a/src/test/java/com/hithomelabs/CFTunnels/Services/CloudflareAPIServiceTest.java
+++ b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/Services/CloudflareAPIServiceTest.java
@@ -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;
diff --git a/src/test/java/com/hithomelabs/CFTunnels/TestUtils/Util.java b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/TestUtils/Util.java
similarity index 90%
rename from src/test/java/com/hithomelabs/CFTunnels/TestUtils/Util.java
rename to cftunnels-service/src/test/java/com/hithomelabs/cftunnels/TestUtils/Util.java
index a5f8c36..de86241 100644
--- a/src/test/java/com/hithomelabs/CFTunnels/TestUtils/Util.java
+++ b/cftunnels-service/src/test/java/com/hithomelabs/cftunnels/TestUtils/Util.java
@@ -1,4 +1,4 @@
-package com.hithomelabs.CFTunnels.TestUtils;
+package com.hithomelabs.cftunnels.TestUtils;
import org.springframework.core.io.ClassPathResource;
diff --git a/src/test/resources/data/tunnelResponseLargeIngress.json b/cftunnels-service/src/test/resources/data/tunnelResponseLargeIngress.json
similarity index 100%
rename from src/test/resources/data/tunnelResponseLargeIngress.json
rename to cftunnels-service/src/test/resources/data/tunnelResponseLargeIngress.json
diff --git a/src/test/resources/data/tunnelResponseSmallIngress.json b/cftunnels-service/src/test/resources/data/tunnelResponseSmallIngress.json
similarity index 100%
rename from src/test/resources/data/tunnelResponseSmallIngress.json
rename to cftunnels-service/src/test/resources/data/tunnelResponseSmallIngress.json
diff --git a/src/test/resources/docker-compose.yaml b/cftunnels-service/src/test/resources/docker-compose.yaml
similarity index 100%
rename from src/test/resources/docker-compose.yaml
rename to cftunnels-service/src/test/resources/docker-compose.yaml
diff --git a/src/main/java/com/hithomelabs/CFTunnels/Config/RestTemplateConfig.java b/src/main/java/com/hithomelabs/CFTunnels/Config/RestTemplateConfig.java
deleted file mode 100644
index 2edcdfc..0000000
--- a/src/main/java/com/hithomelabs/CFTunnels/Config/RestTemplateConfig.java
+++ /dev/null
@@ -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;
- }
-}