c9943dff38
This pull request started as a draft to enable users to see CNAME answers. It contained several patches which we merged separately (see https://github.com/ooni/probe-cli/pull/873#issuecomment-1222406732 and 2301a30630...60b7d1f87b
for details on what has actually changed, which is based on patches originally part of this PR). In its final form, however, this PR only deals with exposing more low-level DNS fields to the archival data format.
Closes: https://github.com/ooni/probe/issues/2228
Related PR spec: https://github.com/ooni/spec/pull/256
85 lines
1.6 KiB
Go
85 lines
1.6 KiB
Go
package netxlite
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"io"
|
|
"testing"
|
|
)
|
|
|
|
func TestGetaddrinfoLookupANY(t *testing.T) {
|
|
addrs, _, err := getaddrinfoLookupANY(context.Background(), "127.0.0.1")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(addrs) != 1 || addrs[0] != "127.0.0.1" {
|
|
t.Fatal("unexpected addrs", addrs)
|
|
}
|
|
}
|
|
|
|
func TestErrorToGetaddrinfoRetval(t *testing.T) {
|
|
type args struct {
|
|
err error
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want int64
|
|
}{{
|
|
name: "with valid getaddrinfo error",
|
|
args: args{
|
|
newErrGetaddrinfo(144, nil),
|
|
},
|
|
want: 144,
|
|
}, {
|
|
name: "with another kind of error",
|
|
args: args{io.EOF},
|
|
want: 0,
|
|
}, {
|
|
name: "with nil error",
|
|
args: args{nil},
|
|
want: 0,
|
|
}}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := ErrorToGetaddrinfoRetvalOrZero(tt.args.err); got != tt.want {
|
|
t.Errorf("ErrorToGetaddrinfoRetval() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_newErrGetaddrinfo(t *testing.T) {
|
|
type args struct {
|
|
code int64
|
|
err error
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
}{{
|
|
name: "common case",
|
|
args: args{
|
|
code: 17,
|
|
err: io.EOF,
|
|
},
|
|
}}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
err := newErrGetaddrinfo(tt.args.code, tt.args.err)
|
|
if err == nil {
|
|
t.Fatal("expected non-nil error")
|
|
}
|
|
if !errors.Is(err, tt.args.err) {
|
|
t.Fatal("Unwrap() is not working correctly")
|
|
}
|
|
if err.Error() != tt.args.err.Error() {
|
|
t.Fatal("Error() is not working correctly")
|
|
}
|
|
if err.Code != tt.args.code {
|
|
t.Fatal("Code has not been copied correctly")
|
|
}
|
|
})
|
|
}
|
|
}
|