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