diff --git a/.idea/misc.xml b/.idea/misc.xml index 3b63d6d..e63ec06 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + diff --git a/server/src/test/java/org/hyperskill/community/flashcards/TestFlashcardsApplication.java b/server/src/test/java/org/hyperskill/community/flashcards/TestFlashcardsApplication.java index 93e36a7..fc4bff7 100644 --- a/server/src/test/java/org/hyperskill/community/flashcards/TestFlashcardsApplication.java +++ b/server/src/test/java/org/hyperskill/community/flashcards/TestFlashcardsApplication.java @@ -1,23 +1,13 @@ package org.hyperskill.community.flashcards; import org.springframework.boot.SpringApplication; -import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.context.annotation.Bean; -import org.testcontainers.containers.MongoDBContainer; -import org.testcontainers.utility.DockerImageName; -@TestConfiguration(proxyBeanMethods = false) public class TestFlashcardsApplication { - @Bean - @ServiceConnection - MongoDBContainer mongoDbContainer() { - return new MongoDBContainer(DockerImageName.parse("mongo:latest")); - } - public static void main(String[] args) { - SpringApplication.from(FlashcardsApplication::main).with(TestFlashcardsApplication.class).run(args); + SpringApplication + .from(FlashcardsApplication::main) + .with(TestFlashcardsApplication.class) + .run(args); } - } diff --git a/server/src/test/java/org/hyperskill/community/flashcards/TestMongoConfiguration.java b/server/src/test/java/org/hyperskill/community/flashcards/TestMongoConfiguration.java new file mode 100644 index 0000000..dd88c85 --- /dev/null +++ b/server/src/test/java/org/hyperskill/community/flashcards/TestMongoConfiguration.java @@ -0,0 +1,20 @@ +package org.hyperskill.community.flashcards; + +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.context.annotation.Bean; +import org.testcontainers.containers.MongoDBContainer; + +import java.util.List; + +@TestConfiguration +public class TestMongoConfiguration { + + @Bean + @ServiceConnection + public MongoDBContainer mongoDBContainer() { + var container = new MongoDBContainer("mongo:latest"); + container.setPortBindings(List.of("27017:27017")); + return container; + } +} diff --git a/server/src/test/java/org/hyperskill/community/flashcards/security/RegisterServerSecurityIT.java b/server/src/test/java/org/hyperskill/community/flashcards/security/RegisterServerSecurityIT.java index a12b306..7fac298 100644 --- a/server/src/test/java/org/hyperskill/community/flashcards/security/RegisterServerSecurityIT.java +++ b/server/src/test/java/org/hyperskill/community/flashcards/security/RegisterServerSecurityIT.java @@ -1,53 +1,28 @@ package org.hyperskill.community.flashcards.security; import com.fasterxml.jackson.databind.ObjectMapper; +import org.hyperskill.community.flashcards.TestMongoConfiguration; import org.hyperskill.community.flashcards.registration.UserDto; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.http.MediaType; -import org.springframework.test.context.aot.DisabledInAotMode; import org.springframework.test.web.servlet.MockMvc; -import org.testcontainers.containers.MongoDBContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.utility.DockerImageName; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -@SpringBootTest -@Testcontainers +@SpringBootTest(classes = TestMongoConfiguration.class) @AutoConfigureMockMvc -@Disabled // must fix test container connections... -@DisabledInAotMode // bug in Spring 3.2 @MockBean does not work in AOT mode (https://github.com/spring-projects/spring-boot/issues/36997) class RegisterServerSecurityIT { @Autowired MockMvc mockMvc; - @Container - @ServiceConnection - static MongoDBContainer mongoDbContainer = new MongoDBContainer(DockerImageName.parse("mongo:latest")); - @Autowired ObjectMapper objectMapper; - @BeforeAll - static void setup() { - mongoDbContainer.start(); - } - - @AfterAll - static void tearDown() { - mongoDbContainer.stop(); - } - @Test void registerUnauthenticatedValidJson_AddsUser() throws Exception { mockMvc.perform(post("/api/register")