Example #1
0
        public void UnderstandCompactHeadersTest()
        {
            var       mock   = new Mock <ISipParserHandler>();
            SipParser parser = new SipParser(mock.Object);

            byte[] messageBytes = Encoding.ASCII.GetBytes(ExampleSipRequests.SimpleInvite);

            parser.ParseRequest(messageBytes);

            Assert.Equal(@"""Test 15"" <sip:[email protected]>tag=as58f4201b", parser.Headers["f"].First());               //NOTE: "f" is "from"

            Assert.Equal(@"<sip:[email protected]>", parser.Headers["t"].First());                                         //NOTE: "t" is "from"
            Assert.Equal(@"SIP/2.0/UDP 10.10.1.99:5060;branch=z9hG4bK343bf628;rport", parser.Headers["v"].First());    //NOTE: "v" is "Via"

            Assert.Equal(@"<sip:[email protected]>", parser.Headers["m"].First());                                         //NOTE: "m" is "Contact"
            Assert.Equal(@"[email protected]", parser.Headers["i"].First());                 //NOTE: "i" is "call-id"
            Assert.Equal(@"INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY", parser.Headers["u"].First()); //NOTE: "u" is "Allow-Events"
            Assert.Equal(@"replaces", parser.Headers["k"].First());                                                    //NOTE: "k" is "supported"
            Assert.Equal(@"application/sdp", parser.Headers["c"].First());                                             //NOTE: "c" is "Content-Type"
            Assert.Equal(@"258", parser.Headers["l"].First());                                                         //NOTE: "l" is "Content-Length"

            Assert.Single(parser.ViaHeaders);

            //Assert.Equal(@"xxxxxxxx", parser.Headers["o"].First());  //NOTE: "o" is "Event"
            //Assert.Equal(@"xxxxxxxx", parser.Headers["e"].First());  //NOTE: "e" is "Content-Encoding"
            //CSeq: 102 INVITE
            //User-Agent: Asterisk PBX
            //Max-Forwards: 70
            //Date: Wed, 06 Dec 2009 14:12:45 GMT
        }
Example #2
0
        public void MissingHeaderThrowsSomethingTest()
        {
            var       mock   = new Mock <ISipParserHandler>();
            SipParser parser = new SipParser(mock.Object);

            byte[] messageBytes = Encoding.ASCII.GetBytes(ExampleSipRequests.SimpleInvite);

            parser.ParseRequest(messageBytes);
            Assert.Throws <KeyNotFoundException>(() => parser.Headers["Header Which Is Not There"]);   //TODO: maybe some other kind of exception? or a NULL return value?
        }
Example #3
0
        public void TortuousInviteRawSipHeaderTextTest()
        {
            string    expectedBody = @"v=0
o=mhandley 29739 7272939 IN IP4 192.0.2.3
s=-
c=IN IP4 192.0.2.4
t=0 0
m=audio 49217 RTP/AVP 0 12
m=video 3227 RTP/AVP 31
a=rtpmap:31 LPC
";
            var       mock         = new Mock <ISipParserHandler>();
            SipParser parser       = new SipParser(mock.Object);

            byte[] messageBytes = Encoding.ASCII.GetBytes(Rfc4475TestMessages.AShortTortuousINVITE);

            parser.ParseRequest(messageBytes);

            //NOTE: these asserts look ugly because we are testing the RAW text from the message

            Assert.Equal("INVITE sip:[email protected];unknownparam SIP/2.0", parser.RequestLine);        //TODO: drill in for just the parts: verb, sip address (without that "unknownparam" bit), etc.
            Assert.Equal(13, parser.Headers.Count);
            Assert.Equal("sip:[email protected] ;   tag    = 1918181833n", parser.Headers["to"].First()); //TODO: drill in to strip that "tag" bit
            Assert.Equal(@"""J Rosenberg \\\""""       <sip:[email protected]>
  ;
  tag = 98asjd8", parser.Headers["from"].First());                                                                    //TODO: drill in to separate the torture cruft

            Assert.Equal("0068", parser.Headers["max-forwards"].First());
            Assert.Equal("[email protected]", parser.Headers["call-id"].First());
            Assert.Equal("150", parser.Headers["Content-Length"].First());
            Assert.Equal(@"0009
  INVITE", parser.Headers["cseq"].First());                      //TODO - its ugly, probably not right
            Assert.Equal(@"SIP  /   2.0
 /UDP
    192.0.2.2;branch=390skdjuw", parser.Headers["via"].First()); //TODO - its ugly, probably not right
            Assert.Equal("", parser.Headers["s"].First());

            Assert.Equal(@"newfangled value
 continued newfangled value", parser.Headers["NewFangledHeader"].First());
            Assert.Equal(";;,,;;,;", parser.Headers["UnknownHeaderWithUnusualValue"].First());
            Assert.Equal("application/sdp", parser.Headers["Content-Type"].First());
            Assert.Equal("<sip:services.example.com;lr;unknownwith=value;unknown-no-value>", parser.Headers["Route"].First());
            Assert.Equal(@"SIP  / 2.0  / TCP     spindle.example.com   ;
  branch  =   z9hG4bK9ikj8  ,
 SIP  /    2.0   / UDP  192.168.255.111   ; branch=
 z9hG4bK30239", parser.Headers["v"].Last());    //NOTE: there were 2 "Via" in the torture header, one was a "v", ahem...
            Assert.Equal(@"""Quoted string \""\"""" <sip:[email protected]> ; newparam =
      newvalue ;
  secondparam ; q = 0.33", parser.Headers["m"].First());

            Assert.Equal(2, parser.ViaHeaders.Count());

            Assert.Equal(expectedBody, parser.Body);  //TODO: drill in
        }