/** * Copyright (c) 2009 - 2012 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package org.candlepin.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import org.candlepin.audit.Event; import org.candlepin.audit.Event.Type; import org.candlepin.audit.EventBuilder; import org.candlepin.audit.EventFactory; import org.candlepin.auth.Access; import org.candlepin.test.DatabaseTestFixture; import org.junit.Before; import org.junit.Test; import java.util.Date; import java.util.List; import javax.inject.Inject; public class EventCuratorTest extends DatabaseTestFixture { @Inject private OwnerCurator ownerCurator; @Inject private ConsumerCurator consumerCurator; @Inject private ConsumerTypeCurator consumerTypeCurator; @Inject private EventCurator eventCurator; @Inject private EventFactory eventFactory; private Owner owner; @Before public void setUp() { owner = new Owner("testOwner"); ownerCurator.create(owner); } @Test public void testCreate() { Consumer newConsumer = new Consumer("consumername", "user", owner, new ConsumerType("system")); consumerTypeCurator.create(newConsumer.getType()); consumerCurator.create(newConsumer); setupPrincipal(owner, Access.ALL); Event event = eventFactory.consumerCreated(newConsumer); eventCurator.create(event); Event lookedUp = eventCurator.find(event.getId()); assertNull(lookedUp.getOldEntity()); assertEquals(Type.CREATED, lookedUp.getType()); assertNotNull(lookedUp.getId()); } @Test public void testSecondarySorting() { Consumer newConsumer = new Consumer("consumername", "user", owner, new ConsumerType("system")); consumerTypeCurator.create(newConsumer.getType()); consumerCurator.create(newConsumer); setupPrincipal(owner, Access.ALL); // Force all events to have exact same timestamp: Date forcedDate = new Date(); EventBuilder builder = eventFactory.getEventBuilder(Event.Target.RULES, Event.Type.DELETED); Event rulesDeletedEvent = builder.setOldEntity(new Rules()).buildEvent(); rulesDeletedEvent.setTimestamp(forcedDate); builder = eventFactory.getEventBuilder(Event.Target.CONSUMER, Event.Type.CREATED); Event consumerCreatedEvent = builder.setNewEntity(newConsumer).buildEvent(); consumerCreatedEvent.setTimestamp(forcedDate); builder = eventFactory.getEventBuilder(Event.Target.CONSUMER, Event.Type.MODIFIED); Event consumerModifiedEvent = builder.setNewEntity(newConsumer). setOldEntity(newConsumer).buildEvent(); consumerModifiedEvent.setTimestamp(forcedDate); eventCurator.create(rulesDeletedEvent); eventCurator.create(consumerCreatedEvent); eventCurator.create(consumerModifiedEvent); List<Event> mostRecent = eventCurator.listMostRecent(3).list(); assertEquals(3, mostRecent.size()); // We should see this sorted by timestamp (all the same), then entity, then type: assertEquals(consumerCreatedEvent.getId(), mostRecent.get(0).getId()); assertEquals(consumerModifiedEvent.getId(), mostRecent.get(1).getId()); assertEquals(rulesDeletedEvent.getId(), mostRecent.get(2).getId()); } }