Files
expanded-dms/internal/server/network/backend_networkmanager_vpn_test.go
2025-11-12 23:59:00 +11:00

139 lines
4.2 KiB
Go

package network
import (
"testing"
mock_gonetworkmanager "github.com/AvengeMedia/danklinux/internal/mocks/github.com/Wifx/gonetworkmanager/v2"
"github.com/Wifx/gonetworkmanager/v2"
"github.com/stretchr/testify/assert"
)
func TestNetworkManagerBackend_ListVPNProfiles(t *testing.T) {
mockNM := mock_gonetworkmanager.NewMockNetworkManager(t)
mockSettings := mock_gonetworkmanager.NewMockSettings(t)
backend, err := NewNetworkManagerBackend(mockNM)
assert.NoError(t, err)
backend.settings = mockSettings
mockSettings.EXPECT().ListConnections().Return([]gonetworkmanager.Connection{}, nil)
profiles, err := backend.ListVPNProfiles()
assert.NoError(t, err)
assert.Empty(t, profiles)
}
func TestNetworkManagerBackend_ListActiveVPN(t *testing.T) {
mockNM := mock_gonetworkmanager.NewMockNetworkManager(t)
backend, err := NewNetworkManagerBackend(mockNM)
assert.NoError(t, err)
mockNM.EXPECT().GetPropertyActiveConnections().Return([]gonetworkmanager.ActiveConnection{}, nil)
active, err := backend.ListActiveVPN()
assert.NoError(t, err)
assert.Empty(t, active)
}
func TestNetworkManagerBackend_ConnectVPN_NotFound(t *testing.T) {
mockNM := mock_gonetworkmanager.NewMockNetworkManager(t)
mockSettings := mock_gonetworkmanager.NewMockSettings(t)
backend, err := NewNetworkManagerBackend(mockNM)
assert.NoError(t, err)
backend.settings = mockSettings
mockSettings.EXPECT().ListConnections().Return([]gonetworkmanager.Connection{}, nil)
err = backend.ConnectVPN("non-existent-vpn-12345", false)
assert.Error(t, err)
assert.Contains(t, err.Error(), "not found")
}
func TestNetworkManagerBackend_ConnectVPN_SingleActive_NoActiveVPN(t *testing.T) {
mockNM := mock_gonetworkmanager.NewMockNetworkManager(t)
mockSettings := mock_gonetworkmanager.NewMockSettings(t)
backend, err := NewNetworkManagerBackend(mockNM)
assert.NoError(t, err)
backend.settings = mockSettings
mockSettings.EXPECT().ListConnections().Return([]gonetworkmanager.Connection{}, nil)
mockNM.EXPECT().GetPropertyActiveConnections().Return([]gonetworkmanager.ActiveConnection{}, nil)
err = backend.ConnectVPN("non-existent-vpn-12345", true)
assert.Error(t, err)
}
func TestNetworkManagerBackend_DisconnectVPN_NotActive(t *testing.T) {
mockNM := mock_gonetworkmanager.NewMockNetworkManager(t)
backend, err := NewNetworkManagerBackend(mockNM)
assert.NoError(t, err)
mockNM.EXPECT().GetPropertyActiveConnections().Return([]gonetworkmanager.ActiveConnection{}, nil)
err = backend.DisconnectVPN("non-existent-vpn-12345")
assert.Error(t, err)
}
func TestNetworkManagerBackend_DisconnectAllVPN(t *testing.T) {
mockNM := mock_gonetworkmanager.NewMockNetworkManager(t)
backend, err := NewNetworkManagerBackend(mockNM)
assert.NoError(t, err)
mockNM.EXPECT().GetPropertyActiveConnections().Return([]gonetworkmanager.ActiveConnection{}, nil)
err = backend.DisconnectAllVPN()
assert.NoError(t, err)
}
func TestNetworkManagerBackend_ClearVPNCredentials_NotFound(t *testing.T) {
mockNM := mock_gonetworkmanager.NewMockNetworkManager(t)
mockSettings := mock_gonetworkmanager.NewMockSettings(t)
backend, err := NewNetworkManagerBackend(mockNM)
assert.NoError(t, err)
backend.settings = mockSettings
mockSettings.EXPECT().ListConnections().Return([]gonetworkmanager.Connection{}, nil)
err = backend.ClearVPNCredentials("non-existent-vpn-12345")
assert.Error(t, err)
assert.Contains(t, err.Error(), "not found")
}
func TestNetworkManagerBackend_UpdateVPNConnectionState_NotConnecting(t *testing.T) {
mockNM := mock_gonetworkmanager.NewMockNetworkManager(t)
backend, err := NewNetworkManagerBackend(mockNM)
assert.NoError(t, err)
backend.stateMutex.Lock()
backend.state.IsConnectingVPN = false
backend.state.ConnectingVPNUUID = ""
backend.stateMutex.Unlock()
assert.NotPanics(t, func() {
backend.updateVPNConnectionState()
})
}
func TestNetworkManagerBackend_UpdateVPNConnectionState_EmptyUUID(t *testing.T) {
mockNM := mock_gonetworkmanager.NewMockNetworkManager(t)
backend, err := NewNetworkManagerBackend(mockNM)
assert.NoError(t, err)
backend.stateMutex.Lock()
backend.state.IsConnectingVPN = true
backend.state.ConnectingVPNUUID = ""
backend.stateMutex.Unlock()
assert.NotPanics(t, func() {
backend.updateVPNConnectionState()
})
}