mirror of
https://github.com/ipfs/kubo.git
synced 2025-05-20 00:18:12 +08:00

Importantly: * fixes a bunch of MFS bugs * pulls in some bitswap improvements License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net"
|
|
"strings"
|
|
"testing"
|
|
|
|
ma "gx/ipfs/QmNTCey11oxhb1AxDnQBRHtdhap6Ctud872NjAYPYYXPuc/go-multiaddr"
|
|
madns "gx/ipfs/QmQc7jbDUsxUJZyFJzxVrnrWeECCct6fErEpMqtjyWvCX8/go-multiaddr-dns"
|
|
)
|
|
|
|
var (
|
|
ctx = context.Background()
|
|
testAddr, _ = ma.NewMultiaddr("/dns4/example.com/tcp/5001")
|
|
)
|
|
|
|
func makeResolver(n uint8) *madns.Resolver {
|
|
results := make([]net.IPAddr, n)
|
|
for i := uint8(0); i < n; i++ {
|
|
results[i] = net.IPAddr{IP: net.ParseIP(fmt.Sprintf("192.0.2.%d", i))}
|
|
}
|
|
|
|
backend := &madns.MockBackend{
|
|
IP: map[string][]net.IPAddr{
|
|
"example.com": results,
|
|
}}
|
|
|
|
return &madns.Resolver{
|
|
Backend: backend,
|
|
}
|
|
}
|
|
|
|
func TestApiEndpointResolveDNSOneResult(t *testing.T) {
|
|
dnsResolver = makeResolver(1)
|
|
|
|
addr, err := resolveAddr(ctx, testAddr)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
if ref, _ := ma.NewMultiaddr("/ip4/192.0.2.0/tcp/5001"); !addr.Equal(ref) {
|
|
t.Errorf("resolved address was different than expected")
|
|
}
|
|
}
|
|
|
|
func TestApiEndpointResolveDNSMultipleResults(t *testing.T) {
|
|
dnsResolver = makeResolver(4)
|
|
|
|
addr, err := resolveAddr(ctx, testAddr)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
if ref, _ := ma.NewMultiaddr("/ip4/192.0.2.0/tcp/5001"); !addr.Equal(ref) {
|
|
t.Errorf("resolved address was different than expected")
|
|
}
|
|
}
|
|
|
|
func TestApiEndpointResolveDNSNoResults(t *testing.T) {
|
|
dnsResolver = makeResolver(0)
|
|
|
|
addr, err := resolveAddr(ctx, testAddr)
|
|
if addr != nil || err == nil {
|
|
t.Error("expected test address not to resolve, and to throw an error")
|
|
}
|
|
|
|
if !strings.HasPrefix(err.Error(), "non-resolvable API endpoint") {
|
|
t.Errorf("expected error not thrown; actual: %v", err)
|
|
}
|
|
}
|