towerops/test/towerops/netbox/client_test.exs
Graham McIntire 2929848f51
fix: validate NetBox URL scheme before making HTTP requests
The NetBox client crashed with "scheme is required for url" when
integration credentials had a nil or blank URL. normalize_url/1 now
validates the scheme and returns a clear error instead of letting
Finch blow up.
2026-02-17 10:50:00 -06:00

65 lines
2.2 KiB
Elixir

defmodule Towerops.NetBox.ClientTest do
use ExUnit.Case, async: true
alias Towerops.NetBox.Client
describe "test_connection/2 with invalid URLs" do
test "returns error when base_url is nil" do
assert {:error, message} = Client.test_connection(nil, "some-token")
assert message =~ "missing or invalid"
end
test "returns error when base_url is empty string" do
assert {:error, message} = Client.test_connection("", "some-token")
assert message =~ "missing or invalid"
end
test "returns error when base_url is whitespace only" do
assert {:error, message} = Client.test_connection(" ", "some-token")
assert message =~ "missing or invalid"
end
test "returns error when base_url has no scheme" do
assert {:error, message} = Client.test_connection("netbox.example.com", "some-token")
assert message =~ "missing or invalid"
end
test "returns error when base_url has unsupported scheme" do
assert {:error, message} = Client.test_connection("ftp://netbox.example.com", "some-token")
assert message =~ "missing or invalid"
end
end
describe "list_sites/3 with invalid URLs" do
test "returns error when base_url is nil" do
assert {:error, message} = Client.list_sites(nil, "some-token")
assert message =~ "missing or invalid"
end
test "returns error when base_url is empty string" do
assert {:error, message} = Client.list_sites("", "some-token")
assert message =~ "missing or invalid"
end
end
describe "list_devices/3 with invalid URLs" do
test "returns error when base_url is nil" do
assert {:error, message} = Client.list_devices(nil, "some-token")
assert message =~ "missing or invalid"
end
end
describe "upsert_site/3 with invalid URLs" do
test "returns error when base_url is nil" do
assert {:error, message} = Client.upsert_site(nil, "some-token", %{name: "Test"})
assert message =~ "missing or invalid"
end
end
describe "upsert_device/3 with invalid URLs" do
test "returns error when base_url is nil" do
assert {:error, message} = Client.upsert_device(nil, "some-token", %{name: "Test"})
assert message =~ "missing or invalid"
end
end
end