defmodule GitGudWeb.AdminFederationLiveTest do
use GitGudWeb.ConnCase, async: false
import Phoenix.LiveViewTest
import GitGud.AccountsFixtures
test "redirects unauthenticated users", %{conn: conn} do
assert {:error, {:redirect, %{to: to}}} = live(conn, ~p"/admin/federation")
assert to =~ "/"
end
test "redirects non-admin users", %{conn: conn} do
user = user_fixture()
conn = log_in_user(conn, user)
assert {:error, {:redirect, %{to: to}}} = live(conn, ~p"/admin/federation")
assert to == ~p"/"
end
test "admin sees the federation console", %{conn: conn} do
user = user_fixture()
{:ok, _} =
user
|> GitGud.Accounts.User.admin_changeset(true)
|> GitGud.Repo.update()
conn = log_in_user(conn, user)
{:ok, _view, html} = live(conn, ~p"/admin/federation")
assert html =~ "Federation admin"
assert html =~ "deliveries"
assert html =~ "quarantine"
assert html =~ "blocks"
assert html =~ "allowlist"
assert html =~ "reports"
end
test "admin can add an instance block", %{conn: conn} do
user = user_fixture()
{:ok, _} =
user
|> GitGud.Accounts.User.admin_changeset(true)
|> GitGud.Repo.update()
conn = log_in_user(conn, user)
{:ok, view, _html} = live(conn, ~p"/admin/federation?tab=blocks")
view
|> form("form[phx-submit=block_instance]", %{"host" => "bad.example", "reason" => "spam"})
|> render_submit()
assert render(view) =~ "bad.example"
assert GitGud.Repo.exists?(GitGud.Federation.InstanceBlock)
end
end
1.5 KiB · text
5af55d9