diff --git a/.forge/role-developer-reverify-001-attempt-2-run-2442ff580a26.md b/.forge/role-developer-reverify-001-attempt-2-run-2442ff580a26.md new file mode 100644 index 0000000..5d2d619 --- /dev/null +++ b/.forge/role-developer-reverify-001-attempt-2-run-2442ff580a26.md @@ -0,0 +1,3 @@ +# role-developer-reverify-001-attempt-2-run-2442ff580a26 + +Forge 이슈 작업 브랜치 `forge/role-developer-reverify-001-attempt-2-run-2442ff580a26`. diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..717d32f --- /dev/null +++ b/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 3.2.5 + + + + com.example + spring-minimal + 1.0.0 + jar + spring-minimal + Spring Boot Minimal Application + + + 17 + 17 + 17 + UTF-8 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/src/main/java/com/example/SpringMinimalApplication.java b/src/main/java/com/example/SpringMinimalApplication.java new file mode 100644 index 0000000..74982c8 --- /dev/null +++ b/src/main/java/com/example/SpringMinimalApplication.java @@ -0,0 +1,12 @@ +package com.example; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringMinimalApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringMinimalApplication.class, args); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/controller/HealthController.java b/src/main/java/com/example/controller/HealthController.java new file mode 100644 index 0000000..54812a6 --- /dev/null +++ b/src/main/java/com/example/controller/HealthController.java @@ -0,0 +1,16 @@ +package com.example.controller; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +@RestController +public class HealthController { + + @GetMapping("/health") + public ResponseEntity> health() { + return ResponseEntity.ok(Map.of("status", "UP")); + } +} \ No newline at end of file diff --git a/src/test/java/com/example/SpringMinimalApplicationTests.java b/src/test/java/com/example/SpringMinimalApplicationTests.java new file mode 100644 index 0000000..1151e59 --- /dev/null +++ b/src/test/java/com/example/SpringMinimalApplicationTests.java @@ -0,0 +1,13 @@ +package com.example; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class SpringMinimalApplicationTests { + + @Test + void contextLoads() { + // Verifies that the Spring context loads successfully + } +} \ No newline at end of file diff --git a/src/test/java/com/example/controller/HealthControllerTest.java b/src/test/java/com/example/controller/HealthControllerTest.java new file mode 100644 index 0000000..9a5dcb5 --- /dev/null +++ b/src/test/java/com/example/controller/HealthControllerTest.java @@ -0,0 +1,38 @@ +package com.example.controller; + +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.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.MvcResult; + +import static org.hamcrest.Matchers.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +@SpringBootTest +@AutoConfigureMockMvc +class HealthControllerTest { + + @Autowired + private MockMvc mockMvc; + + @Test + void healthEndpointReturnsUp() throws Exception { + mockMvc.perform(get("/health")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.status", is("UP"))); + } + + @Test + void healthEndpointReturnsJson() throws Exception { + MvcResult result = mockMvc.perform(get("/health")) + .andExpect(status().isOk()) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + org.assertj.core.api.Assertions.assertThat(content) + .contains("{\"status\":\"UP\"}"); + } +} \ No newline at end of file