package org.ovirt.engine.core.bll;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.powermock.api.mockito.PowerMockito.spy;
import static org.powermock.api.mockito.PowerMockito.when;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.ovirt.engine.core.common.action.AdElementParametersBase;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.VdcBllMessages;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest({MultiLevelAdministrationHandler.class})
public class RemoveAdGroupCommandTest {
/**
* The command under test.
*/
private RemoveAdGroupCommand<AdElementParametersBase> command;
private Guid adElementId = Guid.NewGuid();
private void initializeCommand() {
AdElementParametersBase parameters = createParameters();
command = spy(new RemoveAdGroupCommand<AdElementParametersBase>(parameters));
mockStatic(MultiLevelAdministrationHandler.class);
}
/**
* @return Valid parameters for the command.
*/
private AdElementParametersBase createParameters() {
AdElementParametersBase parameters = new AdElementParametersBase(adElementId);
return parameters;
}
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
initializeCommand();
}
@Test
public void canDoActionFailsOnRemoveLastAdGroupWithSuperUserPrivileges() throws Exception {
when(MultiLevelAdministrationHandler.isLastSuperUserGroup(adElementId)).thenReturn(true);
assertFalse(command.canDoAction());
assertTrue(command.getReturnValue().getCanDoActionMessages().contains(
VdcBllMessages.ERROR_CANNOT_REMOVE_LAST_SUPER_USER_ROLE.toString()));
}
@Test
public void canDoActionSucceedsOnRemoveNotLastAdGroupWithSuperUserPrivileges() throws Exception {
when(MultiLevelAdministrationHandler.isLastSuperUserGroup(adElementId)).thenReturn(false);
assertTrue(command.canDoAction());
}
}