towerops/test/towerops/snmp/profiles/vendors/alvarion_test.exs
2026-06-16 09:56:51 -05:00

101 lines
2.6 KiB
Elixir

defmodule Towerops.Snmp.Profiles.Vendors.AlvarionTest do
use Towerops.DataCase, async: true
import Mox
alias Towerops.Snmp.Profiles.Vendors.Alvarion
alias Towerops.Snmp.SnmpMock
setup :verify_on_exit!
@client_opts [
ip: "192.168.1.1",
community: "public",
version: "2c",
port: 161,
timeout: 5000
]
describe "profile_names/0" do
test "returns breeze profile name" do
assert Alvarion.profile_names() == ["breeze"]
end
end
describe "detect_hardware/1" do
test "detects hardware from model OID" do
expect(SnmpMock, :get, fn _, "1.3.6.1.4.1.12394.4.1.1.1.0", _ ->
{:ok, "BreezeMAX 5000"}
end)
assert Alvarion.detect_hardware(@client_opts) == "BreezeMAX 5000"
end
test "returns nil when OID unavailable" do
expect(SnmpMock, :get, fn _, _, _ ->
{:error, :no_such_object}
end)
assert Alvarion.detect_hardware(@client_opts) == nil
end
end
describe "wireless_oid_defs/0" do
test "returns list of wireless sensor definitions" do
defs = Alvarion.wireless_oid_defs()
assert [_ | _] = defs
end
test "includes RSSI sensor" do
defs = Alvarion.wireless_oid_defs()
rssi = Enum.find(defs, &(&1.sensor_descr == "RSSI"))
assert rssi.sensor_type == "rssi"
assert rssi.sensor_unit == "dBm"
end
test "includes SNR sensor" do
defs = Alvarion.wireless_oid_defs()
snr = Enum.find(defs, &(&1.sensor_descr == "SNR"))
assert snr.sensor_type == "snr"
assert snr.sensor_unit == "dB"
end
test "includes associated subscribers sensor" do
defs = Alvarion.wireless_oid_defs()
clients = Enum.find(defs, &(&1.sensor_descr == "Associated Subscribers"))
assert clients.sensor_type == "clients"
end
end
describe "discover_wireless_sensors/1" do
test "discovers sensors when SNMP responds" do
expect(SnmpMock, :get, 4, fn _, oid, _ ->
cond do
String.contains?(oid, "12394.4.1.3.1.0") -> {:ok, -65}
String.contains?(oid, "12394.4.1.3.2.0") -> {:ok, 25}
String.contains?(oid, "12394.4.1.5.1.0") -> {:ok, 48}
String.contains?(oid, "12394.4.1.2.3.0") -> {:ok, 20}
true -> {:error, :no_such_object}
end
end)
sensors = Alvarion.discover_wireless_sensors(@client_opts)
assert length(sensors) == 4
end
test "returns empty list when no sensors respond" do
expect(SnmpMock, :get, 4, fn _, _, _ ->
{:error, :no_such_object}
end)
sensors = Alvarion.discover_wireless_sensors(@client_opts)
assert sensors == []
end
end
end