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 }