Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
2.4 kB · 68 lines
Elixir
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869defmodule TrackerWeb.LensControllerTest do use TrackerWeb.ConnCase, async: true
alias TrackerWeb.Lens
describe "POST /lens" do test "sets signed cookie and redirects to referer", %{conn: conn} do conn = conn |> put_req_header("referer", "/packages/firefox") |> post("/lens", %{"channel" => "nixos-unstable"})
assert redirected_to(conn) == "/packages/firefox?channel=nixos-unstable"
cookie = conn.resp_cookies["_tracker_lens"] assert cookie assert cookie.max_age == Lens.cookie_max_age() # The live lens rewrites this cookie from JS, which a browser blocks for # an http_only cookie of the same name. refute cookie.http_only
{:ok, value} = Lens.verify_cookie(cookie.value) assert value == "nixos-unstable" end
test "includes revision in cookie when provided", %{conn: conn} do conn = post(conn, "/lens", %{"channel" => "nixos-unstable", "rev" => "abc123"})
assert redirected_to(conn) == "/?channel=nixos-unstable&rev=abc123"
cookie = conn.resp_cookies["_tracker_lens"] {:ok, value} = Lens.verify_cookie(cookie.value) assert value == "nixos-unstable:abc123" end
test "redirects to / when no referer", %{conn: conn} do conn = post(conn, "/lens", %{"channel" => "nixos-unstable"})
assert redirected_to(conn) == "/?channel=nixos-unstable" end
test "ignores empty revision", %{conn: conn} do conn = post(conn, "/lens", %{"channel" => "nixos-unstable", "rev" => ""})
cookie = conn.resp_cookies["_tracker_lens"] {:ok, value} = Lens.verify_cookie(cookie.value) assert value == "nixos-unstable" end
test "strips scheme/host when referer is an absolute same-host URL", %{conn: conn} do conn = conn |> put_req_header("referer", "http://#{conn.host}/packages?search=foo") |> post("/lens", %{"channel" => "nixos-unstable"})
assert redirected_to(conn) == "/packages?channel=nixos-unstable&search=foo" end
test "falls back to / when referer is a cross-origin URL", %{conn: conn} do conn = conn |> put_req_header("referer", "https://evil.example/attack") |> post("/lens", %{"channel" => "nixos-unstable"})
assert redirected_to(conn) == "/?channel=nixos-unstable" end endend