2017-02-21 101 views
0

У меня есть тестовый Junit случая, когда я аутентичность в приложение с помощьювесны тест безопасности случае для выполнения базовой аутентификации

public static MockHttpServletRequestBuilder prepare(
      final MockHttpServletRequestBuilder request, 
      final Participant user) 
    { 
     return request.contentType(MediaType.APPLICATION_JSON) 
       .with(user(user.getAccount().getUsername()) 
         .authorities(user.getAccount().getRole().getAuthorities())); 
    } 

вещи согласно документации, представленной на https://spring.io/blog/2014/05/23/preview-spring-security-test-web-security, он фактически не аутентификации используя имя пользователя и пароль, но просто настраивает SecurityContext на основе полномочий, которые мы передаем.

В моем случае я регистрирую событие всякий раз, когда пользователь входит в приложение. И я хочу написать тестовый пример, чтобы проверить, сохраняется ли событие при входе пользователя в приложение или нет. Но, как пружина безопасности даже не аутентификации пользователя, это на самом деле не вызывая

onSuccessfulAuthentication(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response, final Authentication authResult)

из BasicAuthenticationFilter где я протоколирование событий.

Есть ли способ имитировать тестовый пример с моими требованиями?

ответ

0

Я смог найти решение для этого. Вот код

@Autowired 
private WebApplicationContext context; 

@Test 
public void testcase1(){ 
    MockMvcBuilders.webAppContextSetup(this.context) 
         .apply(SecurityMockMvcConfigurers.springSecurity()) 
         .build(); 
    final MvcResult mvcResult = this.mvc 
        .perform(get("/").with(httpBasic("test1","password"))) 
        .andDo(print()) 
        .andExpect(status().isOk()) 
        .andReturn(); 
} 

и я добавил CustomBasicAuthenticationFilter (где я переопределить метод onSuccessfulAuthentication из BasicAuthenticationFilter) в мой файл конфигурации безопасности весной.

См Spring Security Token based Authentication для класса конфигурации и CustomBasicAuthenticationFilter

+0

вы можете показать импорт вы используете? – Eduardo