Я пытался написать интеграционный тест для нашего приложения Spring MVC. Для аутентификации мы используем oAuth2.Тест интеграции Java Spring MVC создает OAuth2 Principal
Весна в этом случае дает нам пример Principal
, который мы используем, чтобы определить, какие объекты мы должны отправить обратно клиенту. В нашем контроллере мы имеем конечную точку:
@RequestMapping("/bookings")
public @ResponseBody ResponseEntity<List<ThirdPartyBooking>> getBookings(Principal principal) {
OAuth2Authentication auth = (OAuth2Authentication) principal;
OAuth2AuthenticationDetails authDetails = (OAuthAuthenticationDetails) auth.getDetails();
// Extract stuff from the details...
}
Теперь в нашем тесте я хочу, чтобы убедиться, что мы только отправлять заказы на проверку подлинности пользователя. Ниже код для теста можно найти:
@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
}
}
Как бы вставить OAuth2Authentication
в ???
?
Это было не совсем то, что я искал. Это очень помогло. Благодаря! – irundaia