Ich habe versucht, einen Integrationstest für unsere Spring MVC-Anwendung zu schreiben. Wir verwenden oAuth2 für die Authentifizierung.Java Spring MVC-Integrationstest OAuth2 Principal erstellen
Spring in diesem Fall gibt uns eine Principal
Instanz, die wir verwenden, um zu bestimmen, welche Entitäten wir zurück an den Client senden müssen. In unserem Controller haben wir einen Endpunkt:
@RequestMapping("/bookings")
public @ResponseBody ResponseEntity<List<ThirdPartyBooking>> getBookings(Principal principal) {
OAuth2Authentication auth = (OAuth2Authentication) principal;
OAuth2AuthenticationDetails authDetails = (OAuthAuthenticationDetails) auth.getDetails();
// Extract stuff from the details...
}
Jetzt in unserem Test, den ich sicherstellen möchten, dass wir nur Buchungen für den authentifizierten Benutzer senden. Unter dem Code für den Test kann hier gefunden werden:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {ThirdPartyBookingServiceConfiguration.class})
@WebAppConfiguration
@Component
public abstract class RepositoryTestBase {
@Resource
private WebApplicationContext context;
private MockMvc mockMvc;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
}
@Test
public void shouldOnlyReturnUserBookings() throws Exception {
MockHttpServletResponse result = mockMvc.perform(MockMvcRequestBuilders.get("/bookings").principal(???)).andReturn().getResponse();
// Validate the response
}
}
Wie würde ich einfügen einer OAuth2Authentication
am ???
?
Das war nicht genau das, was ich suchte. Es hat sehr geholfen. Vielen Dank! – irundaia