1153850aca
While there, `.../internal/sessionresolver` => `.../sessionresolver` See https://github.com/ooni/probe/issues/2255
49 lines
923 B
Go
49 lines
923 B
Go
package sessionresolver
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
)
|
|
|
|
type jsonCodecMockable struct {
|
|
EncodeData []byte
|
|
EncodeErr error
|
|
DecodeErr error
|
|
}
|
|
|
|
func (c *jsonCodecMockable) Encode(v interface{}) ([]byte, error) {
|
|
return c.EncodeData, c.EncodeErr
|
|
}
|
|
|
|
func (c *jsonCodecMockable) Decode(b []byte, v interface{}) error {
|
|
return c.DecodeErr
|
|
}
|
|
|
|
func TestJSONCodecCustom(t *testing.T) {
|
|
c := &jsonCodecMockable{}
|
|
reso := &Resolver{jsonCodec: c}
|
|
if r := reso.codec(); r != c {
|
|
t.Fatal("not the codec we expected")
|
|
}
|
|
}
|
|
|
|
func TestJSONCodecDefault(t *testing.T) {
|
|
reso := &Resolver{}
|
|
in := resolverinfo{
|
|
URL: "https://dns.google/dns.query",
|
|
Score: 0.99,
|
|
}
|
|
data, err := reso.codec().Encode(in)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var out resolverinfo
|
|
if err := reso.codec().Decode(data, &out); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if diff := cmp.Diff(in, out); diff != "" {
|
|
t.Fatal(diff)
|
|
}
|
|
}
|