Fresh repository history for elektrine/tarakan hosted at https://git.elektrine.com/elektrine/tarakan.
98 lines
3.3 KiB
Elixir
98 lines
3.3 KiB
Elixir
defmodule TarakanWeb.PageLiveTest do
|
|
use TarakanWeb.ConnCase
|
|
|
|
import Phoenix.LiveViewTest
|
|
|
|
test "the disclosure policy page renders its sections", %{conn: conn} do
|
|
html = conn |> get(~p"/policies/disclosure") |> html_response(200)
|
|
|
|
assert html =~ "Disclosure policy"
|
|
assert html =~ "Public by default"
|
|
assert html =~ "Visibility levels"
|
|
assert html =~ "public_summary"
|
|
assert html =~ "restricted"
|
|
assert html =~ "Verification quorum"
|
|
assert html =~ "Vendor notification"
|
|
assert html =~ "security.txt"
|
|
end
|
|
|
|
test "the content policy page renders its sections", %{conn: conn} do
|
|
html = conn |> get(~p"/policies/content") |> html_response(200)
|
|
|
|
assert html =~ "Content policy"
|
|
assert html =~ "Allowed content"
|
|
assert html =~ "Prohibited content"
|
|
assert html =~ "Secrets and credentials"
|
|
assert html =~ "Takedowns and appeals"
|
|
end
|
|
|
|
test "the pricing page renders the free record, bounties, and managed disclosure",
|
|
%{conn: conn} do
|
|
html = conn |> get(~p"/pricing") |> html_response(200)
|
|
|
|
assert html =~ ~s(id="pricing-free")
|
|
assert html =~ ~s(id="pricing-contracts")
|
|
assert html =~ ~s(id="pricing-managed")
|
|
assert html =~ "Tarakan keeps 10%"
|
|
assert html =~ "mailto:"
|
|
|
|
# No paid tiers, and the user-facing word is "contract", never "bounty".
|
|
refute html =~ ~s(id="pricing-team")
|
|
refute html =~ "Vaccine packs"
|
|
refute html =~ "bounty"
|
|
refute html =~ "Bounties"
|
|
end
|
|
|
|
test "the pricing checkout POST redirects anonymous visitors to login", %{conn: conn} do
|
|
conn = post(conn, ~p"/billing/checkout", %{"plan" => "team"})
|
|
|
|
assert redirected_to(conn) =~ "/accounts/log-in"
|
|
end
|
|
|
|
test "the managed disclosure page renders its sections", %{conn: conn} do
|
|
html = conn |> get(~p"/services/disclosure") |> html_response(200)
|
|
|
|
assert html =~ "Managed disclosure"
|
|
assert html =~ "What it is"
|
|
assert html =~ "Handling, not suppression"
|
|
assert html =~ "Intake"
|
|
assert html =~ ~s(id="managed-disclosure-contact")
|
|
assert html =~ "mailto:"
|
|
end
|
|
|
|
test "the pricing checkout POST redirects to Stripe for members", %{conn: conn} do
|
|
conn =
|
|
conn
|
|
|> log_in_account(account_fixture())
|
|
|> post(~p"/billing/checkout", %{"plan" => "enterprise"})
|
|
|
|
assert redirected_to(conn) =~ "https://checkout.stripe.com/"
|
|
end
|
|
|
|
# These were plain controller pages, the only routes in the shell without a
|
|
# LiveSocket. That made navigating to them a full reload and left them out of
|
|
# anything driven by live navigation.
|
|
test "the static pages are LiveViews", %{conn: conn} do
|
|
for path <- ["/pricing", "/policies/disclosure", "/policies/content", "/services/disclosure"] do
|
|
assert {:ok, _view, _html} = live(conn, path)
|
|
end
|
|
end
|
|
|
|
test "pricing marks its own nav entry active", %{conn: conn} do
|
|
{:ok, _view, html} = live(conn, ~p"/pricing")
|
|
|
|
assert html =~ ~r/href="\/pricing"[^>]*aria-current="page"/
|
|
end
|
|
|
|
test "nav links live-navigate between a LiveView and a policy page", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/leaderboard")
|
|
|
|
assert {:ok, _pricing, html} =
|
|
view
|
|
|> element(~s(nav[aria-label="Primary"] a[href="/pricing"]))
|
|
|> render_click()
|
|
|> follow_redirect(conn, ~p"/pricing")
|
|
|
|
assert html =~ "Pricing"
|
|
end
|
|
end
|