Может кто-нибудь сказать мне, как смоделировать SpringSecurity и OncePerRequestFilter (фильтр аутентификации JWT)?
В Интернете есть примеры, но что-то я не могу собрать все вместе.
Итак, есть SpringBoot 2.0.
Пользователь @AuthenticationPrincipal является параметром функции.
Существует расширение JWtFilter OncePerRequestFilter, которое проверяет действительность токена jwt.
Необходимый
@SpringBootTest(
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
classes = NfaBackendApplication.class)
@TestExecutionListeners({
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class,
WithSecurityContextTestExecutionListener.class })
public class OfferControllerTest extends AbstractTestNGSpringContextTests
{
private MockMvc mockMvc;
@Autowired
private WebApplicationContext context;
@MockBean
private UserRepository kvUserRepository;
@InjectMocks
private JWTAuthenticationFilter jwtAuthenticationFilter = new JWTAuthenticationFilter();
@Mock
private JWTokenProvider jwtTokenProvider;
@BeforeClass
public void setUp() throws ServletException, IOException
{
mockMvc = MockMvcBuilders.webAppContextSetup(context).apply(springSecurity())
.build();
MockitoAnnotations.initMocks(this);
}
@Test(enabled = true)
public void getExternalOffers() throws Exception
{
// KVUserDetails user = new KVUserDetails("mail@mail.ua", "test", false, true, AuthorityUtils
// .createAuthorityList("ADMIN"));
// TestingAuthenticationToken testingAuthenticationToken = new TestingAuthenticationToken(user, null);
// SecurityContextHolder.getContext().setAuthentication(testingAuthenticationToken);
MockFilterChain filterChain = new MockFilterChain();
MockHttpServletRequest request = new MockHttpServletRequest();
request.addHeader(HttpHeaders.AUTHORIZATION,"Authorized");
MockHttpServletResponse response = new MockHttpServletResponse();
when(jwtTokenProvider.validateToken("Authorized")).thenReturn(true);
mockMvc.perform(get("/admin/offers")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
}
Подскажите пожалуйста рабочий пример, как намочить SpringSecurity и OncePerRequestFilter (JWT Authentication Filter)?
что на запрос придет пользователь, который AuthenticationPrincipal.
Спасибо.