towerops/test/snmpkit/snmp_test.exs

85 lines
3.7 KiB
Elixir

defmodule SnmpKit.SNMPTest do
use ExUnit.Case, async: true
alias SnmpKit.SNMP
# Invalid target that will fail quickly
@invalid_target %{host: "240.0.0.1", port: 161, version: :v2c, community: "public"}
@test_oid "1.3.6.1.2.1.1.1.0"
@timeout 1
describe "get_bulk!/3" do
test "raises on error" do
# Test both arities by calling with and without opts
assert_raise RuntimeError, ~r/get_bulk! failed/, fn ->
SNMP.get_bulk!(@invalid_target, @test_oid)
end
assert_raise RuntimeError, ~r/get_bulk! failed/, fn ->
SNMP.get_bulk!(@invalid_target, @test_oid, timeout: @timeout)
end
end
end
describe "bulk_walk!/3" do
test "raises on error" do
# Test both arities
assert_raise RuntimeError, ~r/bulk_walk! failed/, fn ->
SNMP.bulk_walk!(@invalid_target, @test_oid)
end
assert_raise RuntimeError, ~r/bulk_walk! failed/, fn ->
SNMP.bulk_walk!(@invalid_target, @test_oid, timeout: @timeout)
end
end
end
describe "delegated functions" do
# Call each delegate to ensure 100% coverage (with fast 1ms timeout)
test "all core operations delegate correctly" do
assert {:error, _} = SNMP.get(@invalid_target, @test_oid)
assert {:error, _} = SNMP.get(@invalid_target, @test_oid, timeout: @timeout)
assert {:error, _} = SNMP.get_next(@invalid_target, @test_oid)
assert {:error, _} = SNMP.get_next(@invalid_target, @test_oid, timeout: @timeout)
assert {:error, _} = SNMP.set(@invalid_target, @test_oid, "test")
assert {:error, _} = SNMP.set(@invalid_target, @test_oid, "test", timeout: @timeout)
end
test "all bulk operations delegate correctly" do
assert {:error, _} = SNMP.get_bulk(@invalid_target, @test_oid)
assert {:error, _} = SNMP.get_bulk(@invalid_target, @test_oid, timeout: @timeout)
assert {:error, _} = SNMP.bulk_walk(@invalid_target, @test_oid)
assert {:error, _} = SNMP.bulk_walk(@invalid_target, @test_oid, timeout: @timeout)
end
test "all walk operations delegate correctly" do
assert {:error, _} = SNMP.walk(@invalid_target, @test_oid)
assert {:error, _} = SNMP.walk(@invalid_target, @test_oid, timeout: @timeout)
assert {:error, _} = SNMP.walk_table(@invalid_target, @test_oid)
assert {:error, _} = SNMP.walk_table(@invalid_target, @test_oid, timeout: @timeout)
assert {:error, _} = SNMP.get_column(@invalid_target, @test_oid, 1)
assert {:error, _} = SNMP.get_column(@invalid_target, @test_oid, 1, timeout: @timeout)
end
test "all pretty operations delegate correctly" do
assert {:error, _} = SNMP.get_pretty(@invalid_target, @test_oid)
assert {:error, _} = SNMP.get_pretty(@invalid_target, @test_oid, timeout: @timeout)
assert {:error, _} = SNMP.walk_pretty(@invalid_target, @test_oid)
assert {:error, _} = SNMP.walk_pretty(@invalid_target, @test_oid, timeout: @timeout)
assert {:error, _} = SNMP.bulk_pretty(@invalid_target, @test_oid)
assert {:error, _} = SNMP.bulk_pretty(@invalid_target, @test_oid, timeout: @timeout)
assert {:error, _} = SNMP.bulk_walk_pretty(@invalid_target, @test_oid)
assert {:error, _} = SNMP.bulk_walk_pretty(@invalid_target, @test_oid, timeout: @timeout)
end
test "async operations delegate correctly" do
# async operations may return Task references, errors, or other values
# Just verify they execute without crashing
SNMP.get_async(@invalid_target, @test_oid)
SNMP.get_async(@invalid_target, @test_oid, timeout: @timeout)
SNMP.get_bulk_async(@invalid_target, @test_oid)
SNMP.get_bulk_async(@invalid_target, @test_oid, timeout: @timeout)
end
end
end