예제 #1
0
def test_no_answer():
    z = dns.zone.from_text(base, "example.", zone_factory=dns.versioned.Zone)
    m = dns.message.from_text(no_answer,
                              origin=z.origin,
                              one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.IXFR, serial=1) as xfr:
        with pytest.raises(dns.exception.FormError):
            xfr.process_message(m)
예제 #2
0
def test_axfr_answers_after_final_soa():
    z = dns.versioned.Zone("example.")
    m = dns.message.from_text(axfr_answers_after_final_soa,
                              origin=z.origin,
                              one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.AXFR) as xfr:
        with pytest.raises(dns.exception.FormError):
            xfr.process_message(m)
예제 #3
0
def test_axfr_unexpected_origin():
    z = dns.versioned.Zone('example.')
    m = dns.message.from_text(axfr_unexpected_origin,
                              origin=z.origin,
                              one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.AXFR) as xfr:
        with pytest.raises(dns.exception.FormError):
            xfr.process_message(m)
예제 #4
0
def test_udp_ixfr_unexpected_end_just_stops():
    # This is where everything looks good, but the IXFR just stops
    # in the middle.
    z = dns.zone.from_text(base, "example.", zone_factory=dns.versioned.Zone)
    m = dns.message.from_text(unexpected_end_ixfr_2,
                              origin=z.origin,
                              one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.IXFR, serial=1, is_udp=True) as xfr:
        with pytest.raises(dns.exception.FormError):
            xfr.process_message(m)
예제 #5
0
def test_ixfr_unexpected_end_bad_diff_sequence():
    # This is where we get the end serial, but haven't seen all of
    # the expected diffs
    z = dns.zone.from_text(base, "example.", zone_factory=dns.versioned.Zone)
    m = dns.message.from_text(unexpected_end_ixfr,
                              origin=z.origin,
                              one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.IXFR, serial=1) as xfr:
        with pytest.raises(dns.exception.FormError):
            xfr.process_message(m)
예제 #6
0
def test_serial_went_backwards_ixfr():
    z = dns.zone.from_text(ixfr_expected,
                           "example.",
                           zone_factory=dns.versioned.Zone)
    m = dns.message.from_text(bad_empty_ixfr,
                              origin=z.origin,
                              one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.IXFR, serial=5) as xfr:
        with pytest.raises(dns.xfr.SerialWentBackwards):
            xfr.process_message(m)
예제 #7
0
def test_retry_tcp_ixfr():
    z = dns.zone.from_text(ixfr_expected,
                           "example.",
                           zone_factory=dns.versioned.Zone)
    m = dns.message.from_text(retry_tcp_ixfr,
                              origin=z.origin,
                              one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.IXFR, serial=1, is_udp=True) as xfr:
        with pytest.raises(dns.xfr.UseTCP):
            xfr.process_message(m)
예제 #8
0
def test_bad_empty_ixfr():
    z = dns.zone.from_text(ixfr_expected,
                           'example.',
                           zone_factory=dns.versioned.Zone)
    m = dns.message.from_text(bad_empty_ixfr,
                              origin=z.origin,
                              one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.IXFR, serial=3) as xfr:
        with pytest.raises(dns.exception.FormError):
            xfr.process_message(m)
예제 #9
0
def test_basic_axfr_two_parts():
    z = dns.versioned.Zone("example.")
    m1 = dns.message.from_text(axfr1, origin=z.origin, one_rr_per_rrset=True)
    m2 = dns.message.from_text(axfr2, origin=z.origin, one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.AXFR) as xfr:
        done = xfr.process_message(m1)
        assert not done
        done = xfr.process_message(m2)
        assert done
    ez = dns.zone.from_text(base, "example.")
    assert z == ez
예제 #10
0
def test_basic_ixfr_unversioned():
    z = dns.zone.from_text(base, "example.")
    m = dns.message.from_text(ixfr, origin=z.origin, one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.IXFR, serial=1) as xfr:
        done = xfr.process_message(m)
        assert done
    ez = dns.zone.from_text(ixfr_expected, "example.")
    assert z == ez
예제 #11
0
def test_basic_axfr():
    z = dns.versioned.Zone('example.')
    m = dns.message.from_text(axfr, origin=z.origin, one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.AXFR) as xfr:
        done = xfr.process_message(m)
        assert done
    ez = dns.zone.from_text(base, 'example.')
    assert z == ez
예제 #12
0
def test_ixfr_is_axfr():
    z = dns.zone.from_text(base, "example.", zone_factory=dns.versioned.Zone)
    m = dns.message.from_text(ixfr_axfr,
                              origin=z.origin,
                              one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.IXFR, serial=0xFFFFFFFF) as xfr:
        done = xfr.process_message(m)
        assert done
    ez = dns.zone.from_text(base, "example.")
    assert z == ez
예제 #13
0
def test_compressed_ixfr():
    z = dns.zone.from_text(base, 'example.', zone_factory=dns.versioned.Zone)
    m = dns.message.from_text(compressed_ixfr,
                              origin=z.origin,
                              one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.IXFR, serial=1) as xfr:
        done = xfr.process_message(m)
        assert done
    ez = dns.zone.from_text(ixfr_expected, 'example.')
    assert z == ez
예제 #14
0
def test_basic_ixfr_many_parts():
    z = dns.zone.from_text(base, "example.", zone_factory=dns.versioned.Zone)
    with dns.xfr.Inbound(z, dns.rdatatype.IXFR, serial=1) as xfr:
        done = False
        for text in ixfrs:
            assert not done
            m = dns.message.from_text(text,
                                      origin=z.origin,
                                      one_rr_per_rrset=True)
            done = xfr.process_message(m)
        assert done
    ez = dns.zone.from_text(ixfr_expected, "example.")
    assert z == ez
예제 #15
0
def test_refused():
    z = dns.zone.from_text(base, "example.", zone_factory=dns.versioned.Zone)
    m = dns.message.from_text(refused, origin=z.origin, one_rr_per_rrset=True)
    with dns.xfr.Inbound(z, dns.rdatatype.IXFR, serial=1) as xfr:
        with pytest.raises(dns.xfr.TransferError):
            xfr.process_message(m)