protected override void Given() { base.Given(); _senderEndPoint = TestConstants.IpEndPoint1; var via = new SipViaHeaderBuilder().WithSentBy(_senderEndPoint).Build(); var request = new SipRequestBuilder().WithVias(new SipViaHeaderListBuilder().Add(via).Build()).Build(); var bytes = new DataBytesBuilder().WithText(request.FormatEnvelopeToString()).Build(); _packet = new UdpPacketBuilder().WithDataBytes(bytes).WithRemoteEp(_senderEndPoint).Build(); _channel = new UdpMessageChannel(new SipStack(), new SipValidator(), new SipMessageParser()); }
/// <summary> /// creates a bye. this is to be sent by the testclient UA /// </summary> /// <param name="invite"></param> /// <param name="ringing"></param> /// <returns></returns> protected SipRequest CreateByeRequest(SipRequest invite, SipResponse ringing) { var addressFactory = new SipAddressFactory(); var headerFactory = new SipHeaderFactory(); var messageFactory = new SipMessageFactory(); var localSequenceNr = invite.CSeq.Sequence; /*_remoteSequenceNr remains empty */ var callId = invite.CallId.Value; var localTag = invite.From.Tag; var remoteUri = invite.To.SipUri; var localUri = invite.From.SipUri; var remoteTag = ringing.To.Tag; var remoteTarget = ringing.Contacts.GetTopMost().SipUri; var routeSet = ringing.RecordRoutes.ToList();//refuse looseroutin-less recordroutes routeSet.Reverse(); var cseqHeader = headerFactory.CreateSCeqHeader(SipMethods.Bye, localSequenceNr + 1); var toAddress = addressFactory.CreateAddress(null, remoteUri); var toHeader = headerFactory.CreateToHeader(toAddress, remoteTag); var fromAddress = addressFactory.CreateAddress(null, localUri); var fromHeader = headerFactory.CreateFromHeader(fromAddress, localTag); var callIdheader = headerFactory.CreateCallIdHeader(callId); var viaHeader = new SipViaHeaderBuilder().WithSentBy(_testClientUaEndPoint).Build(); var requestUri = remoteUri.Clone(); var maxForwardsHeader = headerFactory.CreateMaxForwardsHeader(); var request = messageFactory.CreateRequest( requestUri, SipMethods.Bye, callIdheader, cseqHeader, fromHeader, toHeader, viaHeader, maxForwardsHeader); foreach (var route in routeSet) { request.Routes.Add(new SipRouteHeader() { SipUri = route.SipUri, Parameters = route.Parameters }); } return(request); }
/// <summary> /// creates a bye. this is to be sent by the testclient UA /// </summary> /// <param name="invite"></param> /// <param name="ringing"></param> /// <returns></returns> protected SipRequest CreateByeRequest(SipRequest invite, SipResponse ringing) { var addressFactory = new SipAddressFactory(); var headerFactory = new SipHeaderFactory(); var messageFactory = new SipMessageFactory(); var localSequenceNr = invite.CSeq.Sequence; /*_remoteSequenceNr remains empty */ var callId = invite.CallId.Value; var localTag = invite.From.Tag; var remoteUri = invite.To.SipUri; var localUri = invite.From.SipUri; var remoteTag = ringing.To.Tag; var remoteTarget = ringing.Contacts.GetTopMost().SipUri; var routeSet = ringing.RecordRoutes.ToList();//refuse looseroutin-less recordroutes routeSet.Reverse(); var cseqHeader = headerFactory.CreateSCeqHeader(SipMethods.Bye, localSequenceNr+1); var toAddress = addressFactory.CreateAddress(null, remoteUri); var toHeader = headerFactory.CreateToHeader(toAddress, remoteTag); var fromAddress = addressFactory.CreateAddress(null, localUri); var fromHeader = headerFactory.CreateFromHeader(fromAddress, localTag); var callIdheader = headerFactory.CreateCallIdHeader(callId); var viaHeader = new SipViaHeaderBuilder().WithSentBy(_testClientUaEndPoint).Build(); var requestUri = remoteUri.Clone(); var maxForwardsHeader = headerFactory.CreateMaxForwardsHeader(); var request = messageFactory.CreateRequest( requestUri, SipMethods.Bye, callIdheader, cseqHeader, fromHeader, toHeader, viaHeader, maxForwardsHeader); foreach (var route in routeSet) { request.Routes.Add(new SipRouteHeader() { SipUri = route.SipUri, Parameters = route.Parameters }); } return request; }