package org.ovirt.engine.api.restapi.resource.aaa; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.UriInfo; import org.junit.Test; import org.ovirt.engine.api.model.Domain; import org.ovirt.engine.api.model.User; import org.ovirt.engine.api.restapi.resource.AbstractBackendSubResourceTest; import org.ovirt.engine.api.restapi.utils.DirectoryEntryIdUtils; import org.ovirt.engine.core.aaa.DirectoryUser; import org.ovirt.engine.core.common.queries.DirectoryIdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; public class BackendDomainUserResourceTest extends AbstractBackendSubResourceTest<User, DirectoryUser, BackendDomainUserResource> { public BackendDomainUserResourceTest() { super(new BackendDomainUserResource(EXTERNAL_IDS[1], null)); } @Override protected void init () { super.init(); setUpParentExpectations(); } @Test public void testGet() throws Exception { UriInfo uriInfo = setUpBasicUriExpectations(); setUriInfo(uriInfo); setUpEntityQueryExpectations(1, false); verifyModel(resource.get(), 1); } @Override protected void verifyModel(User model, int index) { assertEquals(NAMES[index] + "@" + DOMAIN, model.getUserName()); } @Test public void testGetNotFound() throws Exception { UriInfo uriInfo = setUpBasicUriExpectations(); setUriInfo(uriInfo); setUpEntityQueryExpectations(1, true); try { resource.get(); fail("expected WebApplicationException"); } catch (WebApplicationException wae) { verifyNotFoundException(wae); } } private void setUpParentExpectations() { BackendDomainUsersResource parent = mock(BackendDomainUsersResource.class); Domain domain = new Domain(); domain.setName(DOMAIN); when(parent.getDirectory()).thenReturn(domain); resource.setParent(parent); } private void setUpEntityQueryExpectations(int index, boolean notFound) throws Exception { setUpGetEntityExpectations( VdcQueryType.GetDirectoryUserById, DirectoryIdQueryParameters.class, new String[] { "Domain", "Id" }, new Object[] { DOMAIN, DirectoryEntryIdUtils.decode(EXTERNAL_IDS[index]) }, notFound? null: getEntity(index) ); } @Override protected DirectoryUser getEntity(int index) { return new DirectoryUser(DOMAIN, NAMESPACE, DirectoryEntryIdUtils.decode(EXTERNAL_IDS[index]), NAMES[index], NAMES[index], ""); } }