38 lines
1001 B
Go
38 lines
1001 B
Go
package peer
|
|
|
|
import (
|
|
"net/netip"
|
|
"testing"
|
|
|
|
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
|
)
|
|
|
|
// newTestApp returns a minimal App wired to a fakeWGDevice.
|
|
// vpnIP is the local VPN address (e.g. "10.0.0.1").
|
|
// isPublic / isRelay describe the local node's role.
|
|
func newTestApp(t *testing.T, vpnIP string, isPublic, isRelay bool) (*App, *fakeWGDevice) {
|
|
t.Helper()
|
|
privKey, err := wgtypes.GeneratePrivateKey()
|
|
if err != nil {
|
|
t.Fatalf("generate key: %v", err)
|
|
}
|
|
ip := netip.MustParseAddr(vpnIP)
|
|
dev := &fakeWGDevice{}
|
|
a := &App{
|
|
vpnIP: ip,
|
|
vpnNet: netip.MustParsePrefix("10.0.0.0/24"),
|
|
privKey: privKey,
|
|
pubKey: privKey.PublicKey(),
|
|
isPublic: isPublic,
|
|
isRelay: isRelay,
|
|
dev: dev,
|
|
peersByKey: make(map[wgtypes.Key]*Peer),
|
|
peersByIP: make(map[netip.Addr]*Peer),
|
|
hubAddCh: make(chan HubPeer),
|
|
hubRemoveCh: make(chan wgtypes.Key),
|
|
pingCh: make(chan PingEvent),
|
|
multicastCh: make(chan MulticastEvent),
|
|
}
|
|
return a, dev
|
|
}
|