package com.tourguide.security; import com.tourguide.modules.user.domain.ClientType; import org.junit.jupiter.api.Test; import org.springframework.security.core.GrantedAuthority; import java.util.Arrays; import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; class AppUserPrincipalTest { @Test void adminPrincipalShouldExposeRoleAndMenuAuthorities() { AppUserPrincipal principal = new AppUserPrincipal(1L, "guide-admin", "CUSTOM_GUIDE", ClientType.ADMIN, Arrays.asList("GUIDE_LIST", "GUIDE_LIST_VIEW")); assertThat(principal.getAuthorities().stream() .map(GrantedAuthority::getAuthority) .collect(Collectors.toList())) .containsExactly("ROLE_ADMIN", "ROLE_CUSTOM_GUIDE", "PERM_GUIDE_LIST", "PERM_GUIDE_LIST_VIEW"); } @Test void nonAdminPrincipalShouldKeepOriginalRoleOnly() { AppUserPrincipal principal = new AppUserPrincipal(2L, "guide", "GUIDE_USER", ClientType.GUIDE); assertThat(principal.getAuthorities().stream() .map(GrantedAuthority::getAuthority) .collect(Collectors.toList())) .containsExactly("ROLE_GUIDE_USER"); } }