84 lines
2.4 KiB
Elixir
84 lines
2.4 KiB
Elixir
defmodule ToweropsWeb.Api.V1.ActivityControllerTest do
|
|
use ToweropsWeb.ConnCase, async: true
|
|
|
|
import Towerops.AccountsFixtures
|
|
import Towerops.OrganizationsFixtures
|
|
|
|
alias Towerops.ApiTokens
|
|
|
|
setup do
|
|
user = user_fixture()
|
|
organization = organization_fixture(user.id)
|
|
|
|
{:ok, {_token, raw_token}} =
|
|
ApiTokens.create_api_token(%{
|
|
organization_id: organization.id,
|
|
user_id: user.id,
|
|
name: "Test Token"
|
|
})
|
|
|
|
conn =
|
|
build_conn()
|
|
|> put_req_header("authorization", "Bearer #{raw_token}")
|
|
|> put_req_header("accept", "application/json")
|
|
|
|
%{conn: conn, user: user, organization: organization}
|
|
end
|
|
|
|
describe "index/2" do
|
|
test "returns activity feed data", %{conn: conn} do
|
|
conn = get(conn, ~p"/api/v1/activity")
|
|
|
|
assert %{"data" => data} = json_response(conn, 200)
|
|
assert is_list(data) and data != []
|
|
end
|
|
|
|
test "respects limit parameter", %{conn: conn} do
|
|
conn = get(conn, ~p"/api/v1/activity?limit=5")
|
|
|
|
assert %{"data" => data} = json_response(conn, 200)
|
|
assert length(data) <= 5
|
|
end
|
|
|
|
test "handles invalid limit gracefully (uses default)", %{conn: conn} do
|
|
conn = get(conn, ~p"/api/v1/activity?limit=notanumber")
|
|
|
|
assert %{"data" => _data} = json_response(conn, 200)
|
|
end
|
|
|
|
test "filters by types parameter", %{conn: conn} do
|
|
conn = get(conn, ~p"/api/v1/activity?types=alert")
|
|
|
|
assert %{"data" => data} = json_response(conn, 200)
|
|
assert is_list(data) and data != []
|
|
end
|
|
|
|
test "handles invalid types gracefully", %{conn: conn} do
|
|
conn = get(conn, ~p"/api/v1/activity?types=nonexistent_atom_xyz_12345")
|
|
|
|
assert %{"data" => data} = json_response(conn, 200)
|
|
assert is_list(data) and data != []
|
|
end
|
|
end
|
|
|
|
describe "authentication" do
|
|
test "returns 401 without authorization header" do
|
|
conn =
|
|
build_conn()
|
|
|> put_req_header("accept", "application/json")
|
|
|> get(~p"/api/v1/activity")
|
|
|
|
assert %{"error" => _message} = json_response(conn, 401)
|
|
end
|
|
|
|
test "returns 401 with invalid token" do
|
|
conn =
|
|
build_conn()
|
|
|> put_req_header("authorization", "Bearer towerops_invalid_token")
|
|
|> put_req_header("accept", "application/json")
|
|
|> get(~p"/api/v1/activity")
|
|
|
|
assert %{"error" => _message} = json_response(conn, 401)
|
|
end
|
|
end
|
|
end
|