package org.ovirt.engine.api.restapi.resource;
import javax.ws.rs.WebApplicationException;
import org.junit.Test;
import org.ovirt.engine.api.model.Role;
import org.ovirt.engine.core.common.businessentities.RoleType;
import org.ovirt.engine.core.common.businessentities.roles;
import org.ovirt.engine.core.common.queries.MultilevelAdministrationByRoleIdParameters;
import org.ovirt.engine.core.common.queries.VdcQueryType;
public abstract class AbstractBackendRoleResourceTest
extends AbstractBackendSubResourceTest<Role, roles, BackendRoleResource> {
public AbstractBackendRoleResourceTest(BackendRoleResource roleResource) {
super(roleResource);
}
@Test
public void testBadGuid() throws Exception {
control.replay();
try {
new BackendRoleResource("foo", null);
fail("expected WebApplicationException");
} catch (WebApplicationException wae) {
verifyNotFoundException(wae);
}
}
@Test
public void testGetNotFound() throws Exception {
setUriInfo(setUpBasicUriExpectations());
setUpGetEntityExpectations(true);
control.replay();
try {
resource.get();
fail("expected WebApplicationException");
} catch (WebApplicationException wae) {
verifyNotFoundException(wae);
}
}
@Test
public void testGet() throws Exception {
setUriInfo(setUpBasicUriExpectations());
setUpGetEntityExpectations();
control.replay();
verifyModel(resource.get(), 0);
}
protected void setUpGetEntityExpectations() throws Exception {
setUpGetEntityExpectations(false);
}
protected void setUpGetEntityExpectations(boolean notFound) throws Exception {
setUpGetEntityExpectations(VdcQueryType.GetRoleById,
MultilevelAdministrationByRoleIdParameters.class,
new String[] { "RoleId" },
new Object[] { GUIDS[0] },
notFound ? null : getEntity(0));
}
@Override
protected roles getEntity(int index) {
roles role = new roles();
role.setId(GUIDS[index]);
role.setname(NAMES[index]);
role.setdescription(DESCRIPTIONS[index]);
role.setis_readonly(false);
role.setType(RoleType.ADMIN);
return role;
}
@Override
protected void verifyModel(Role model, int index) {
super.verifyModel(model, index);
assertTrue(model.isMutable());
assertTrue(model.isAdministrative());
}
}