fix(nextlite): wrap DNSDecoder errors (#962)
The simplest fix is to wrap such errors in dnsdecoder.go. Fixes https://github.com/ooni/probe/issues/2317.
This commit is contained in:
parent
550b602a00
commit
7ee9f096d1
2 changed files with 65 additions and 16 deletions
|
|
@ -12,14 +12,22 @@ import (
|
|||
"github.com/ooni/probe-cli/v3/internal/runtimex"
|
||||
)
|
||||
|
||||
func dnsDecoderErrorIsWrapped(err error) bool {
|
||||
var errwrapper *ErrWrapper
|
||||
return errors.As(err, &errwrapper)
|
||||
}
|
||||
|
||||
func TestDNSDecoderMiekg(t *testing.T) {
|
||||
t.Run("DecodeResponse", func(t *testing.T) {
|
||||
t.Run("UnpackError", func(t *testing.T) {
|
||||
d := &DNSDecoderMiekg{}
|
||||
resp, err := d.DecodeResponse(nil, &mocks.DNSQuery{})
|
||||
if err == nil || err.Error() != "dns: overflow unpacking uint16" {
|
||||
if err == nil || err.Error() != "unknown_failure: dns: overflow unpacking uint16" {
|
||||
t.Fatal("unexpected error", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if resp != nil {
|
||||
t.Fatal("expected nil resp here")
|
||||
}
|
||||
|
|
@ -33,6 +41,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, ErrDNSIsQuery) {
|
||||
t.Fatal("unexpected err", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if resp != nil {
|
||||
t.Fatal("expected nil resp here")
|
||||
}
|
||||
|
|
@ -53,6 +64,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, ErrDNSReplyWithWrongQueryID) {
|
||||
t.Fatal("unexpected error", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if resp != nil {
|
||||
t.Fatal("expected nil resp here")
|
||||
}
|
||||
|
|
@ -163,6 +177,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, io.err) {
|
||||
t.Fatal("unexpected err", err)
|
||||
}
|
||||
if err != nil && !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
@ -187,6 +204,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, ErrOODNSRefused) {
|
||||
t.Fatal("unexpected err", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if https != nil {
|
||||
t.Fatal("expected nil https result")
|
||||
}
|
||||
|
|
@ -210,6 +230,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, ErrOODNSNoAnswer) {
|
||||
t.Fatal("unexpected err", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if https != nil {
|
||||
t.Fatal("expected nil https results")
|
||||
}
|
||||
|
|
@ -268,6 +291,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, ErrOODNSRefused) {
|
||||
t.Fatal("unexpected err", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if len(ns) > 0 {
|
||||
t.Fatal("expected empty ns result")
|
||||
}
|
||||
|
|
@ -291,6 +317,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, ErrOODNSNoAnswer) {
|
||||
t.Fatal("unexpected err", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if len(ns) > 0 {
|
||||
t.Fatal("expected empty ns results")
|
||||
}
|
||||
|
|
@ -343,6 +372,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, ErrOODNSRefused) {
|
||||
t.Fatal("unexpected err", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if len(addrs) > 0 {
|
||||
t.Fatal("expected empty addrs result")
|
||||
}
|
||||
|
|
@ -366,6 +398,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, ErrOODNSNoAnswer) {
|
||||
t.Fatal("unexpected err", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if len(addrs) > 0 {
|
||||
t.Fatal("expected empty ns results")
|
||||
}
|
||||
|
|
@ -456,6 +491,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, ErrOODNSNoAnswer) {
|
||||
t.Fatal("not the error we expected", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if len(addrs) > 0 {
|
||||
t.Fatal("expected no addrs here")
|
||||
}
|
||||
|
|
@ -482,6 +520,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, ErrOODNSNoAnswer) {
|
||||
t.Fatal("not the error we expected", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if len(addrs) > 0 {
|
||||
t.Fatal("expected no addrs here")
|
||||
}
|
||||
|
|
@ -532,6 +573,9 @@ func TestDNSDecoderMiekg(t *testing.T) {
|
|||
if !errors.Is(err, ErrOODNSNoAnswer) {
|
||||
t.Fatal("unexpected err", err)
|
||||
}
|
||||
if !dnsDecoderErrorIsWrapped(err) {
|
||||
t.Fatal("unwrapped error", err)
|
||||
}
|
||||
if cname != "" {
|
||||
t.Fatal("expected empty cname result")
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue