Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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])
Exemple #6
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
Exemple #7
0
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')
Exemple #8
0
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])
Exemple #9
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(
    )
Exemple #10
0
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])
Exemple #11
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'
Exemple #12
0
    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)
Exemple #13
0
 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)
Exemple #14
0
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
Exemple #15
0
 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
Exemple #16
0
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)
Exemple #19
0
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
Exemple #20
0
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)
Exemple #21
0
 def build(self, header_name):
     hdr = Header(header_name)
     for r in self.route_set:
         hdr.add_value(r.assemble())
     return hdr
Exemple #22
0
def test_parse_register():
    hdr = Header('CSeq')
    hdr.add_value('1 REGISTER')
    cseq = CSeqHeader(header=hdr)
    assert cseq.number == 1
    assert cseq.method == REGISTER
Exemple #23
0
def test_parse_invite():
    hdr = Header('CSeq')
    hdr.add_value('314159 INVITE')
    cseq = CSeqHeader(header=hdr)
    assert cseq.number == 314159
    assert cseq.method == INVITE
Exemple #24
0
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)
Exemple #25
0
def test_as_integer(header_name, header_val, expected):
    header = Header(header_name)
    header.add_value(header_val)
    assert expected == header.as_integer()
Exemple #26
0
def test_parse_fail(value):
    with pytest.raises(AllowError):
        h = Header('Allow')
        h.add_value(value)
        ah = AllowHeader()
        ah.parse(h)
Exemple #27
0
def test_parse_success(values):
    h = Header('Allow')
    h.add_value(values)
    ah = AllowHeader()
    ah.parse(h)
Exemple #28
0
def test_parse_error(value):
    hdr = Header('CSeq')
    hdr.add_value(value)
    with pytest.raises(PySIPException):
        CSeqHeader(header=hdr)
Exemple #29
0
 def build(self, header_name='CSeq'):
     hdr = Header(header_name)
     hdr.add_value(self.assemble())
     return hdr
Exemple #30
0
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()