1616package org .springframework .data .rest .tests ;
1717
1818import static org .assertj .core .api .Assertions .*;
19- import static org .hamcrest .CoreMatchers .*;
2019import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .*;
21- import static org .springframework .test .web .servlet .result .MockMvcResultMatchers .*;
2220
2321import io .micrometer .observation .ObservationRegistry ;
2422import jakarta .servlet .Filter ;
3735
3836import org .junit .jupiter .api .BeforeEach ;
3937import org .junit .jupiter .api .extension .ExtendWith ;
38+
4039import org .springframework .beans .factory .annotation .Autowired ;
4140import org .springframework .data .rest .webmvc .config .RepositoryRestMvcConfiguration ;
4241import org .springframework .hateoas .Link ;
4342import org .springframework .hateoas .LinkRelation ;
4443import org .springframework .hateoas .client .LinkDiscoverers ;
44+ import org .springframework .http .HttpHeaders ;
4545import org .springframework .http .HttpMethod ;
46+ import org .springframework .http .HttpStatus ;
4647import org .springframework .http .MediaType ;
4748import org .springframework .http .server .observation .ServerRequestObservationContext ;
4849import org .springframework .mock .web .MockHttpServletResponse ;
5152import org .springframework .test .context .web .WebAppConfiguration ;
5253import org .springframework .test .web .servlet .MockMvc ;
5354import org .springframework .test .web .servlet .ResultMatcher ;
55+ import org .springframework .test .web .servlet .assertj .MockMvcTester ;
56+ import org .springframework .test .web .servlet .assertj .MvcTestResult ;
5457import org .springframework .test .web .servlet .request .MockMvcRequestBuilders ;
5558import org .springframework .test .web .servlet .setup .MockMvcBuilders ;
5659import org .springframework .util .LinkedMultiValueMap ;
@@ -84,48 +87,48 @@ public abstract class AbstractWebIntegrationTests {
8487 @ Autowired LinkDiscoverers discoverers ;
8588
8689 protected TestMvcClient client ;
87- protected MockMvc mvc ;
90+ protected MockMvc mockMvc ;
91+ protected MockMvcTester mvc ;
8892 protected ServerRequestObservationContext observationContext ;
8993
9094 @ BeforeEach
9195 public void setUp () {
9296 setupMockMvc ();
93- this .client = new TestMvcClient (mvc , discoverers );
97+ this .client = new TestMvcClient (mockMvc , discoverers );
9498 }
9599
96100 protected void setupMockMvc () {
97- this .mvc = MockMvcBuilders .webAppContextSetup (context ) //
101+ this .mockMvc = MockMvcBuilders .webAppContextSetup (context ) //
98102 .defaultRequest (get ("/" ).accept (TestMvcClient .DEFAULT_MEDIA_TYPE )) //
99103 .addFilters (new FilterImplementation ()) //
100104 .build ();
105+ this .mvc = MockMvcTester .create (mockMvc );
101106 }
102107
103108 protected MockHttpServletResponse postAndGet (Link link , Object payload , MediaType mediaType ) throws Exception {
104109
105110 String href = link .isTemplated () ? link .expand ().getHref () : link .getHref ();
106111
107- MockHttpServletResponse response = mvc .perform (post (href ).content (payload .toString ()).contentType (mediaType ))//
108- .andExpect (status ().isCreated ())//
109- .andExpect (header ().string ("Location" , is (notNullValue ())))//
110- .andReturn ().getResponse ();
112+ MvcTestResult result = mvc .perform (post (href ).content (payload .toString ()).contentType (mediaType ));
113+ assertThat (result ).hasStatus (HttpStatus .CREATED ).headers ().containsHeader (HttpHeaders .LOCATION );
111114
112- String content = response .getContentAsString ();
115+ String content = result . getResponse () .getContentAsString ();
113116
114117 if (StringUtils .hasText (content )) {
115- return response ;
118+ return result . getResponse () ;
116119 }
117120
118- return client .request (response .getHeader ("Location" ));
121+ return client .request (result . getResponse () .getHeader ("Location" ));
119122 }
120123
121124 protected MockHttpServletResponse putAndGet (Link link , Object payload , MediaType mediaType ) throws Exception {
122125
123126 String href = link .isTemplated () ? link .expand ().getHref () : link .getHref ();
124127
125- MockHttpServletResponse response = mvc .perform (put (href ).content (payload .toString ()).contentType (mediaType ))//
126- .andExpect (status ().is2xxSuccessful ())//
127- .andReturn ().getResponse ();
128+ MvcTestResult result = mvc .perform (put (href ).content (payload .toString ()).contentType (mediaType ));
129+ assertThat (result ).hasStatus2xxSuccessful ();
128130
131+ MockHttpServletResponse response = result .getResponse ();
129132 return StringUtils .hasText (response .getContentAsString ()) ? response : client .request (link );
130133 }
131134
@@ -134,9 +137,10 @@ protected MockHttpServletResponse putOnlyExpect5XXStatus(Link link, Object paylo
134137
135138 String href = link .isTemplated () ? link .expand ().getHref () : link .getHref ();
136139
137- MockHttpServletResponse response = mvc .perform (put (href ).content (payload .toString ()).contentType (mediaType ))//
138- .andExpect (status ().is5xxServerError ())//
139- .andReturn ().getResponse ();
140+ MvcTestResult result = mvc .perform (put (href ).content (payload .toString ()).contentType (mediaType ));
141+ assertThat (result ).hasStatus5xxServerError ();
142+
143+ MockHttpServletResponse response = result .getResponse ();
140144
141145 return StringUtils .hasText (response .getContentAsString ()) ? response : client .request (link );
142146 }
@@ -145,9 +149,11 @@ protected MockHttpServletResponse patchAndGet(Link link, Object payload, MediaTy
145149
146150 String href = link .isTemplated () ? link .expand ().getHref () : link .getHref ();
147151
148- MockHttpServletResponse response = mvc .perform (MockMvcRequestBuilders .request (HttpMethod .PATCH , href ).//
149- content (payload .toString ()).contentType (mediaType )).andExpect (status ().is2xxSuccessful ())//
150- .andReturn ().getResponse ();
152+ MvcTestResult result = mvc .perform (MockMvcRequestBuilders .request (HttpMethod .PATCH , href ).//
153+ content (payload .toString ()).contentType (mediaType ));
154+ assertThat (result ).hasStatus2xxSuccessful ();
155+
156+ MockHttpServletResponse response = result .getResponse ();
151157
152158 return StringUtils .hasText (response .getContentAsString ()) ? response : client .request (href );
153159 }
@@ -156,13 +162,13 @@ protected void deleteAndVerify(Link link) throws Exception {
156162
157163 String href = link .isTemplated () ? link .expand ().getHref () : link .getHref ();
158164
159- mvc .perform (delete (href ))//
160- .andExpect (status ().isNoContent ())//
161- .andReturn ().getResponse ();
165+ MvcTestResult result = mvc .perform (delete (href ));
166+ assertThat (result ).hasStatus (HttpStatus .NO_CONTENT );
167+
168+ MockHttpServletResponse response = result .getResponse ();
162169
163170 // Check that the resource is unavailable after a DELETE
164- mvc .perform (get (href ))//
165- .andExpect (status ().isNotFound ());
171+ assertThat (mvc .perform (get (href ))).hasStatus (HttpStatus .NOT_FOUND );//
166172 }
167173
168174 protected Link assertHasContentLinkWithRel (LinkRelation relation , MockHttpServletResponse response ) throws Exception {
0 commit comments