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

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

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

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.Duration;

import junit.framework.TestCase;


import org.easymock.classextension.IMocksControl;
import org.objectweb.celtix.bus.configuration.wsrm.DestinationPolicyType;
import org.objectweb.celtix.ws.addressing.AddressingProperties;
import org.objectweb.celtix.ws.addressing.AttributedURIType;
import org.objectweb.celtix.ws.addressing.v200408.AttributedURI;
import org.objectweb.celtix.ws.addressing.v200408.EndpointReferenceType;
import org.objectweb.celtix.ws.rm.CreateSequenceResponseType;
import org.objectweb.celtix.ws.rm.CreateSequenceType;
import org.objectweb.celtix.ws.rm.Expires;
import org.objectweb.celtix.ws.rm.Identifier;
import org.objectweb.celtix.ws.rm.OfferType;
import org.objectweb.celtix.ws.rm.wsdl.SequenceFault;

import static org.easymock.classextension.EasyMock.*;

public class RMServantTest extends TestCase {
   
    private IMocksControl control = createNiceControl();
    private RMDestination dest;
    private CreateSequenceType cs;
    private AttributedURIType to;
    private DestinationPolicyType dp;
    private Identifier sid;
    private AddressingProperties maps;

    public void testCreateSequenceDefault() throws DatatypeConfigurationException, SequenceFault {       
       
        setupCreateSequence(null, null, true, true);
       
        control.replay();
       
        CreateSequenceResponseType csr = (new RMServant()).createSequence(dest, cs, maps);
       
        control.verify();

        assertSame(sid, csr.getIdentifier());
        assertNotNull(csr.getAccept())
        assertTrue(!Names.WSA_NONE_ADDRESS
                   .equals(csr.getAccept().getAcksTo().getAddress().getValue()));       
    }
   
    public void testCreateSequenceRejectOffer() throws DatatypeConfigurationException, SequenceFault {       
       
        setupCreateSequence(null, null, true, false);
       
        control.replay();
       
        CreateSequenceResponseType csr = (new RMServant()).createSequence(dest, cs, maps);
       
        control.verify();

        assertSame(sid, csr.getIdentifier());
        assertNotNull(csr.getAccept())
        assertEquals(Names.WSA_NONE_ADDRESS, csr.getAccept().getAcksTo().getAddress().getValue());       
    }
   
    public void testCreateSequenceNoOfferIncluded()
        throws DatatypeConfigurationException, SequenceFault {       
       
        setupCreateSequence(null, null, false, false);
       
        control.replay();
       
        CreateSequenceResponseType csr = (new RMServant()).createSequence(dest, cs, maps);
       
        control.verify();

        assertSame(sid, csr.getIdentifier());
        assertNull(csr.getAccept());  
    }
   
    public void testCreateSequenceRequestedDurationNotSupported()
        throws DatatypeConfigurationException, SequenceFault {       
       
        setupCreateSequence("PT24H", "PT48H", false, false);
       
        control.replay();
       
        CreateSequenceResponseType csr = (new RMServant()).createSequence(dest, cs, maps);
       
        control.verify();

        assertSame(sid, csr.getIdentifier());
        assertNull(csr.getAccept());         
        assertEquals("PT24H", csr.getExpires().getValue().toString());
    }
   
    public void testTerminateSequence() throws SequenceFault {
        dest = control.createMock(RMDestination.class);
        sid = control.createMock(Identifier.class);
       
        (new RMServant()).terminateSequence(dest, sid);
       
    }
   
    // expires = "PT24H";
   
    private void setupCreateSequence(String supportedDuration, String requestedDuration,
                                         boolean includeOffer, boolean acceptOffer)
        throws DatatypeConfigurationException {

        dest = control.createMock(RMDestination.class);
        to = control.createMock(AttributedURIType.class);
        dp = control.createMock(DestinationPolicyType.class);
        sid = control.createMock(Identifier.class);
        cs = control.createMock(CreateSequenceType.class);
        AttributedURIType messageID = control.createMock(AttributedURIType.class);
        maps = control.createMock(AddressingProperties.class);
        maps.getMessageID();
        expectLastCall().andReturn(messageID);
       
        dest.generateSequenceIdentifier();
        expectLastCall().andReturn(sid);
       
        dest.getDestinationPolicies();
        expectLastCall().andReturn(dp);
       
        Duration d = null;
        if (null != supportedDuration) {
            d = DatatypeFactory.newInstance().newDuration(supportedDuration);
        }
        dp.getSequenceExpiration();
        expectLastCall().andReturn(d);
           
        Expires ex = null;
        if (null != requestedDuration) {
            Duration rd = DatatypeFactory.newInstance().newDuration(requestedDuration);
            ex = RMUtils.getWSRMFactory().createExpires();
            ex.setValue(rd);
        }
        cs.getExpires();
        expectLastCall().andReturn(ex);       
       
        setupOffer(includeOffer, acceptOffer);
    }

    private void setupOffer(boolean includeOffer, boolean acceptOffer)
        throws DatatypeConfigurationException {

        OfferType o = null;
        if (includeOffer) {
            o = control.createMock(OfferType.class);
        }
        cs.getOffer();
        expectLastCall().andReturn(o);
       
        if (includeOffer) {
            dp.isAcceptOffers();
            expectLastCall().andReturn(acceptOffer);
        }
       
        EndpointReferenceType acksTo =
            control.createMock(EndpointReferenceType.class);
        if (includeOffer && acceptOffer) {
            maps.getTo();
            expectLastCall().andReturn(to);
            RMHandler handler = control.createMock(RMHandler.class);
            dest.getHandler();
            expectLastCall().andReturn(handler);
            RMSource source = control.createMock(RMSource.class);
            handler.getSource();
            expectLastCall().andReturn(source);
            o.getIdentifier();           
            expectLastCall().andReturn(control.createMock(Identifier.class));
            o.getExpires();
            expectLastCall().andReturn(null);
            cs.getAcksTo();
            expectLastCall().andReturn(acksTo);
            AttributedURI address = control.createMock(AttributedURI.class);
            acksTo.getAddress();
            expectLastCall().andReturn(address);
            source.addSequence(isA(SourceSequence.class));
            expectLastCall();
            source.setCurrent(isA(Identifier.class), isA(SourceSequence.class));
            expectLastCall();
        }
    
        cs.getAcksTo();
        expectLastCall().andReturn(acksTo);
    }
}
TOP

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

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.