@Test
  public void testDeleteExists() {
    RoleDO delegatable = new RoleDO();
    Long roleId = Long.valueOf(2);
    delegatable.setRoleId(roleId);
    delegatable.setName("delgatable");

    Mockito.when(userRoleDAO.getUserRoleByUserIdAndRoleId(any(Long.class), any(Long.class)))
        .thenReturn(new UserRoleDO());
    Mockito.when(roleDAO.findDelegatableRoles(any(Long.class), any(Long.class)))
        .thenReturn(Lists.newArrayList(delegatable));

    userRoleService.delete(new ServiceContext(), Long.valueOf(1), roleId);
    Mockito.verify(userRoleDAO, times(1)).delete(any(UserRoleDO.class));
  }
  @Test(expected = AuthorizationException.class)
  public void testDeleteExistsNotDelegatable() {
    RoleDO notDelegatable = new RoleDO();
    Long roleId = Long.valueOf(2);
    notDelegatable.setRoleId(roleId);
    notDelegatable.setName("notDelgatable");
    Mockito.when(roleDAO.getById(Matchers.eq(roleId))).thenReturn(notDelegatable);

    Mockito.when(userRoleDAO.getUserRoleByUserIdAndRoleId(any(Long.class), any(Long.class)))
        .thenReturn(new UserRoleDO());
    Mockito.when(roleDAO.findDelegatableRoles(any(Long.class), any(Long.class)))
        .thenReturn(Lists.<RoleDO>newArrayList());
    try {
      userRoleService.delete(new ServiceContext(), Long.valueOf(1), roleId);
    } finally {
      Mockito.verify(userRoleDAO, Mockito.never()).delete(any(UserRoleDO.class));
    }
  }