package network import ( "testing" mock_gonetworkmanager "github.com/AvengeMedia/danklinux/internal/mocks/github.com/Wifx/gonetworkmanager/v2" "github.com/stretchr/testify/assert" ) func TestNetworkManagerBackend_GetWiFiEnabled(t *testing.T) { mockNM := mock_gonetworkmanager.NewMockNetworkManager(t) backend, err := NewNetworkManagerBackend(mockNM) assert.NoError(t, err) mockNM.EXPECT().GetPropertyWirelessEnabled().Return(true, nil) enabled, err := backend.GetWiFiEnabled() assert.NoError(t, err) assert.True(t, enabled) } func TestNetworkManagerBackend_SetWiFiEnabled(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } originalState, err := backend.GetWiFiEnabled() if err != nil { t.Skipf("Cannot get WiFi state: %v", err) } defer func() { backend.SetWiFiEnabled(originalState) }() err = backend.SetWiFiEnabled(!originalState) assert.NoError(t, err) backend.stateMutex.RLock() assert.Equal(t, !originalState, backend.state.WiFiEnabled) backend.stateMutex.RUnlock() } func TestNetworkManagerBackend_ScanWiFi_NoDevice(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } backend.wifiDevice = nil err = backend.ScanWiFi() assert.Error(t, err) assert.Contains(t, err.Error(), "no WiFi device available") } func TestNetworkManagerBackend_ScanWiFi_Disabled(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } if backend.wifiDevice == nil { t.Skip("No WiFi device available") } backend.stateMutex.Lock() backend.state.WiFiEnabled = false backend.stateMutex.Unlock() err = backend.ScanWiFi() assert.Error(t, err) assert.Contains(t, err.Error(), "WiFi is disabled") } func TestNetworkManagerBackend_GetWiFiNetworkDetails_NoDevice(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } backend.wifiDevice = nil _, err = backend.GetWiFiNetworkDetails("TestNetwork") assert.Error(t, err) assert.Contains(t, err.Error(), "no WiFi device available") } func TestNetworkManagerBackend_ConnectWiFi_NoDevice(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } backend.wifiDevice = nil req := ConnectionRequest{SSID: "TestNetwork", Password: "password"} err = backend.ConnectWiFi(req) assert.Error(t, err) assert.Contains(t, err.Error(), "no WiFi device available") } func TestNetworkManagerBackend_ConnectWiFi_AlreadyConnected(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } if backend.wifiDevice == nil { t.Skip("No WiFi device available") } backend.stateMutex.Lock() backend.state.WiFiConnected = true backend.state.WiFiSSID = "TestNetwork" backend.stateMutex.Unlock() req := ConnectionRequest{SSID: "TestNetwork", Password: "password"} err = backend.ConnectWiFi(req) assert.NoError(t, err) } func TestNetworkManagerBackend_DisconnectWiFi_NoDevice(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } backend.wifiDevice = nil err = backend.DisconnectWiFi() assert.Error(t, err) assert.Contains(t, err.Error(), "no WiFi device available") } func TestNetworkManagerBackend_IsConnectingTo(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } backend.stateMutex.Lock() backend.state.IsConnecting = true backend.state.ConnectingSSID = "TestNetwork" backend.stateMutex.Unlock() assert.True(t, backend.IsConnectingTo("TestNetwork")) assert.False(t, backend.IsConnectingTo("OtherNetwork")) } func TestNetworkManagerBackend_IsConnectingTo_NotConnecting(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } backend.stateMutex.Lock() backend.state.IsConnecting = false backend.state.ConnectingSSID = "" backend.stateMutex.Unlock() assert.False(t, backend.IsConnectingTo("TestNetwork")) } func TestNetworkManagerBackend_UpdateWiFiNetworks_NoDevice(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } backend.wifiDevice = nil _, err = backend.updateWiFiNetworks() assert.Error(t, err) assert.Contains(t, err.Error(), "no WiFi device available") } func TestNetworkManagerBackend_FindConnection_NoSettings(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } backend.settings = nil _, err = backend.findConnection("NonExistentNetwork") assert.Error(t, err) } func TestNetworkManagerBackend_CreateAndConnectWiFi_NoDevice(t *testing.T) { backend, err := NewNetworkManagerBackend() if err != nil { t.Skipf("NetworkManager not available: %v", err) } backend.wifiDevice = nil backend.wifiDev = nil req := ConnectionRequest{SSID: "TestNetwork", Password: "password"} err = backend.createAndConnectWiFi(req) assert.Error(t, err) assert.Contains(t, err.Error(), "no WiFi device available") }