diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c3c0bc83..b3587a22 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -6,19 +6,19 @@ on:
- "**"
jobs:
build:
- name: Maven Build
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
+ name: Maven Build
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
- - name: Setup Java 17
- uses: actions/setup-java@v3
- with:
- java-version: 17
- distribution: "temurin"
+ - name: Setup Java 17
+ uses: actions/setup-java@v3
+ with:
+ java-version: 17
+ distribution: "temurin"
- - name: Build with Maven
- run: mvn verify --file skill-tree/pom.xml -Pgit-build-profile -Dskip-tests=true
+ - name: Build with Maven
+ run: mvn verify --file skill-tree/pom.xml -P git-build-profile -D skip-tests=true
unit-test:
name: Unit Tests
@@ -48,4 +48,4 @@ jobs:
distribution: "temurin"
- name: Integration Test
- run: mvn verify --file skill-tree/pom.xml -Dskip-ut=true
+ run: mvn verify --file skill-tree/pom.xml -D skip-ut=true
diff --git a/skill-tree/pom.xml b/skill-tree/pom.xml
index c840309b..d06b399c 100644
--- a/skill-tree/pom.xml
+++ b/skill-tree/pom.xml
@@ -97,17 +97,17 @@
-
- io.jsonwebtoken
- jjwt
- 0.9.1
-
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+
-
- javax.xml.bind
- jaxb-api
- 2.3.1
-
+
+ javax.xml.bind
+ jaxb-api
+ 2.3.1
+
org.springframework.boot
@@ -198,8 +198,8 @@
-
-
+
+
@@ -231,7 +231,7 @@
${skip-tests}
- **/integration/*.java
+ */integration/**/*.java
diff --git a/skill-tree/src/test/java/com/RDS/skilltree/TestContainerManager.java b/skill-tree/src/test/java/com/RDS/skilltree/TestContainerManager.java
new file mode 100644
index 00000000..e5609bc1
--- /dev/null
+++ b/skill-tree/src/test/java/com/RDS/skilltree/TestContainerManager.java
@@ -0,0 +1,24 @@
+package com.RDS.skilltree;
+
+import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MySQLContainer;
+
+public abstract class TestContainerManager {
+ @ServiceConnection static final MySQLContainer mysqlContainer;
+
+ static {
+ mysqlContainer =
+ new MySQLContainer("mysql:8.1")
+ .withDatabaseName("skilltree-test")
+ .withUsername("root")
+ .withPassword("password");
+ mysqlContainer.start();
+ }
+
+ @DynamicPropertySource
+ static void configureTestProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.jpa.hibernate.ddl-auto", () -> "update");
+ }
+}
diff --git a/skill-tree/src/test/java/com/RDS/skilltree/skills/CreateSkillIntegrationTest.java b/skill-tree/src/test/java/com/RDS/skilltree/integration/skills/CreateSkillIntegrationTest.java
similarity index 94%
rename from skill-tree/src/test/java/com/RDS/skilltree/skills/CreateSkillIntegrationTest.java
rename to skill-tree/src/test/java/com/RDS/skilltree/integration/skills/CreateSkillIntegrationTest.java
index 4c2f56d9..714fd33d 100644
--- a/skill-tree/src/test/java/com/RDS/skilltree/skills/CreateSkillIntegrationTest.java
+++ b/skill-tree/src/test/java/com/RDS/skilltree/integration/skills/CreateSkillIntegrationTest.java
@@ -1,9 +1,10 @@
-package com.RDS.skilltree.skills;
+package com.RDS.skilltree.integration.skills;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import com.RDS.skilltree.TestContainerManager;
import com.RDS.skilltree.dtos.RdsGetUserDetailsResDto;
import com.RDS.skilltree.enums.SkillTypeEnum;
import com.RDS.skilltree.models.Skill;
@@ -16,6 +17,7 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
@@ -28,10 +30,12 @@
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import utils.WithCustomMockUser;
-@SpringBootTest
+// @SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
-public class CreateSkillIntegrationTest {
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
+public class CreateSkillIntegrationTest extends TestContainerManager {
@Autowired private MockMvc mockMvc;
@Autowired private SkillRepository skillRepository;
@MockBean private RdsService rdsService;
@@ -83,7 +87,6 @@ public void createSkill_validRequest_shouldCreateSkill() throws Exception {
.andExpect(MockMvcResultMatchers.jsonPath("$.type").value("ATOMIC"));
assert skillRepository.existsByName("Java");
- ;
}
@Test
diff --git a/skill-tree/src/test/java/com/RDS/skilltree/skills/GetAllSkillRequestIntegrationTest.java b/skill-tree/src/test/java/com/RDS/skilltree/integration/skills/GetAllSkillRequestIntegrationTest.java
similarity index 96%
rename from skill-tree/src/test/java/com/RDS/skilltree/skills/GetAllSkillRequestIntegrationTest.java
rename to skill-tree/src/test/java/com/RDS/skilltree/integration/skills/GetAllSkillRequestIntegrationTest.java
index 90dbcd91..388dde29 100644
--- a/skill-tree/src/test/java/com/RDS/skilltree/skills/GetAllSkillRequestIntegrationTest.java
+++ b/skill-tree/src/test/java/com/RDS/skilltree/integration/skills/GetAllSkillRequestIntegrationTest.java
@@ -1,9 +1,10 @@
-package com.RDS.skilltree.skills;
+package com.RDS.skilltree.integration.skills;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import com.RDS.skilltree.TestContainerManager;
import com.RDS.skilltree.dtos.RdsGetUserDetailsResDto;
import com.RDS.skilltree.enums.SkillTypeEnum;
import com.RDS.skilltree.enums.UserSkillStatusEnum;
@@ -18,7 +19,10 @@
import com.RDS.skilltree.viewmodels.RdsUserViewModel;
import io.jsonwebtoken.Claims;
import jakarta.servlet.http.Cookie;
-import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
@@ -32,10 +36,12 @@
import utils.CustomResultMatchers;
import utils.WithCustomMockUser;
-@SpringBootTest
+// @SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
-public class GetAllSkillRequestIntegrationTest {
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
+public class GetAllSkillRequestIntegrationTest extends TestContainerManager {
@Autowired private MockMvc mockMvc;
@Autowired private UserSkillRepository userSkillRepository;
diff --git a/skill-tree/src/test/java/com/RDS/skilltree/skills/GetAllSkillsIntegrationTest.java b/skill-tree/src/test/java/com/RDS/skilltree/integration/skills/GetAllSkillsIntegrationTest.java
similarity index 90%
rename from skill-tree/src/test/java/com/RDS/skilltree/skills/GetAllSkillsIntegrationTest.java
rename to skill-tree/src/test/java/com/RDS/skilltree/integration/skills/GetAllSkillsIntegrationTest.java
index cca60e09..44b7866f 100644
--- a/skill-tree/src/test/java/com/RDS/skilltree/skills/GetAllSkillsIntegrationTest.java
+++ b/skill-tree/src/test/java/com/RDS/skilltree/integration/skills/GetAllSkillsIntegrationTest.java
@@ -1,5 +1,6 @@
-package com.RDS.skilltree.skills;
+package com.RDS.skilltree.integration.skills;
+import com.RDS.skilltree.TestContainerManager;
import com.RDS.skilltree.enums.SkillTypeEnum;
import com.RDS.skilltree.models.Skill;
import com.RDS.skilltree.repositories.SkillRepository;
@@ -9,6 +10,7 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
@@ -20,10 +22,12 @@
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import utils.WithCustomMockUser;
-@SpringBootTest
+// @SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
-public class GetAllSkillsIntegrationTest {
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
+public class GetAllSkillsIntegrationTest extends TestContainerManager {
@Autowired private SkillService skillService;
diff --git a/skill-tree/src/test/java/com/RDS/skilltree/skills/SkillRequestActionIntegrationTest.java b/skill-tree/src/test/java/com/RDS/skilltree/integration/skills/SkillRequestActionIntegrationTest.java
similarity index 96%
rename from skill-tree/src/test/java/com/RDS/skilltree/skills/SkillRequestActionIntegrationTest.java
rename to skill-tree/src/test/java/com/RDS/skilltree/integration/skills/SkillRequestActionIntegrationTest.java
index 1510741c..24bb58af 100644
--- a/skill-tree/src/test/java/com/RDS/skilltree/skills/SkillRequestActionIntegrationTest.java
+++ b/skill-tree/src/test/java/com/RDS/skilltree/integration/skills/SkillRequestActionIntegrationTest.java
@@ -1,9 +1,10 @@
-package com.RDS.skilltree.skills;
+package com.RDS.skilltree.integration.skills;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import com.RDS.skilltree.TestContainerManager;
import com.RDS.skilltree.dtos.RdsGetUserDetailsResDto;
import com.RDS.skilltree.dtos.SkillRequestActionRequestDto;
import com.RDS.skilltree.enums.SkillTypeEnum;
@@ -17,10 +18,7 @@
import com.RDS.skilltree.viewmodels.RdsUserViewModel;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.jsonwebtoken.Claims;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
@@ -33,10 +31,12 @@
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import utils.WithCustomMockUser;
-@SpringBootTest
+// @SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
-public class SkillRequestActionIntegrationTest {
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
+public class SkillRequestActionIntegrationTest extends TestContainerManager {
@Autowired private MockMvc mockMvc;
@Autowired private UserSkillRepository userSkillRepository;
@Autowired private SkillRepository skillRepository;
diff --git a/skill-tree/src/test/java/com/RDS/skilltree/utils/UUIDValidationInterceptorTest.java b/skill-tree/src/test/java/com/RDS/skilltree/unit/utils/UUIDValidationInterceptorTest.java
similarity index 95%
rename from skill-tree/src/test/java/com/RDS/skilltree/utils/UUIDValidationInterceptorTest.java
rename to skill-tree/src/test/java/com/RDS/skilltree/unit/utils/UUIDValidationInterceptorTest.java
index f17e6cc1..88a02028 100644
--- a/skill-tree/src/test/java/com/RDS/skilltree/utils/UUIDValidationInterceptorTest.java
+++ b/skill-tree/src/test/java/com/RDS/skilltree/unit/utils/UUIDValidationInterceptorTest.java
@@ -1,10 +1,11 @@
-package com.RDS.skilltree.utils;
+package com.RDS.skilltree.unit.utils;
+import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.when;
import com.RDS.skilltree.exceptions.InvalidParameterException;
+import com.RDS.skilltree.utils.UUIDValidationInterceptor;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.util.UUID;