package eu.ggnet.dwoss.rights; import eu.ggnet.dwoss.mandator.api.value.SpecialSystemCustomers; import eu.ggnet.dwoss.mandator.api.value.ShippingTerms; import eu.ggnet.dwoss.mandator.api.value.PostLedger; import eu.ggnet.dwoss.mandator.api.value.ReceiptCustomers; import eu.ggnet.dwoss.rights.RightsAgent; import java.util.*; import javax.ejb.EJB; import javax.ejb.Stateless; import javax.ejb.embeddable.EJBContainer; import javax.enterprise.inject.Produces; import javax.inject.Inject; import javax.naming.NamingException; import org.junit.*; import eu.ggnet.dwoss.configuration.SystemConfig; import eu.ggnet.dwoss.rights.assist.RightsPu; import eu.ggnet.dwoss.rights.assist.gen.RightsGeneratorOperation; import eu.ggnet.dwoss.rights.entity.Operator; import eu.ggnet.dwoss.rights.entity.Persona; import static eu.ggnet.dwoss.rights.api.AtomicRight.*; import static org.junit.Assert.*; /** * * @author Bastian Venz */ public class ContainerIT { private EJBContainer container; @EJB private RightsAgent agent; @Produces public static ReceiptCustomers c = new ReceiptCustomers(new HashMap<>()); @Produces SpecialSystemCustomers sc = new SpecialSystemCustomers(new HashMap<>()); @Produces ShippingTerms st = new ShippingTerms(new HashMap<>()); @Produces PostLedger pl = new PostLedger(new HashMap<>()); @Before public void setUp() throws NamingException { Map<String, Object> c = new HashMap<>(); c.putAll(RightsPu.CMP_IN_MEMORY); c.putAll(SystemConfig.OPENEJB_EJB_XML_DISCOVER); c.putAll(SystemConfig.OPENEJB_LOG_WARN); container = EJBContainer.createEJBContainer(c); container.getContext().bind("inject", this); } @After public void tearDown() { container.close(); } @Test public void testPrePersist() { Operator op = new Operator("TestUser"); Persona p = new Persona("Testpersona"); p.add(CREATE_ANNULATION_INVOICE); p = agent.store(p); op.add(p); op = agent.store(op); // Now we have one operator with one persona with one right. op.add(CREATE_ANNULATION_INVOICE); // adding the same right to the operator op = agent.store(op); // This should clear the duplicated right. assertFalse("The Operator should not have any right, cause its duplicate of the persona. Rights=" + op + ",personas=" + op.getPersonas(), op.getRights().contains(CREATE_ANNULATION_INVOICE)); } // TODO: Remove me, but show basti before. @Stateless public static class RightsContainerITBean { @Inject private RightsAgent agent; @Inject private RightsGeneratorOperation rightsGenerator; /** * Make 11 Operators and 10 Personas and return the id of the first Operator. * <p> * @return */ public Operator make() { rightsGenerator.make(10, 10); Persona persona = agent.findAll(Persona.class).get(0); persona.getPersonaRights().clear(); agent.store(persona); Operator op = agent.findAll(Operator.class).get(0); op.getRights().clear(); op.getPersonas().clear(); op.getPersonas().add(persona); agent.store(op); return op; } } }