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());
 }
示例#2
0
        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;
        }