def test_build(): h = Header("CSeq") h.add_value('314159 INVITE') hvalues = ''.join(h.values) cseq = CSeqHeader(header=h) cseq_values = ''.join(cseq.build().values) assert hvalues == cseq_values
def test_parse(maxforwards, expected): mf_hdr = MaxForwardsHeader(maxforwards) hdr = Header('Max-Forwards') hdr.add_value(maxforwards) mf_hdr_2 = MaxForwardsHeader(hdr) assert mf_hdr == mf_hdr_2 assert mf_hdr_2.maxforwards == mf_hdr.maxforwards == expected
def test_reassemble(ft_str): ft_hdr = FromToHeader(ft_str) hdr = Header('To') hdr.add_value(ft_hdr.assemble()) ft_hdr2 = FromToHeader(hdr) print(f'{ft_hdr} == {ft_hdr2}') assert ft_hdr == ft_hdr2
def test_build(): header = Header('Content-Type') header.add_value("application/sdp") ct_hdr = ContentTypeHeader(header=header) hvalues = ''.join(header.values) ct_hvalues = ''.join(ct_hdr.build().values) assert hvalues == ct_hvalues
def test_no_split_authorization(): h = Header(b'Authorization') h.add_value(b'Digest username="******", realm="atlanta.com",' b' nonce="84a4cc6f3082121f32b42a2187831a9e",' b' response="7587245234b3434cc3412213e5f113a5432"') assert b'Digest username="******", realm="atlanta.com",' \ b' nonce="84a4cc6f3082121f32b42a2187831a9e",' \ b' response="7587245234b3434cc3412213e5f113a5432"' == to_bytes(h.values[0])
def build(self, header_name): hdr = Header(header_name) if self.is_star(): hdr.add_value(STAR) else: for contact in self.contact_list: hdr.add_value(contact.assemble()) return hdr
def test_via_params_ipv6(): hdr = Header('Via') hdr.add_value( "SIP/2.0/TCP 192.168.1.1:5090;branch=branch_v;ttl=200;received=[::1];maddr=[::1]" ) via = ViaHeader.topmost_via(hdr) assert via.received == ipaddress.IPv6Address('::1') assert via.maddr == ipaddress.IPv6Address('::1')
def test_no_split_authenticate(): h = Header(b'WWW-Authenticate') h.add_value( b'"Digest realm="atlanta.com", domain="sip:boxesbybob.com", qop="auth", ' b'nonce="f84f1cec41e6cbe5aea9c8e88d359", opaque="", stale=FALSE, algorithm=MD5"' ) assert b'"Digest realm="atlanta.com", domain="sip:boxesbybob.com", qop="auth", ' \ b'nonce="f84f1cec41e6cbe5aea9c8e88d359", opaque="", stale=FALSE, algorithm=MD5"' == to_bytes(h.values[0])
def test_serialize_multi_values(): hdr = Header(b'Via') hdr.add_value( b'SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1') hdr.add_value(b'SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds') assert b'Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1\r\nVia: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds' == hdr.serialize_to_bytes( ) assert 'Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1\r\nVia: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds' == hdr.serialize_to_string( )
def test_no_split_proxy_authenticate(): h = Header(b'Proxy-Authenticate') h.add_value(b'Digest realm="atlanta.com",' b' domain="sip:ss1.carrier.com", qop="auth",' b' nonce="f84f1cec41e6cbe5aea9c8e88d359",' b' opaque="", stale=FALSE, algorithm=MD5') assert b'Digest realm="atlanta.com",' \ b' domain="sip:ss1.carrier.com", qop="auth",' \ b' nonce="f84f1cec41e6cbe5aea9c8e88d359",' \ b' opaque="", stale=FALSE, algorithm=MD5' == to_bytes(h.values[0])
def test_via_params_2(): hdr = Header('Via') hdr.add_value( "SIP/2.0/TCP 192.168.1.1:5090;branch=branch_v;ttl=200;received=1.1.1.1;maddr=x.com" ) via = ViaHeader.topmost_via(hdr) assert via.branch == Branch('branch_v') assert via.ttl == 200 assert via.received == ipaddress.IPv4Address('1.1.1.1') assert via.maddr == 'x.com'
def make(route): """Makes route header out of route string. Args: route (str): Returns: :obj:RouteHeader - RouteHeader instance. """ h = Header('Route') h.add_value(route) return RouteHeader.parse(h)
def set_header(header_name, header_value, msg): descr = SipHeader.header_descr(header_name) print_name = PRINT_FORM_MAP.get(make_key(header_name), header_name) raw_hdr = Header(print_name) if header_value.assemble(): raw_hdr.add_value(header_value.assemble()) if not raw_hdr.values: msg.headers.pop(make_key(header_name), None) msg.raw_message.delete_header(make_key(header_name)) else: msg.headers[make_key(header_name)] = header_value msg.raw_message.set_header(raw_hdr)
def test_topmost_via_with_spaces(): hdr = Header('Via') hdr.add_value( 'SIP / 2.0 / UDP first.example.com: 4000;ttl=16 ;maddr=224.2.0.1 ;branch=z9hG4bKa7c6a8dlze.1' ) via = ViaHeader.topmost_via(hdr) assert via.sent_protocol.name == 'SIP' assert via.sent_protocol.version == '2.0' assert via.sent_protocol.transport == Transport('UDP') assert via.branch == Branch('z9hG4bKa7c6a8dlze.1') assert via.maddr == ipaddress.IPv4Address('224.2.0.1') assert via.ttl == 16 assert via.sent_by.host == 'first.example.com' assert via.sent_by.port == 4000
def set(self, name, value): if name == ITEM_TYPE: self.type = value elif name == ITEM_BODY: self.body = value elif name == ITEM_REASON: self.reason = value elif name == ITEM_STATUS: self.status = value elif name == ITEM_METHOD: self.method = value elif name == ITEM_RURI: self.ruri = value else: key = make_key(name) hdr = Header(name) if isinstance(value, list): for v in value: hdr.add_value(v) elif isinstance(value, str): hdr.add_value(value) self._headers[key] = hdr
def test_via_gen_params(): hdr = Header('Via') hdr.add_value('SIP/2.0/TCP 192.168.1.1:5090;branch=branch_v;my_param=abc') via = ViaHeader.topmost_via(hdr) assert via.get_raw_param('my_param') == 'abc'
def test_parse_error(val_list): hdr = Header('Contact') for val in val_list: hdr.add_value(val) with pytest.raises(ContactHeaderListError): ContactHeaderList(hdr)
def test_parse(val_list): hdr = Header('Contact') for val in val_list: hdr.add_value(val) ct_lst_hdr = ContactHeaderList(hdr)
def test_assemble(via_str): via1 = ViaHeader(via_str) hdr = Header('Via') hdr.add_value(via1.assemble()) via2 = ViaHeader.topmost_via(hdr) assert via1 == via2
def test_build(): dth = Header('Date') dth.add_value('Tue, 31 Jul 2018 01:49:00 GMT') dth_values = ''.join(dth.values) dt = DateHeader(dth) assert dth_values == ''.join(dt.build().values)
def build(self, header_name): hdr = Header(header_name) for r in self.route_set: hdr.add_value(r.assemble()) return hdr
def test_parse_register(): hdr = Header('CSeq') hdr.add_value('1 REGISTER') cseq = CSeqHeader(header=hdr) assert cseq.number == 1 assert cseq.method == REGISTER
def test_parse_invite(): hdr = Header('CSeq') hdr.add_value('314159 INVITE') cseq = CSeqHeader(header=hdr) assert cseq.number == 314159 assert cseq.method == INVITE
def test_parse_multi_values(): hdr = Header('To') hdr.add_value("Alice <sip:a@b>") hdr.add_value("Bob <sip:b@a>") with pytest.raises(FromToError): FromToHeader(hdr)
def test_as_integer(header_name, header_val, expected): header = Header(header_name) header.add_value(header_val) assert expected == header.as_integer()
def test_parse_fail(value): with pytest.raises(AllowError): h = Header('Allow') h.add_value(value) ah = AllowHeader() ah.parse(h)
def test_parse_success(values): h = Header('Allow') h.add_value(values) ah = AllowHeader() ah.parse(h)
def test_parse_error(value): hdr = Header('CSeq') hdr.add_value(value) with pytest.raises(PySIPException): CSeqHeader(header=hdr)
def build(self, header_name='CSeq'): hdr = Header(header_name) hdr.add_value(self.assemble()) return hdr
def test_serialize_single_value(): hdr = Header('Content-Length') hdr.add_value('10') assert b'Content-Length: 10' == hdr.serialize_to_bytes() assert 'Content-Length: 10' == hdr.serialize_to_string()