mirror of
https://github.com/netbirdio/netbird.git
synced 2024-12-12 18:00:49 +01:00
91 lines
2.5 KiB
Go
91 lines
2.5 KiB
Go
|
package group
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestAddPeer(t *testing.T) {
|
||
|
t.Run("add new peer to empty slice", func(t *testing.T) {
|
||
|
group := &Group{Peers: []string{}}
|
||
|
peerID := "peer1"
|
||
|
assert.True(t, group.AddPeer(peerID))
|
||
|
assert.Contains(t, group.Peers, peerID)
|
||
|
})
|
||
|
|
||
|
t.Run("add new peer to nil slice", func(t *testing.T) {
|
||
|
group := &Group{Peers: nil}
|
||
|
peerID := "peer1"
|
||
|
assert.True(t, group.AddPeer(peerID))
|
||
|
assert.Contains(t, group.Peers, peerID)
|
||
|
})
|
||
|
|
||
|
t.Run("add new peer to non-empty slice", func(t *testing.T) {
|
||
|
group := &Group{Peers: []string{"peer1", "peer2"}}
|
||
|
peerID := "peer3"
|
||
|
assert.True(t, group.AddPeer(peerID))
|
||
|
assert.Contains(t, group.Peers, peerID)
|
||
|
})
|
||
|
|
||
|
t.Run("add duplicate peer", func(t *testing.T) {
|
||
|
group := &Group{Peers: []string{"peer1", "peer2"}}
|
||
|
peerID := "peer1"
|
||
|
assert.False(t, group.AddPeer(peerID))
|
||
|
assert.Equal(t, 2, len(group.Peers))
|
||
|
})
|
||
|
|
||
|
t.Run("add empty peer", func(t *testing.T) {
|
||
|
group := &Group{Peers: []string{"peer1", "peer2"}}
|
||
|
peerID := ""
|
||
|
assert.False(t, group.AddPeer(peerID))
|
||
|
assert.Equal(t, 2, len(group.Peers))
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestRemovePeer(t *testing.T) {
|
||
|
t.Run("remove existing peer from slice", func(t *testing.T) {
|
||
|
group := &Group{Peers: []string{"peer1", "peer2", "peer3"}}
|
||
|
peerID := "peer2"
|
||
|
assert.True(t, group.RemovePeer(peerID))
|
||
|
assert.NotContains(t, group.Peers, peerID)
|
||
|
assert.Equal(t, 2, len(group.Peers))
|
||
|
})
|
||
|
|
||
|
t.Run("remove peer from empty slice", func(t *testing.T) {
|
||
|
group := &Group{Peers: []string{}}
|
||
|
peerID := "peer1"
|
||
|
assert.False(t, group.RemovePeer(peerID))
|
||
|
assert.Equal(t, 0, len(group.Peers))
|
||
|
})
|
||
|
|
||
|
t.Run("remove peer from nil slice", func(t *testing.T) {
|
||
|
group := &Group{Peers: nil}
|
||
|
peerID := "peer1"
|
||
|
assert.False(t, group.RemovePeer(peerID))
|
||
|
assert.Nil(t, group.Peers)
|
||
|
})
|
||
|
|
||
|
t.Run("remove non-existent peer", func(t *testing.T) {
|
||
|
group := &Group{Peers: []string{"peer1", "peer2"}}
|
||
|
peerID := "peer3"
|
||
|
assert.False(t, group.RemovePeer(peerID))
|
||
|
assert.Equal(t, 2, len(group.Peers))
|
||
|
})
|
||
|
|
||
|
t.Run("remove peer from single-item slice", func(t *testing.T) {
|
||
|
group := &Group{Peers: []string{"peer1"}}
|
||
|
peerID := "peer1"
|
||
|
assert.True(t, group.RemovePeer(peerID))
|
||
|
assert.Equal(t, 0, len(group.Peers))
|
||
|
assert.NotContains(t, group.Peers, peerID)
|
||
|
})
|
||
|
|
||
|
t.Run("remove empty peer", func(t *testing.T) {
|
||
|
group := &Group{Peers: []string{"peer1", "peer2"}}
|
||
|
peerID := ""
|
||
|
assert.False(t, group.RemovePeer(peerID))
|
||
|
assert.Equal(t, 2, len(group.Peers))
|
||
|
})
|
||
|
}
|