defmodule PlausibleWeb.Plugs.NoRobotsTest do
  use Plausible.DataCase, async: true
  import Plug.Test
  import Plug.Conn

  alias PlausibleWeb.Plugs.NoRobots

  test "non-bots pass - when no user agent is supplied" do
    conn = :get |> conn("/") |> NoRobots.call()
    assert get_resp_header(conn, "x-robots-tag") == ["noindex, nofollow"]
    assert get_resp_header(conn, "x-plausible-forbidden-reason") == []
    assert conn.private.robots == "noindex, nofollow"

    refute conn.halted
    refute conn.status
  end

  test "non-bots pass - when user agent is supplied" do
    conn = :get |> conn("/") |> NoRobots.call()
    assert get_resp_header(conn, "x-robots-tag") == ["noindex, nofollow"]
    assert get_resp_header(conn, "x-plausible-forbidden-reason") == []
    assert conn.private.robots == "noindex, nofollow"

    refute conn.halted
    refute conn.status
  end

  test "writes index, nofollow for plausible.io live demo" do
    conn = :get |> conn("/plausible.io") |> NoRobots.call()

    assert get_resp_header(conn, "x-robots-tag") == ["index, nofollow"]
    assert get_resp_header(conn, "x-plausible-forbidden-reason") == []

    refute conn.halted
    refute conn.status
  end
end
