85 lines
3.7 KiB
Elixir
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
|