public void ParseAsteriskRecordRouteHeadersTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); string xtenInviteHeaders = "Via: SIP/2.0/UDP 213.168.225.135:5060;branch=z9hG4bK8Z4EIWBeY45fRGwC0qIeu/xpw3A=" + m_CRLF + "Via: SIP/2.0/UDP 192.168.1.2:5065;received=220.240.255.198:64091;branch=z9hG4bK4E0728C26A0640E7830D7C9179D08D67" + m_CRLF + "Record-Route: <sip:213.168.225.133:5060;lr>,<sip:220.240.255.198:64091;lr>" + m_CRLF + "From: bluesipd <sip:bluesipd@bluesipd:5065>;tag=457825353" + m_CRLF + "To: <sip:303@bluesipd>;tag=as02a64a42" + m_CRLF + "Call-ID: [email protected]" + m_CRLF + "CSeq: 38002 INVITE" + m_CRLF + "User-Agent: asterisk" + m_CRLF + "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY" + m_CRLF + "Contact: <sip:[email protected]>" + m_CRLF + "Content-Type: application/sdp" + m_CRLF + "Content-Length: 350" + m_CRLF; logger.LogDebug("Original SIP Headers:\n" + xtenInviteHeaders); string[] headersCollection = Regex.Split(xtenInviteHeaders, "\r\n"); SIPHeader sipHeader = SIPHeader.ParseSIPHeaders(headersCollection); logger.LogDebug("Parsed SIP Headers:\n" + sipHeader.ToString()); SIPRoute topRoute = sipHeader.RecordRoutes.PopRoute(); Assert.True(topRoute.Host == "213.168.225.133:5060", "The top record route was not parsed correctly."); logger.LogDebug("---------------------------------------------------"); }
public void ParseAuthenticationRequiredHeadersTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); string authReqdHeaders = "SIP/2.0 407 Proxy Authentication Required" + m_CRLF + "Via: SIP/2.0/UDP 192.168.1.2:5066;received=220.240.255.198:64066;branch=65cacee9-25b6-405c-8f82-e40427438af7" + m_CRLF + "From: SER Test X <sip:[email protected]:5065>;tag=196468136" + m_CRLF + "To: <sip:[email protected]>;tag=as67b6416e" + m_CRLF + "Contact: <sip:[email protected]>" + m_CRLF + "Call-ID: [email protected]" + m_CRLF + "CSeq: 908 INVITE" + m_CRLF + "Max-Forwards: 70" + m_CRLF + "User-Agent: asterisk" + m_CRLF + "Proxy-Authenticate: Digest realm=\"asterisk\", nonce=\"15aeff81\"" + m_CRLF + "Record-Route: <sip:213.168.225.135:5060;lr>" + m_CRLF + "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY" + m_CRLF + m_CRLF; logger.LogDebug("Original SIP Headers:\n" + authReqdHeaders); string[] headersCollection = Regex.Split(authReqdHeaders, "\r\n"); SIPHeader sipHeader = SIPHeader.ParseSIPHeaders(headersCollection); logger.LogDebug("Parsed SIP Headers:\n" + sipHeader.ToString()); logger.LogDebug("---------------------------------------------------"); }
public void HuaweiRegisterUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); string sipMsg = "From: <sip:[email protected]>;tag=0477183750" + m_CRLF + "To: <sip:[email protected]>;tag=414dedfe" + m_CRLF + "CSeq: 1 REGISTER" + m_CRLF + "Call-ID: 438676792abe47328fc557da2d84d0ee" + m_CRLF + "Via: SIP/2.0/UDP 192.168.1.102:7246;branch=z9hG4bK92460620adf84edab2341899a3453f79;received=124.168.235.200;rport=10552" + m_CRLF + "Server: Huawei SoftX3000 R006B03D" + m_CRLF + "WWW-Authenticate: Digest realm=\"huawei\"," + m_CRLF + " nonce=\"248e4b4457f252ae53c859bfe03c4f93\",domain=\"sip:huawei.com\"," + m_CRLF + " stale=false,algorithm=MD5" + m_CRLF + "Content-Length: 0" + m_CRLF + m_CRLF; logger.LogDebug("Original SIP Headers:\n" + sipMsg); string[] headersCollection = SIPHeader.SplitHeaders(sipMsg); SIPHeader sipHeader = SIPHeader.ParseSIPHeaders(headersCollection); logger.LogDebug(sipHeader.ToString()); logger.LogDebug(sipHeader.AuthenticationHeader.ToString()); Assert.True(Regex.Match(sipHeader.AuthenticationHeader.ToString(), "nonce").Success, "The WWW-Authenticate header was not correctly parsed across multiple lines."); logger.LogDebug("-----------------------------------------"); }
public void ParseAMulitLineHeaderTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); string mulitLineHeader = "Via: SIP/2.0/UDP 213.168.225.135:5060;branch=z9hG4bK8Z4EIWBeY45fRGwC0qIeu/xpw3A=" + m_CRLF + "Via: SIP/2.0/UDP 192.168.1.2:5065;received=220.240.255.198:64091;branch=z9hG4bK4E0728C26A0640E7830D7C9179D08D67" + m_CRLF + "Record-Route: <sip:213.168.225.133:5060;lr>," + m_CRLF + " <sip:220.240.255.198:64091;lr>" + m_CRLF + "From: bluesipd <sip:bluesipd@bluesipd:5065>;tag=457825353" + m_CRLF + "To: <sip:303@bluesipd>;tag=as02a64a42" + m_CRLF + "Call-ID: [email protected]" + m_CRLF + "CSeq: 38002 INVITE" + m_CRLF + "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY" + m_CRLF + "Contact: <sip:[email protected]>" + m_CRLF + "Content-Type: application/sdp" + m_CRLF + "Content-Length: 350" + m_CRLF; logger.LogDebug("Original SIP Headers:\n" + mulitLineHeader); string[] headersCollection = SIPHeader.SplitHeaders(mulitLineHeader); foreach (string headerStr in headersCollection) { logger.LogDebug("Header => " + headerStr + "."); } Assert.True(headersCollection.Length == 12, "The headers were not split properly."); logger.LogDebug(""); SIPHeader sipHeader = SIPHeader.ParseSIPHeaders(headersCollection); logger.LogDebug("Parsed SIP Headers:\n" + sipHeader.ToString()); Assert.True(sipHeader.RecordRoutes.Length == 2, "An incorrect number of record route entries was extracted, number was " + sipHeader.RecordRoutes.Length + "."); SIPRoute topRoute = sipHeader.RecordRoutes.PopRoute(); Assert.True(topRoute.Host == "213.168.225.133:5060", "The top record route was not parsed correctly."); logger.LogDebug("---------------------------------------------------"); }
public void ParseXTenHeadersTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); string xtenInviteHeaders = "Via: SIP/2.0/UDP 192.168.1.2:5065;rport;branch=z9hG4bKFBB7EAC06934405182D13950BD51F001" + m_CRLF + "From: SER Test X <sip:[email protected]:5065>;tag=196468136" + m_CRLF + "To: <sip:[email protected]>" + m_CRLF + "Contact: <sip:[email protected]:5065>" + m_CRLF + "Call-ID: [email protected]" + m_CRLF + "CSeq: 49429 INVITE" + m_CRLF + "Max-Forwards: 70" + m_CRLF + "Content-Type: application/sdp" + m_CRLF + "User-Agent: X-PRO release 1103v" + m_CRLF + "Content-Length: 271" + m_CRLF; logger.LogDebug("Original SIP Headers:\n" + xtenInviteHeaders); string[] headersCollection = Regex.Split(xtenInviteHeaders, "\r\n"); SIPHeader sipHeader = SIPHeader.ParseSIPHeaders(headersCollection); logger.LogDebug("Parsed SIP Headers:\n" + sipHeader.ToString()); Assert.True("Via: SIP/2.0/UDP 192.168.1.2:5065;rport;branch=z9hG4bKFBB7EAC06934405182D13950BD51F001" == sipHeader.Vias.TopViaHeader.ToString(), "The Via header was not parsed correctly," + sipHeader.Vias.TopViaHeader.ToString() + "."); Assert.True("SER Test X" == sipHeader.From.FromName, "The From Name value was not parsed correctly, " + sipHeader.From.FromName + "."); Assert.True("sip:[email protected]:5065" == sipHeader.From.FromURI.ToString(), "The From URI value was not parsed correctly, " + sipHeader.From.FromURI + "."); Assert.True("196468136" == sipHeader.From.FromTag, "The From tag value was not parsed correctly, " + sipHeader.From.FromTag + "."); Assert.True(null == sipHeader.To.ToName, "The To Name value was not parsed correctly, " + sipHeader.To.ToName + "."); Assert.True("sip:[email protected]" == sipHeader.To.ToURI.ToString(), "The To URI value was not parsed correctly, " + sipHeader.To.ToURI + "."); Assert.True(null == sipHeader.To.ToTag, "The To tag value was not parsed correctly, " + sipHeader.To.ToTag + "."); Assert.True("[email protected]" == sipHeader.CallId, "The Call ID values was not parsed correctly, " + sipHeader.CallId + "."); Assert.True(49429 == sipHeader.CSeq, "The CSeq value was not parsed correctly, " + sipHeader.CSeq + "."); Assert.True(SIPMethodsEnum.INVITE == sipHeader.CSeqMethod, "The CSeq Method value was not parsed correctly, " + sipHeader.CSeqMethod + "."); Assert.True(70 == sipHeader.MaxForwards, "The MaxForwards value was not parsed correctly, " + sipHeader.MaxForwards + "."); Assert.True("X-PRO release 1103v" == sipHeader.UserAgent, "The UserAgent value was not parsed correctly, " + sipHeader.UserAgent + "."); Assert.True("application/sdp" == sipHeader.ContentType, "The ContentType value was not parsed correctly, " + sipHeader.ContentType + "."); Assert.True(271 == sipHeader.ContentLength, "The ContentLength value was not parsed correctly, " + sipHeader.ContentLength + "."); logger.LogDebug("---------------------------------------------------"); }