From b18ee8c6256a36999824a7c6f44d93ba4e6c4552 Mon Sep 17 00:00:00 2001 From: tben1981 Date: Tue, 2 Dec 2025 01:37:52 +0800 Subject: [PATCH] Initial commit --- .gitignore | 35 +++++++++ README.md | 25 +++++++ pom.xml | 51 +++++++++++++ .../kodekloud/hello_demo/HelloController.java | 14 ++++ .../kodekloud/hello_demo/MainApplication.java | 13 ++++ src/main/resources/application.properties | 2 + .../hello_demo/HelloControllerTests.java | 74 +++++++++++++++++++ 7 files changed, 214 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 pom.xml create mode 100644 src/main/java/com/kodekloud/hello_demo/HelloController.java create mode 100644 src/main/java/com/kodekloud/hello_demo/MainApplication.java create mode 100644 src/main/resources/application.properties create mode 100644 src/test/java/com/kodekloud/hello_demo/HelloControllerTests.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eafe78a --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +HELP.md +target/ +.mvn/ +mvnw +mvnw.cmd +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..acd04e0 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# Springboot Hello World App +This repository is used for Jenkins Training Demo + +### Build JAR +``` +mvn clean package -DskipTests=true +``` + +### Unit Test Cases +``` +mvn test +``` +- Total 6 test cases, out of which + - 5 test cases will pass and + - 1 test case fails! + +### Deploy/Run +``` +java -jar target/hello-demo-*.jar +``` + +### Integration Testing (Return 200 OK response) +``` +curl -s http://localhost:6767/hello" +``` diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..6e21fe9 --- /dev/null +++ b/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.3.2 + + + com.kodekloud + hello-demo + 0.0.1-SNAPSHOT + hello-demo + Demo project for Spring Boot + + 17 + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + ${java.version} + ${java.version} + + + + + + diff --git a/src/main/java/com/kodekloud/hello_demo/HelloController.java b/src/main/java/com/kodekloud/hello_demo/HelloController.java new file mode 100644 index 0000000..4b09b4c --- /dev/null +++ b/src/main/java/com/kodekloud/hello_demo/HelloController.java @@ -0,0 +1,14 @@ +package com.kodekloud.hello_demo; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HelloController { + + @RequestMapping("/hello") + String hello() { + return "Hello, KodeKloud community!"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/kodekloud/hello_demo/MainApplication.java b/src/main/java/com/kodekloud/hello_demo/MainApplication.java new file mode 100644 index 0000000..4645f42 --- /dev/null +++ b/src/main/java/com/kodekloud/hello_demo/MainApplication.java @@ -0,0 +1,13 @@ +package com.kodekloud.hello_demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class MainApplication { + + public static void main(String[] args) { + SpringApplication.run(MainApplication.class, args); + } + +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..ac04544 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,2 @@ +spring.application.name=hello-demo +server.port=6767 diff --git a/src/test/java/com/kodekloud/hello_demo/HelloControllerTests.java b/src/test/java/com/kodekloud/hello_demo/HelloControllerTests.java new file mode 100644 index 0000000..2c73c72 --- /dev/null +++ b/src/test/java/com/kodekloud/hello_demo/HelloControllerTests.java @@ -0,0 +1,74 @@ +package com.kodekloud.hello_demo; + + +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.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import com.kodekloud.hello_demo.*; + +import static org.hamcrest.Matchers.*; +import static org.mockito.ArgumentMatchers.anyString; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +public class HelloControllerTests { + + @Autowired + private MockMvc mvc; + + @Autowired + private HelloController helloController; // Inject HelloController instance + + @Test + public void welcome_ok() throws Exception { + mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(content().string(equalTo("Hello, KodeKloud community!"))); + } + + @Test + public void welcome_returnsNotNull() throws Exception { + mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(content().string(notNullValue())); + + } + + @Test + public void welcome_returnsNotEmpty() throws Exception { + mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(content().string(not(isEmptyString()))); + + } + + @Test + public void welcome_returnsCorrectLength() throws Exception { + mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(content().string(hasLength(27))); + + } + + @Test + public void welcome_startsWithExpectedGreeting() throws Exception { + mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(content().string(startsWith("Hola"))); + + } + + @Test + public void welcome_endsWithExpectedGreeting() throws Exception { + mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(content().string(endsWith("community!"))); + + } + } \ No newline at end of file