82 lines
2.9 KiB
Elixir
82 lines
2.9 KiB
Elixir
defmodule ToweropsNativeTest do
|
|
use ExUnit.Case, async: false
|
|
|
|
setup do
|
|
# Load MIBs before tests run
|
|
mib_dir = Application.app_dir(:towerops, "priv/mibs")
|
|
ToweropsNative.load_mib_directory(mib_dir)
|
|
:ok
|
|
end
|
|
|
|
describe "resolve_oid/1" do
|
|
@tag :skip
|
|
test "resolves standard MIB names" do
|
|
# sysDescr = 1.3.6.1.2.1.1.1
|
|
assert {:ok, oid} = ToweropsNative.resolve_oid("sysDescr")
|
|
assert String.starts_with?(oid, "1.3.6.1.2.1.1.1")
|
|
|
|
# sysObjectID = 1.3.6.1.2.1.1.2
|
|
assert {:ok, oid} = ToweropsNative.resolve_oid("sysObjectID")
|
|
assert String.starts_with?(oid, "1.3.6.1.2.1.1.2")
|
|
|
|
# sysUpTime = 1.3.6.1.2.1.1.3
|
|
assert {:ok, oid} = ToweropsNative.resolve_oid("sysUpTime")
|
|
assert String.starts_with?(oid, "1.3.6.1.2.1.1.3")
|
|
|
|
# sysContact = 1.3.6.1.2.1.1.4
|
|
assert {:ok, oid} = ToweropsNative.resolve_oid("sysContact")
|
|
assert String.starts_with?(oid, "1.3.6.1.2.1.1.4")
|
|
|
|
# sysName = 1.3.6.1.2.1.1.5
|
|
assert {:ok, oid} = ToweropsNative.resolve_oid("sysName")
|
|
assert String.starts_with?(oid, "1.3.6.1.2.1.1.5")
|
|
|
|
# sysLocation = 1.3.6.1.2.1.1.6
|
|
assert {:ok, oid} = ToweropsNative.resolve_oid("sysLocation")
|
|
assert String.starts_with?(oid, "1.3.6.1.2.1.1.6")
|
|
end
|
|
|
|
@tag :skip
|
|
test "resolves vendor MIB names" do
|
|
# IEEE802dot11-MIB::dot11manufacturerProductName
|
|
# = 1.2.840.10036.3.1.2.1.3
|
|
assert {:ok, oid} = ToweropsNative.resolve_oid("dot11manufacturerProductName")
|
|
assert String.starts_with?(oid, "1.2.840.10036")
|
|
|
|
# IEEE802dot11-MIB::dot11manufacturerProductVersion
|
|
# = 1.2.840.10036.3.1.2.1.4
|
|
assert {:ok, oid} = ToweropsNative.resolve_oid("dot11manufacturerProductVersion")
|
|
assert String.starts_with?(oid, "1.2.840.10036")
|
|
end
|
|
|
|
@tag :skip
|
|
test "handles MODULE::name format by stripping module prefix" do
|
|
# The resolve_oid function handles MODULE::name format
|
|
assert {:ok, oid1} = ToweropsNative.resolve_oid("SNMPv2-MIB::sysDescr")
|
|
assert {:ok, oid2} = ToweropsNative.resolve_oid("sysDescr")
|
|
assert oid1 == oid2
|
|
end
|
|
|
|
test "returns error for invalid MIB names" do
|
|
assert {:error, _reason} = ToweropsNative.resolve_oid("nonExistentMibName")
|
|
assert {:error, _reason} = ToweropsNative.resolve_oid("invalidMibObject123")
|
|
end
|
|
|
|
test "handles empty strings" do
|
|
assert {:error, _reason} = ToweropsNative.resolve_oid("")
|
|
end
|
|
end
|
|
|
|
describe "load_mib_directory/1" do
|
|
test "returns ok for valid directory path" do
|
|
# The NIF currently just returns :ok since snmptools loads from system paths
|
|
mib_dir = Application.app_dir(:towerops, "priv/mibs")
|
|
assert :ok = ToweropsNative.load_mib_directory(mib_dir)
|
|
end
|
|
|
|
test "returns ok for non-existent directory" do
|
|
# Current implementation always returns :ok since MIBs are loaded from system paths
|
|
assert :ok = ToweropsNative.load_mib_directory("/non/existent/path")
|
|
end
|
|
end
|
|
end
|