title: Spring RestController + Junit Testing
body: <p>I'm playing around with spring-test of springframework. My intention is to test the following POST method in my rest controller:</p>
  
  <pre><code>@RestController
  @RequestMapping("/project")
  public class ProjectController {
  
    @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    public Project createProject(@RequestBody Project project, HttpServletResponse response) {
      // TODO: create the object, store it in db...
      response.setStatus(HttpServletResponse.SC_CREATED);
      // return the created object - simulate by returning the request.
      return project;
    }
  }
  </code></pre>
  
  <p>This is my test case:</p>
  
  <pre><code>@RunWith(SpringJUnit4ClassRunner.class)
  @ContextConfiguration(classes = {ProjectController.class })
  @WebAppConfiguration
  public class ProjectControllerTest {
  
      private MockMvc mockMvc;
  
      @Autowired
      private WebApplicationContext wac;
  
      @Before
      public void setUp() {
          mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
      }
  
      @Test
      public void testCreationOfANewProjectSucceeds() throws Exception {
          Project project = new Project();
          project.setName("MyName");
          String json = new Gson().toJson(project);
  
          mockMvc.perform(
                  post("/project")
                          .accept(MediaType.APPLICATION_JSON)
                          .contentType(MediaType.APPLICATION_JSON)
                          .content(json))
                  .andExpect(status().isCreated());
      }
  
  }
  </code></pre>
  
  <p>When I execute it I get Status Code 415 instead of 201. What am I missing? A simple GET request works.</p>