Files
cunicu/pkg/wg/compare_test.go
2022-10-07 18:30:50 +02:00

109 lines
1.8 KiB
Go

package wg_test
import (
"time"
"github.com/stv0g/cunicu/pkg/wg"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Context("compare", func() {
Context("peer", func() {
When("equal", func() {
var a wgtypes.Peer
BeforeEach(func() {
a = wgtypes.Peer{}
})
It("works", func() {
Expect(wg.CmpPeers(a, a)).To(BeZero())
})
})
When("unequal", func() {
var a, b wgtypes.Peer
BeforeEach(func() {
a = wgtypes.Peer{}
b = wgtypes.Peer{}
k, err := wgtypes.GenerateKey()
Expect(err).To(Succeed())
b.PublicKey = k
})
It("works", func() {
Expect(wg.CmpPeers(a, b)).NotTo(BeZero())
})
})
})
Context("device", func() {
var err error
var sk1, sk2 wgtypes.Key
BeforeEach(func() {
sk1, err = wgtypes.GeneratePrivateKey()
Expect(err).To(Succeed())
sk2, err = wgtypes.GeneratePrivateKey()
Expect(err).To(Succeed())
})
It("equal", func() {
d1 := wgtypes.Device{
PublicKey: sk1.PublicKey(),
}
Expect(wg.CmpDevices(d1, d1)).To(Equal(0))
})
It("unequal", func() {
d1 := wgtypes.Device{
PublicKey: sk1.PublicKey(),
}
d2 := wgtypes.Device{
PublicKey: sk2.PublicKey(),
}
Expect(wg.CmpDevices(d1, d2)).NotTo(Equal(0))
})
})
Context("last handshake time", func() {
var p1, p2 wgtypes.Peer
var now time.Time
BeforeEach(func() {
now = time.Now()
p1 = wgtypes.Peer{
LastHandshakeTime: now,
}
p2 = wgtypes.Peer{
LastHandshakeTime: now.Add(time.Second),
}
})
It("equal", func() {
Expect(wg.CmpPeerHandshakeTime(p1, p1)).To(Equal(0))
})
It("before", func() {
Expect(wg.CmpPeerHandshakeTime(p1, p2)).To(BeNumerically(">", 0))
})
It("after", func() {
Expect(wg.CmpPeerHandshakeTime(p2, p1)).To(BeNumerically("<", 0))
})
})
})