Create GreetingsController.java (#11057)

* Create GreetingsController.java

add controller to test the content type being set properly or not

* add unit tests for greetings controller

* update to avoid PMD violation

* correct the file type

* Update GreetingsControllerUnitTest.java

fix some imports & correct the names

* Update GreetingsControllerUnitTest.java

update the unit case to avoid internal server error for junit
This commit is contained in:
Usman Mohyuddin 2021-07-25 22:02:16 +05:00 committed by GitHub
parent ec02aed456
commit dd50f5e80b
2 changed files with 107 additions and 0 deletions

View File

@ -0,0 +1,49 @@
package com.baeldung.controller.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class GreetingsController {
@RequestMapping(
value = "/greetings-with-response-body",
method = RequestMethod.GET,
produces="application/json"
)
@ResponseBody
public String getGreetingWhileReturnTypeIsString() {
return "{\"test\": \"Hello using @ResponseBody\"}";
}
@RequestMapping(
value = "/greetings-with-response-entity",
method = RequestMethod.GET,
produces = "application/json"
)
public ResponseEntity<String> getGreetingWithResponseEntity() {
final HttpHeaders httpHeaders= new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
return new ResponseEntity<String>("{\"test\": \"Hello with ResponseEntity\"}", httpHeaders, HttpStatus.OK);
}
@RequestMapping(
value = "/greetings-with-map-return-type",
method = RequestMethod.GET,
produces = "application/json"
)
@ResponseBody
public Map<String, Object> getGreetingWhileReturnTypeIsMap() {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("test", "Hello from map");
return map;
}
}

View File

@ -0,0 +1,58 @@
package com.baeldung.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.baeldung.controller.controller.GreetingsController;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.AnnotationConfigWebContextLoader;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = { GreetingsController.class }, loader = AnnotationConfigWebContextLoader.class)
public class GreetingsControllerUnitTest {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext wac;
@Before
public void setUp() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void givenReturnTypeIsString_whenJacksonOnClasspath_thenDefaultContentTypeIsJSON() throws Exception {
// Given
String expectedMimeType = "application/json";
// Then
String actualMimeType = this.mockMvc.perform(MockMvcRequestBuilders.get("/greetings-with-response-body", 1)).andReturn().getResponse().getContentType();
Assert.assertEquals(expectedMimeType, actualMimeType);
}
@Test
public void givenReturnTypeIsResponseEntity_thenDefaultContentTypeIsJSON() throws Exception {
// Given
String expectedMimeType = "application/json";
// Then
String actualMimeType = this.mockMvc.perform(MockMvcRequestBuilders.get("/greetings-with-response-entity", 1)).andReturn().getResponse().getContentType();
Assert.assertEquals(expectedMimeType, actualMimeType);
}
}