Package org.objectweb.celtix.bus.ws.rm

Source Code of org.objectweb.celtix.bus.ws.rm.RMDestinationTest

package org.objectweb.celtix.bus.ws.rm;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collection;

import junit.framework.TestCase;

import org.easymock.classextension.EasyMock;
import org.easymock.classextension.IMocksControl;
import org.objectweb.celtix.bus.configuration.wsrm.DestinationPolicyType;
import org.objectweb.celtix.configuration.Configuration;
import org.objectweb.celtix.ws.addressing.v200408.EndpointReferenceType;
import org.objectweb.celtix.ws.rm.Identifier;
import org.objectweb.celtix.ws.rm.SequenceType;
import org.objectweb.celtix.ws.rm.persistence.RMDestinationSequence;
import org.objectweb.celtix.ws.rm.persistence.RMStore;
import org.objectweb.celtix.ws.rm.policy.RMAssertionType;
import org.objectweb.celtix.ws.rm.wsdl.SequenceFault;

public class RMDestinationTest extends TestCase {
   
    private IMocksControl control;
    private RMHandler handler;
    private EndpointReferenceType address;

    public void setUp() {
        control = EasyMock.createNiceControl();
        handler = control.createMock(RMHandler.class);
        address = control.createMock(EndpointReferenceType.class);       
    }  

    public void testSequenceAccess() {
        RMStore store = control.createMock(RMStore.class);
        EasyMock.expect(handler.getStore()).andReturn(store).times(2);
        store.createDestinationSequence(EasyMock.isA(RMDestinationSequence.class));
        EasyMock.expectLastCall();
        store.removeDestinationSequence(EasyMock.isA(Identifier.class));
        EasyMock.expectLastCall();
       
        control.replay();
        RMDestination d = new RMDestination(handler);
        Identifier sid = d.generateSequenceIdentifier();
        DestinationSequence seq = new DestinationSequence(sid, address, d);
        d.addSequence(seq);
        assertSame(seq, d.getSequence(sid));
        assertEquals(1, d.getAllSequences().size());
        d.removeSequence(seq);
        assertNull(d.getSequence(sid));
        assertEquals(0, d.getAllSequences().size());
        control.verify();
    }
   
    public void testGetDestinationPolicies() {
        Configuration c = control.createMock(Configuration.class);
        DestinationPolicyType dp = null;
        EasyMock.expect(handler.getConfiguration()).andReturn(c);
        EasyMock.expect(c.getObject(DestinationPolicyType.class, "destinationPolicies")).andReturn(dp);
        control.replay();
        RMDestination d = new RMDestination(handler);
        assertNotNull(d.getDestinationPolicies());
        control.verify();
       
        control.reset();       
        dp = control.createMock(DestinationPolicyType.class);
        EasyMock.expect(handler.getConfiguration()).andReturn(c);        
        EasyMock.expect(c.getObject(DestinationPolicyType.class, "destinationPolicies")).andReturn(dp);
        control.replay();
        assertNotNull(d.getDestinationPolicies());
        control.verify();
    }

    public void testAcknowledge() throws SequenceFault {
        RMStore store = control.createMock(RMStore.class);
        EasyMock.expect(handler.getStore()).andReturn(store);
        store.createDestinationSequence(EasyMock.isA(RMDestinationSequence.class));
        EasyMock.expectLastCall();
        Configuration c = control.createMock(Configuration.class);      
        EasyMock.expect(handler.getConfiguration()).andReturn(c);
        EasyMock.expect(c.getObject(RMAssertionType.class, "rmAssertion")).andReturn(null);
        EasyMock.expect(handler.getConfiguration()).andReturn(c);
        EasyMock.expect(c.getObject(DestinationPolicyType.class, "destinationPolicies")).andReturn(null);
       
        control.replay();
        RMDestination d = new RMDestination(handler);
        Identifier sid = d.generateSequenceIdentifier();
        DestinationSequence seq = new DestinationSequence(sid, address, d);
        d.addSequence(seq);
        SequenceType st = RMUtils.getWSRMFactory().createSequenceType();
        st.setIdentifier(sid);
        BigInteger m = new BigInteger("3");
        st.setMessageNumber(m);
        d.acknowledge(st, RMUtils.getAddressingConstants().getNoneURI());
       
        Identifier unknown = d.generateSequenceIdentifier();
        st.setIdentifier(unknown);
        try {
            d.acknowledge(st, RMUtils.getAddressingConstants().getNoneURI());
            fail("Expected sequenceFault not thrown.");
        } catch (SequenceFault sf) {
            assertEquals("UnknownSequence", sf.getFaultInfo().getFaultCode().getLocalPart());
        }
        control.verify();
    }
   
    public void testRestore() {
        RMStore store = control.createMock(RMStore.class);       
        EasyMock.expect(handler.getStore()).andReturn(store);
        Configuration c = control.createMock(Configuration.class);
        EasyMock.expect(handler.getConfiguration()).andReturn(c);
        Configuration pc = control.createMock(Configuration.class);
        EasyMock.expect(c.getParent()).andReturn(pc);
        EasyMock.expect(pc.getId()).andReturn("endpoint");
        Collection<RMDestinationSequence> dss = new ArrayList<RMDestinationSequence>();
        EasyMock.expect(store.getDestinationSequences("endpoint")).andReturn(dss);
       
        control.replay();
        RMDestination d = new RMDestination(handler);
        d.restore();
        assertEquals(0, d.getAllSequences().size());
        control.verify();
    }

}
TOP

Related Classes of org.objectweb.celtix.bus.ws.rm.RMDestinationTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.