1 package org.objectweb.celtix.bus.ws.rm; 2 3 import javax.xml.datatype.DatatypeConfigurationException ; 4 import javax.xml.datatype.DatatypeFactory ; 5 import javax.xml.datatype.Duration ; 6 7 import junit.framework.TestCase; 8 9 10 import org.easymock.classextension.IMocksControl; 11 import org.objectweb.celtix.bus.configuration.wsrm.DestinationPolicyType; 12 import org.objectweb.celtix.ws.addressing.AddressingProperties; 13 import org.objectweb.celtix.ws.addressing.AttributedURIType; 14 import org.objectweb.celtix.ws.addressing.v200408.AttributedURI; 15 import org.objectweb.celtix.ws.addressing.v200408.EndpointReferenceType; 16 import org.objectweb.celtix.ws.rm.CreateSequenceResponseType; 17 import org.objectweb.celtix.ws.rm.CreateSequenceType; 18 import org.objectweb.celtix.ws.rm.Expires; 19 import org.objectweb.celtix.ws.rm.Identifier; 20 import org.objectweb.celtix.ws.rm.OfferType; 21 import org.objectweb.celtix.ws.rm.wsdl.SequenceFault; 22 23 import static org.easymock.classextension.EasyMock.*; 24 25 public class RMServantTest extends TestCase { 26 27 private IMocksControl control = createNiceControl(); 28 private RMDestination dest; 29 private CreateSequenceType cs; 30 private AttributedURIType to; 31 private DestinationPolicyType dp; 32 private Identifier sid; 33 private AddressingProperties maps; 34 35 public void testCreateSequenceDefault() throws DatatypeConfigurationException , SequenceFault { 36 37 setupCreateSequence(null, null, true, true); 38 39 control.replay(); 40 41 CreateSequenceResponseType csr = (new RMServant()).createSequence(dest, cs, maps); 42 43 control.verify(); 44 45 assertSame(sid, csr.getIdentifier()); 46 assertNotNull(csr.getAccept()); 47 assertTrue(!Names.WSA_NONE_ADDRESS 48 .equals(csr.getAccept().getAcksTo().getAddress().getValue())); 49 } 50 51 public void testCreateSequenceRejectOffer() throws DatatypeConfigurationException , SequenceFault { 52 53 setupCreateSequence(null, null, true, false); 54 55 control.replay(); 56 57 CreateSequenceResponseType csr = (new RMServant()).createSequence(dest, cs, maps); 58 59 control.verify(); 60 61 assertSame(sid, csr.getIdentifier()); 62 assertNotNull(csr.getAccept()); 63 assertEquals(Names.WSA_NONE_ADDRESS, csr.getAccept().getAcksTo().getAddress().getValue()); 64 } 65 66 public void testCreateSequenceNoOfferIncluded() 67 throws DatatypeConfigurationException , SequenceFault { 68 69 setupCreateSequence(null, null, false, false); 70 71 control.replay(); 72 73 CreateSequenceResponseType csr = (new RMServant()).createSequence(dest, cs, maps); 74 75 control.verify(); 76 77 assertSame(sid, csr.getIdentifier()); 78 assertNull(csr.getAccept()); 79 } 80 81 public void testCreateSequenceRequestedDurationNotSupported() 82 throws DatatypeConfigurationException , SequenceFault { 83 84 setupCreateSequence("PT24H", "PT48H", false, false); 85 86 control.replay(); 87 88 CreateSequenceResponseType csr = (new RMServant()).createSequence(dest, cs, maps); 89 90 control.verify(); 91 92 assertSame(sid, csr.getIdentifier()); 93 assertNull(csr.getAccept()); 94 assertEquals("PT24H", csr.getExpires().getValue().toString()); 95 } 96 97 public void testTerminateSequence() throws SequenceFault { 98 dest = control.createMock(RMDestination.class); 99 sid = control.createMock(Identifier.class); 100 101 (new RMServant()).terminateSequence(dest, sid); 102 103 } 104 105 107 private void setupCreateSequence(String supportedDuration, String requestedDuration, 108 boolean includeOffer, boolean acceptOffer) 109 throws DatatypeConfigurationException { 110 111 dest = control.createMock(RMDestination.class); 112 to = control.createMock(AttributedURIType.class); 113 dp = control.createMock(DestinationPolicyType.class); 114 sid = control.createMock(Identifier.class); 115 cs = control.createMock(CreateSequenceType.class); 116 AttributedURIType messageID = control.createMock(AttributedURIType.class); 117 maps = control.createMock(AddressingProperties.class); 118 maps.getMessageID(); 119 expectLastCall().andReturn(messageID); 120 121 dest.generateSequenceIdentifier(); 122 expectLastCall().andReturn(sid); 123 124 dest.getDestinationPolicies(); 125 expectLastCall().andReturn(dp); 126 127 Duration d = null; 128 if (null != supportedDuration) { 129 d = DatatypeFactory.newInstance().newDuration(supportedDuration); 130 } 131 dp.getSequenceExpiration(); 132 expectLastCall().andReturn(d); 133 134 Expires ex = null; 135 if (null != requestedDuration) { 136 Duration rd = DatatypeFactory.newInstance().newDuration(requestedDuration); 137 ex = RMUtils.getWSRMFactory().createExpires(); 138 ex.setValue(rd); 139 } 140 cs.getExpires(); 141 expectLastCall().andReturn(ex); 142 143 setupOffer(includeOffer, acceptOffer); 144 } 145 146 private void setupOffer(boolean includeOffer, boolean acceptOffer) 147 throws DatatypeConfigurationException { 148 149 OfferType o = null; 150 if (includeOffer) { 151 o = control.createMock(OfferType.class); 152 } 153 cs.getOffer(); 154 expectLastCall().andReturn(o); 155 156 if (includeOffer) { 157 dp.isAcceptOffers(); 158 expectLastCall().andReturn(acceptOffer); 159 } 160 161 EndpointReferenceType acksTo = 162 control.createMock(EndpointReferenceType.class); 163 if (includeOffer && acceptOffer) { 164 maps.getTo(); 165 expectLastCall().andReturn(to); 166 RMHandler handler = control.createMock(RMHandler.class); 167 dest.getHandler(); 168 expectLastCall().andReturn(handler); 169 RMSource source = control.createMock(RMSource.class); 170 handler.getSource(); 171 expectLastCall().andReturn(source); 172 o.getIdentifier(); 173 expectLastCall().andReturn(control.createMock(Identifier.class)); 174 o.getExpires(); 175 expectLastCall().andReturn(null); 176 cs.getAcksTo(); 177 expectLastCall().andReturn(acksTo); 178 AttributedURI address = control.createMock(AttributedURI.class); 179 acksTo.getAddress(); 180 expectLastCall().andReturn(address); 181 source.addSequence(isA(SourceSequence.class)); 182 expectLastCall(); 183 source.setCurrent(isA(Identifier.class), isA(SourceSequence.class)); 184 expectLastCall(); 185 } 186 187 cs.getAcksTo(); 188 expectLastCall().andReturn(acksTo); 189 } 190 } 191 | Popular Tags |