Тестирование метода с аутентификацией Spring Security - PullRequest
0 голосов
/ 10 июня 2018

У меня есть метод

/**
 * {@inheritDoc}
 */
@Override
public List<User> getInvitations() throws ResourceNotFoundException {
    log.info("Called with outgoing {}", outgoing);

    final String id = ((CustomUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getId();

    return this.findUser(id).getSentInvitations()
            .stream()
            .map(ServiceUtils::toUserDto)
            .collect(Collectors.toList());
}

Метод получает идентификатор вошедшего в систему пользователя во время работы.Перед выполнением теста он выполняет

@Before
public void setup() {
    final Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
    grantedAuthorities.add(new SimpleGrantedAuthority(SecurityRole.ROLE_USER.toString()));

    Authentication authentication
            = new UsernamePasswordAuthenticationToken(
                    new CustomUserDetails(
                            UUID.randomUUID().toString(),
                            UUID.randomUUID().toString(),
                            grantedAuthorities,
                            "1"
                    ), null);
    SecurityContext sc = SecurityContextHolder.getContext();
    sc.setAuthentication(authentication);
}

, а я делаю тест

/**
 * Test the getInvitations method.
 */
@Test
public void canGetInvitations() {
    final String id = "1";
    final UserEntity entity = Mockito.mock(UserEntity.class);
    Mockito
            .when(this.userRepository.findByUniqueIdAndEnabledTrue(id))
            .thenReturn(Optional.of(entity));
    Assert.assertTrue(this.userSearchService.getInvitations().isEmpty());
}

Однако оказывается, что ((CustomUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getId(); вернул null, хотя id Я дал 1 в @Before.

Почему я не могу правильно настроить авторизованного пользователя в Spring Security?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...