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;