package io.robe.admin.resources; import io.robe.admin.dto.PermissionUpdateDto; import io.robe.admin.hibernate.entity.Permission; import io.robe.admin.hibernate.entity.Role; import io.robe.auth.data.entry.PermissionEntry; import io.robe.common.service.search.model.SearchModel; import io.robe.test.request.TestRequest; import io.robe.test.request.TestResponse; import org.junit.Assert; import org.junit.Test; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Created by adem on 17/10/2016. */ public class PermissionResourceTest extends BaseResourceTest<Permission> { private final TestRequest.Builder roleRequestBuilder = new TestRequest.Builder(BASE_URL + "roles"); @Override public String getPath() { return "permissions"; } @Override public Class<Permission> getClazz() { return Permission.class; } @Override public void assertEquals(Permission model, Permission response) { Assert.assertEquals(model.getRoleOid(), response.getRoleOid()); Assert.assertEquals(model.getType(), response.getType()); Assert.assertEquals(model.getRestrictedItemOid(), response.getRestrictedItemOid()); } @Override public void assertEquals(Permission mergeInstance, Permission original, Permission response) { Assert.assertEquals(mergeInstance.getPriorityLevel(), response.getPriorityLevel()); Assert.assertEquals(original.getRoleOid(), response.getRoleOid()); } @Override public Permission instance() { Role role; try { role = getRoleByCode("Admin"); } catch (Exception e) { throw new RuntimeException(e); } Permission permission = new Permission(); permission.setType(PermissionEntry.Type.SERVICE); permission.setPriorityLevel((short) 1); permission.setRoleOid(role.getOid()); permission.setRestrictedItemOid("oid"); return permission; } @Override public Permission update(Permission permission) { permission.setType(PermissionEntry.Type.MENU); return permission; } @Override public Permission mergeInstance() { Permission permission = new Permission(); permission.setPriorityLevel((short) 2); return permission; } @Test public void group() throws Exception { TestResponse response = client.get(getRequestBuilder().endpoint("group/" + "Permission").build()); Map<String, Object> permissions = response.get(Map.class); Assert.assertNotNull(permissions); Assert.assertNotNull(permissions.get("menu")); Assert.assertNotNull(permissions.get("service")); } @Test public void updateServiceAndMenuPermissions() throws Exception { PermissionUpdateDto dto = new PermissionUpdateDto(); Role role = getRoleByCode("Admin"); TestResponse response = client.get(roleRequestBuilder.endpoint(role.getOid() + "/permissions").build()); Assert.assertEquals(200, response.getStatus()); Map<String, List<Map<String, String>>> permissions = response.get(Map.class); Assert.assertNotNull(permissions); Assert.assertNotNull(permissions.get("menu")); Assert.assertNotNull(permissions.get("service")); List<String> serviceOids = new ArrayList<>(); List<String> menuOids = new ArrayList<>(); for (int i = 0; i < permissions.get("service").size(); i++) { Map<String, String> serviceEntry = permissions.get("service").get(i); serviceOids.add(serviceEntry.get("oid")); } for (int i = 0; i < permissions.get("menu").size(); i++) { Map<String, String> serviceEntry = permissions.get("menu").get(i); menuOids.add(serviceEntry.get("oid")); } dto.setServices(serviceOids); dto.setMenus(menuOids); response = client.post(getRequestBuilder().endpoint(role.getOid()).entity(dto).build()); Assert.assertEquals(200, response.getStatus()); TestRequest req = getRequestBuilder().endpoint("group/" + "Permission").build(); response = client.get(req); Assert.assertEquals(200, response.getStatus()); permissions = response.get(Map.class); Assert.assertNotNull(permissions); Assert.assertNotNull(permissions.get("menu")); Assert.assertNotNull(permissions.get("service")); List<Map<String, String>> menus = permissions.get("menu"); List<Map<String, String>> services = permissions.get("service"); Assert.assertEquals(1, menus.size()); Assert.assertEquals(11, services.size()); } private Role getRoleByCode(String code) throws Exception { SearchModel searchModel = new SearchModel(); searchModel.setQ(code); TestResponse response = client.get(roleRequestBuilder.search(searchModel).build()); return response.list(Role.class).get(0); } }