libp2p_test.go 1.77 KB
Newer Older
1
2
3
4
5
package libp2p

import (
	"context"
	"fmt"
Steven Allen's avatar
Steven Allen committed
6
	"strings"
7
8
9
10
	"testing"

	crypto "github.com/libp2p/go-libp2p-crypto"
	host "github.com/libp2p/go-libp2p-host"
11
	"github.com/libp2p/go-tcp-transport"
12
13
14
)

func TestNewHost(t *testing.T) {
Steven Allen's avatar
Steven Allen committed
15
	h, err := makeRandomHost(t, 9000)
16
17
18
	if err != nil {
		t.Fatal(err)
	}
Steven Allen's avatar
Steven Allen committed
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
	h.Close()
}

func TestBadTransportConstructor(t *testing.T) {
	ctx := context.Background()
	h, err := New(ctx, Transport(func() {}))
	if err == nil {
		h.Close()
		t.Fatal("expected an error")
	}
	if !strings.Contains(err.Error(), "libp2p_test.go") {
		t.Error("expected error to contain debugging info")
	}
}

func TestInsecure(t *testing.T) {
	ctx := context.Background()
	h, err := New(ctx, NoSecurity)
	if err != nil {
		t.Fatal(err)
	}
	h.Close()
41
42
}

43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
func TestDefaultListenAddrs(t *testing.T) {
	ctx := context.Background()

	// Test 1: Listen addr should not set if user defined transport is passed.
	h, err := New(
		ctx,
		Transport(tcp.TcpTransport{}),
	)
	if err != nil {
		t.Fatal(err)
	}

	if len(h.Addrs()) != 0 {
		t.Error("expected zero listen addrs as none is set with user defined transport")
	}
	h.Close()

	// Test 2: User defined listener addrs should overwrite the default options.
	h, err = New(
		ctx,
		Transport(tcp.TcpTransport{}),
		ListenAddrStrings("/ip4/127.0.0.1/tcp/0"),
	)
	if err != nil {
		t.Fatal(err)
	}

	if len(h.Addrs()) != 1 {
		t.Error("expected one listen addr")
	}
	h.Close()
}

76
77
78
79
80
81
82
83
84
85
func makeRandomHost(t *testing.T, port int) (host.Host, error) {
	ctx := context.Background()
	priv, _, err := crypto.GenerateKeyPair(crypto.RSA, 2048)
	if err != nil {
		t.Fatal(err)
	}

	opts := []Option{
		ListenAddrStrings(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", port)),
		Identity(priv),
Steven Allen's avatar
Steven Allen committed
86
87
88
		DefaultTransports,
		DefaultMuxers,
		DefaultSecurity,
89
90
91
92
93
		NATPortMap(),
	}

	return New(ctx, opts...)
}