towerops/test/towerops/preseem/client_test.exs

78 lines
2.2 KiB
Elixir

defmodule Towerops.Preseem.ClientTest do
use ExUnit.Case, async: true
alias Towerops.Preseem.Client
describe "test_connection/1" do
test "returns ok when API responds with 200" do
Req.Test.stub(Client, fn conn ->
Req.Test.json(conn, %{"status" => "ok", "account" => "test-isp"})
end)
assert {:ok, %{"status" => "ok"}} = Client.test_connection("valid-api-key")
end
test "returns error for 401 unauthorized" do
Req.Test.stub(Client, fn conn ->
conn
|> Plug.Conn.put_status(401)
|> Req.Test.json(%{"error" => "unauthorized"})
end)
assert {:error, :unauthorized} = Client.test_connection("bad-key")
end
test "returns error for 403 forbidden" do
Req.Test.stub(Client, fn conn ->
conn
|> Plug.Conn.put_status(403)
|> Req.Test.json(%{"error" => "forbidden"})
end)
assert {:error, :forbidden} = Client.test_connection("restricted-key")
end
end
describe "list_access_points/1" do
test "returns list of access points on success" do
Req.Test.stub(Client, fn conn ->
Req.Test.json(conn, %{
"data" => [
%{"id" => "ap-1", "name" => "Tower1-AP1", "ip" => "10.0.0.1"},
%{"id" => "ap-2", "name" => "Tower1-AP2", "ip" => "10.0.0.2"}
]
})
end)
assert {:ok, [ap1, ap2]} = Client.list_access_points("valid-key")
assert ap1["id"] == "ap-1"
assert ap2["id"] == "ap-2"
end
test "returns error for 401" do
Req.Test.stub(Client, fn conn ->
conn |> Plug.Conn.put_status(401) |> Req.Test.json(%{"error" => "unauthorized"})
end)
assert {:error, :unauthorized} = Client.list_access_points("bad-key")
end
end
describe "get_access_point_metrics/2" do
test "returns metrics for an AP" do
Req.Test.stub(Client, fn conn ->
Req.Test.json(conn, %{
"data" => %{
"qoe_score" => 85.5,
"capacity_score" => 72.0,
"subscriber_count" => 42,
"p95_latency" => 18.3
}
})
end)
assert {:ok, metrics} = Client.get_access_point_metrics("valid-key", "ap-1")
assert metrics["qoe_score"] == 85.5
end
end
end