mirror of
https://github.com/henrygd/beszel.git
synced 2026-10-03 14:57:46 +02:00
86 lines
2.2 KiB
Go
86 lines
2.2 KiB
Go
package wifi
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/fxamacker/cbor/v2"
|
|
"github.com/henrygd/beszel/internal/entities/system"
|
|
)
|
|
|
|
func TestSkipFromEnv(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
key, value string
|
|
want bool
|
|
}{
|
|
{"SKIP_WIFI", "true", true},
|
|
{"BESZEL_AGENT_SKIP_WIFI", "true", true},
|
|
{"SKIP_WIFI", "false", false},
|
|
{"SKIP_WIFI", "", false},
|
|
} {
|
|
t.Run(tc.key+"="+tc.value, func(t *testing.T) {
|
|
t.Setenv(tc.key, tc.value)
|
|
if got := skipFromEnv(); got != tc.want {
|
|
t.Fatalf("got %v, want %v", got, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestCollectSkipped(t *testing.T) {
|
|
original := skip
|
|
t.Cleanup(func() { skip = original })
|
|
skip = func() bool { return true }
|
|
if got := Collect(); got != nil {
|
|
t.Fatalf("collected while skipped: %v", got)
|
|
}
|
|
}
|
|
|
|
func TestSSIDWireSafety(t *testing.T) {
|
|
for _, tc := range []struct{ input, want string }{
|
|
{"home", "home"}, {"网络 café", "网络 café"}, {"", ""},
|
|
{"raw\xffssid", ""}, {"truncated\xe2\x82", ""},
|
|
} {
|
|
t.Run(tc.input, func(t *testing.T) {
|
|
ssid := validSSID(tc.input)
|
|
if ssid != tc.want {
|
|
t.Fatalf("got %q, want %q", ssid, tc.want)
|
|
}
|
|
signal := -50.0
|
|
payload := map[string]system.WiFi{"wlan0": {SSID: ssid, Signal: &signal}}
|
|
wire, err := cbor.Marshal(payload)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var decoded map[string]system.WiFi
|
|
if err := cbor.Unmarshal(wire, &decoded); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if decoded["wlan0"].Signal == nil || *decoded["wlan0"].Signal != signal || decoded["wlan0"].SSID != tc.want {
|
|
t.Fatal(decoded)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSignals(t *testing.T) {
|
|
strong, weak, rounded := -40.0, -200.0, -52.6
|
|
got := Signals(map[string]system.WiFi{
|
|
"wlan0": {SSID: "home", Signal: &strong},
|
|
"wlan1": {Signal: &weak},
|
|
"wlan2": {Signal: &rounded},
|
|
"wlan3": {SSID: "no rssi"},
|
|
})
|
|
want := map[string]int8{"wlan0": -40, "wlan1": -128, "wlan2": -53}
|
|
if len(got) != len(want) {
|
|
t.Fatalf("got %v, want %v", got, want)
|
|
}
|
|
for id, signal := range want {
|
|
if got[id] != signal {
|
|
t.Fatalf("got %v, want %v", got, want)
|
|
}
|
|
}
|
|
if Signals(map[string]system.WiFi{"wlan0": {}}) != nil || Signals(nil) != nil {
|
|
t.Fatal("expected nil without available readings")
|
|
}
|
|
}
|