towerops/test/towerops_native_test.exs

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