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.
65 lines
2.2 KiB
Elixir
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
|