Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Mock @AuthenticationPrincipal from SpringSecurity? / 3 сообщений из 3, страница 1 из 1
25.04.2018, 18:28
    #39636299
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mock @AuthenticationPrincipal from SpringSecurity?
Здравствуйте, решений есть много, но всё что перепробовал - не работает.
Может кто поделиться работающим вариантом.
Структура стандартная. Логинимся, получаем jwt-token, идём с этим токеном и получаем данные. Теперь нужно мокнуть репозиторий и пользователя в SecurityContext так, чтоб всё чётко сработало. Вот как пытался последний вариант проделать, getAuthentification() is null

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
    classes = BackendApplication.class)
@TestExecutionListeners({
    DependencyInjectionTestExecutionListener.class,
    DirtiesContextTestExecutionListener.class,
    WithSecurityContextTestExecutionListener.class})
public class OfferControllerTest extends AbstractTestNGSpringContextTests
{
    private MockMvc mockMvc;

    @Autowired
    private WebApplicationContext context;

    @Mock
    private UserRepository гserRepository;

    @BeforeClass
    public void setUp()
    {
        mockMvc = MockMvcBuilders.webAppContextSetup(context).apply(springSecurity())
            .build();
    }

    @Test
    public void setOffers() throws Exception
    {
        ObjectMapper objectMapper = new ObjectMapper();
        OfferDTO offerDTO = new OfferDTO().setDescription("description");

        Account account = new Account();
        account.setK(new K());
        User user = new User();
        user.setAccount(account);

        when(userRepository.findByEmailEquals(any())).thenReturn(Optional.of(user));

        mockMvc.perform(post("/offers")
            .accept(MediaType.APPLICATION_JSON)
            .contentType(MediaType.APPLICATION_JSON)
            .content(objectMapper.writeValueAsString(ImmutableList.of(offerDTO))))
            .andExpect(status().isOk());
    }
}



Ну и соответственно строчка из-за которой "цыр-бор". user это пользователь из SecurityContext который приходит в метод с аннотацией @AuthenticationPrincipal
Код: java
1.
        K ref = userRepository.findByEmailEquals(user.getUsername()).get().getAccount().getK();



Спасибо!
...
Рейтинг: 0 / 0
25.04.2018, 18:32
    #39636301
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mock @AuthenticationPrincipal from SpringSecurity?
_webdev_,
getAuthentification() is null - в смысле, что не работает, получаю Nullpointer когда тяну user.getUsername()
...
Рейтинг: 0 / 0
26.04.2018, 13:46
    #39636752
vbareisha88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mock @AuthenticationPrincipal from SpringSecurity?
@MockBean - над userRepository.
И на всякий случай - MockitoAnnotations.initMocks(this);
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Mock @AuthenticationPrincipal from SpringSecurity? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]