...

Source file src/github.com/letsencrypt/boulder/bdns/problem_test.go

Documentation: github.com/letsencrypt/boulder/bdns

     1  package bdns
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  	"net"
     7  	"testing"
     8  
     9  	"github.com/letsencrypt/boulder/test"
    10  	"github.com/miekg/dns"
    11  )
    12  
    13  func TestError(t *testing.T) {
    14  	testCases := []struct {
    15  		err      error
    16  		expected string
    17  	}{
    18  		{
    19  			&Error{dns.TypeA, "hostname", makeTimeoutError(), -1, nil},
    20  			"DNS problem: query timed out looking up A for hostname",
    21  		}, {
    22  			&Error{dns.TypeMX, "hostname", &net.OpError{Err: errors.New("some net error")}, -1, nil},
    23  			"DNS problem: networking error looking up MX for hostname",
    24  		}, {
    25  			&Error{dns.TypeTXT, "hostname", nil, dns.RcodeNameError, nil},
    26  			"DNS problem: NXDOMAIN looking up TXT for hostname - check that a DNS record exists for this domain",
    27  		}, {
    28  			&Error{dns.TypeTXT, "hostname", context.DeadlineExceeded, -1, nil},
    29  			"DNS problem: query timed out looking up TXT for hostname",
    30  		}, {
    31  			&Error{dns.TypeTXT, "hostname", context.Canceled, -1, nil},
    32  			"DNS problem: query timed out (and was canceled) looking up TXT for hostname",
    33  		}, {
    34  			&Error{dns.TypeCAA, "hostname", nil, dns.RcodeServerFailure, nil},
    35  			"DNS problem: SERVFAIL looking up CAA for hostname - the domain's nameservers may be malfunctioning",
    36  		}, {
    37  			&Error{dns.TypeA, "hostname", nil, dns.RcodeServerFailure, &dns.EDNS0_EDE{InfoCode: 1, ExtraText: "oh no"}},
    38  			"DNS problem: looking up A for hostname: DNSSEC: Unsupported DNSKEY Algorithm: oh no",
    39  		}, {
    40  			&Error{dns.TypeA, "hostname", nil, dns.RcodeServerFailure, &dns.EDNS0_EDE{InfoCode: 6, ExtraText: ""}},
    41  			"DNS problem: looking up A for hostname: DNSSEC: Bogus",
    42  		}, {
    43  			&Error{dns.TypeA, "hostname", nil, dns.RcodeServerFailure, &dns.EDNS0_EDE{InfoCode: 1337, ExtraText: "mysterious"}},
    44  			"DNS problem: looking up A for hostname: Unknown Extended DNS Error code 1337: mysterious",
    45  		}, {
    46  			&Error{dns.TypeCAA, "hostname", nil, dns.RcodeServerFailure, nil},
    47  			"DNS problem: SERVFAIL looking up CAA for hostname - the domain's nameservers may be malfunctioning",
    48  		}, {
    49  			&Error{dns.TypeCAA, "hostname", nil, dns.RcodeServerFailure, nil},
    50  			"DNS problem: SERVFAIL looking up CAA for hostname - the domain's nameservers may be malfunctioning",
    51  		}, {
    52  			&Error{dns.TypeA, "hostname", nil, dns.RcodeFormatError, nil},
    53  			"DNS problem: FORMERR looking up A for hostname",
    54  		},
    55  	}
    56  	for _, tc := range testCases {
    57  		if tc.err.Error() != tc.expected {
    58  			t.Errorf("got %q, expected %q", tc.err.Error(), tc.expected)
    59  		}
    60  	}
    61  }
    62  
    63  func TestWrapErr(t *testing.T) {
    64  	err := wrapErr(dns.TypeA, "hostname", &dns.Msg{
    65  		MsgHdr: dns.MsgHdr{Rcode: dns.RcodeSuccess},
    66  	}, nil)
    67  	test.AssertNotError(t, err, "expected success")
    68  
    69  	err = wrapErr(dns.TypeA, "hostname", &dns.Msg{
    70  		MsgHdr: dns.MsgHdr{Rcode: dns.RcodeRefused},
    71  	}, nil)
    72  	test.AssertError(t, err, "expected error")
    73  
    74  	err = wrapErr(dns.TypeA, "hostname", &dns.Msg{
    75  		MsgHdr: dns.MsgHdr{Rcode: dns.RcodeSuccess},
    76  	}, errors.New("oh no"))
    77  	test.AssertError(t, err, "expected error")
    78  }
    79  

View as plain text