package org.ovirt.engine.api.restapi.resource; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.Date; import java.util.List; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import org.junit.Test; import org.ovirt.engine.api.model.Action; import org.ovirt.engine.api.model.Event; import org.ovirt.engine.api.model.LogSeverity; import org.ovirt.engine.core.common.AuditLogSeverity; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.AddExternalEventParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.AuditLog; import org.ovirt.engine.core.common.interfaces.SearchType; import org.ovirt.engine.core.common.queries.GetAuditLogByIdParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; public class BackendEventsResourceTest extends AbstractBackendCollectionResourceTest<Event, AuditLog, BackendEventsResource> { private static final long[] LOG_IDS = { 1, 2, 3 }; private static final String[] MESSAGES = {"alert1", "alert2", "alert3"}; private static final String[] ORIGIN_NAMES = { "plug-in-1", "plug-in-2", "plug-in-3" }; private static final Integer[] CUSTOMER_EVENT_IDS = { 11, 22, 33 }; public BackendEventsResourceTest() { super(new BackendEventsResource(), SearchType.AuditLog, "Events : "); } static org.ovirt.engine.api.model.Event getModel(int index) { org.ovirt.engine.api.model.Event model = new org.ovirt.engine.api.model.Event(); model.setId(String.valueOf(LOG_IDS[index])); model.setSeverity( LogSeverity.ALERT); model.setDescription(MESSAGES[index]); model.setOrigin(ORIGIN_NAMES[index]); model.setCustomId(CUSTOMER_EVENT_IDS[index]); model.setFloodRate(30); return model; } @Test public void testAdd() throws Exception { setUriInfo(setUpBasicUriExpectations()); setUpCreationExpectations(VdcActionType.AddExternalEvent, AddExternalEventParameters.class, new String[] {}, new Object[] {}, true, true, LOG_IDS[0], VdcQueryType.GetAuditLogById, GetAuditLogByIdParameters.class, new String[] { "Id" }, new Object[] { LOG_IDS[0] }, getEntity(0)); Response response = collection.add(getModel(0)); assertEquals(201, response.getStatus()); assertTrue(response.getEntity() instanceof Event); verifyModel((Event) response.getEntity(), 0); } protected void verifyModel(Event model, int index) { assertNotNull(model); assertEquals(model.getId(), String.valueOf(LOG_IDS[index])); assertEquals(LogSeverity.ALERT, model.getSeverity()); assertEquals(model.getDescription(), MESSAGES[index]); assertEquals(model.getOrigin(), ORIGIN_NAMES[index]); assertEquals(model.getCustomId(), CUSTOMER_EVENT_IDS[index]); } protected org.ovirt.engine.core.common.businessentities.AuditLog getEntity(int index) { AuditLog auditLogMock = mock(org.ovirt.engine.core.common.businessentities.AuditLog.class); when(auditLogMock.getAuditLogId()).thenReturn(LOG_IDS[index]); when(auditLogMock.getSeverity()).thenReturn(AuditLogSeverity.ALERT); when(auditLogMock.getMessage()).thenReturn(MESSAGES[index]); when(auditLogMock.getOrigin()).thenReturn(ORIGIN_NAMES[index]); when(auditLogMock.getCustomEventId()).thenReturn(CUSTOMER_EVENT_IDS[index]); when(auditLogMock.getLogType()).thenReturn(AuditLogType.EXTERNAL_ALERT); when(auditLogMock.getLogTime()).thenReturn(new Date()); return auditLogMock; } @Test @Override public void testList() throws Exception { UriInfo uriInfo = setUpUriExpectations(null); setUpQueryExpectations(""); collection.setUriInfo(uriInfo); verifyCollection(getCollection()); } @Test public void testUndelete() throws Exception { setUriInfo(setUpActionExpectations(VdcActionType.DisplayAllAuditLogAlerts, VdcActionParametersBase.class, new String[] {}, new Object[] {}, true, true)); collection.undelete(new Action()); } @Test @Override public void testQuery() throws Exception { UriInfo uriInfo = setUpUriExpectations(QUERY); setUpQueryExpectations(QUERY); collection.setUriInfo(uriInfo); verifyCollection(getCollection()); } @Override protected List<org.ovirt.engine.api.model.Event> getCollection() { return collection.list().getEvents(); } }