mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-22 08:03:30 +01:00
12f442439a
* Refactor setup key handling to use store methods Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * add lock to get account groups Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * add check for regular user Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * get only required groups for auto-group validation Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * add account lock and return auto groups map on validation Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * refactor account peers update Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * Refactor groups to use store methods Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * refactor GetGroupByID and add NewGroupNotFoundError Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * fix tests Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * Add AddPeer and RemovePeer methods to Group struct Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * Preserve store engine in SqlStore transactions Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * Run groups ops in transaction Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * fix missing group removed from setup key activity Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * fix merge Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * fix merge Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * fix sonar Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * Change setup key log level to debug for missing group Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * Retrieve modified peers once for group events Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * Add tests Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * Add account locking and merge group deletion methods Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> * Fix tests Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com> --------- Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>
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))
|
|
})
|
|
}
|