package com.tourguide.modules.system.service;
|
|
import com.tourguide.modules.system.entity.SystemMenu;
|
import com.tourguide.modules.system.entity.SystemRole;
|
import com.tourguide.modules.system.entity.SystemRoleMenu;
|
import com.tourguide.modules.system.mapper.SystemMenuMapper;
|
import com.tourguide.modules.system.mapper.SystemRoleMapper;
|
import com.tourguide.modules.system.mapper.SystemRoleMenuMapper;
|
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.Test;
|
|
import java.util.Arrays;
|
import java.util.List;
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.when;
|
|
class AdminPermissionServiceTest {
|
private SystemRoleMapper roleMapper;
|
private SystemMenuMapper menuMapper;
|
private SystemRoleMenuMapper roleMenuMapper;
|
private AdminPermissionService permissionService;
|
|
@BeforeEach
|
void setUp() {
|
roleMapper = mock(SystemRoleMapper.class);
|
menuMapper = mock(SystemMenuMapper.class);
|
roleMenuMapper = mock(SystemRoleMenuMapper.class);
|
permissionService = new AdminPermissionService(roleMapper, menuMapper, roleMenuMapper);
|
}
|
|
@Test
|
void customRoleShouldOnlyReturnItsEnabledMenuCodes() {
|
SystemRole role = role(4L, "CUSTOM_GUIDE");
|
when(roleMapper.selectOne(any())).thenReturn(role);
|
when(roleMenuMapper.selectList(any())).thenReturn(Arrays.asList(relation(10L), relation(11L)));
|
when(menuMapper.selectList(any())).thenReturn(Arrays.asList(menu("GUIDES"), menu("GUIDE_LIST")));
|
|
List<String> menuCodes = permissionService.getMenuCodes("CUSTOM_GUIDE");
|
|
assertThat(menuCodes).containsExactly("GUIDES", "GUIDE_LIST");
|
}
|
|
@Test
|
void superAdminShouldReceiveAllEnabledMenuCodesWithoutRoleRelations() {
|
when(roleMapper.selectOne(any())).thenReturn(role(1L, "ADMIN"));
|
when(menuMapper.selectList(any())).thenReturn(Arrays.asList(menu("DASHBOARD"), menu("EMPLOYEE_LIST")));
|
|
List<String> menuCodes = permissionService.getMenuCodes("ADMIN");
|
|
assertThat(menuCodes).containsExactly("DASHBOARD", "EMPLOYEE_LIST");
|
verify(roleMenuMapper, never()).selectList(any());
|
}
|
|
private SystemRole role(Long id, String roleCode) {
|
SystemRole role = new SystemRole();
|
role.setId(id);
|
role.setRoleCode(roleCode);
|
role.setStatus(1);
|
return role;
|
}
|
|
private SystemRoleMenu relation(Long menuId) {
|
SystemRoleMenu relation = new SystemRoleMenu();
|
relation.setMenuId(menuId);
|
return relation;
|
}
|
|
private SystemMenu menu(String menuCode) {
|
SystemMenu menu = new SystemMenu();
|
menu.setMenuCode(menuCode);
|
return menu;
|
}
|
}
|