diff --git a/config/runtime.exs b/config/runtime.exs index bf9ce9084e8c..6edc270b1827 100644 --- a/config/runtime.exs +++ b/config/runtime.exs @@ -189,6 +189,7 @@ config :plausible, admin_email: admin_email, admin_pwd: admin_pwd, environment: env, + system_environment: env, mailer_email: mailer_email, super_admin_user_ids: super_admin_user_ids, site_limit: site_limit, diff --git a/lib/plausible_web/controllers/api/external_controller.ex b/lib/plausible_web/controllers/api/external_controller.ex index f2ebc627ef61..1ed85120eed3 100644 --- a/lib/plausible_web/controllers/api/external_controller.ex +++ b/lib/plausible_web/controllers/api/external_controller.ex @@ -167,8 +167,9 @@ defmodule PlausibleWeb.Api.ExternalController do defp is_bot?(%UAInspector.Result.Bot{}), do: true - defp is_bot?(%UAInspector.Result{client: %UAInspector.Result.Client{name: "Headless Chrome"}}), - do: true + defp is_bot?(%UAInspector.Result{client: %UAInspector.Result.Client{name: "Headless Chrome"}}) do + Application.get_env(:plausible, :system_environment) not in ["rc", "staging"] + end defp is_bot?(_), do: false diff --git a/test/plausible_web/controllers/api/external_controller_test.exs b/test/plausible_web/controllers/api/external_controller_test.exs index 10a6248eed82..9bb3fe2a9617 100644 --- a/test/plausible_web/controllers/api/external_controller_test.exs +++ b/test/plausible_web/controllers/api/external_controller_test.exs @@ -169,7 +169,29 @@ defmodule PlausibleWeb.Api.ExternalControllerTest do ) |> post("/api/event", params) - assert get_event("headless-chrome-test.com") == nil + refute get_event("headless-chrome-test.com") + end + + test "Headless Chrome is not ignored on staging environment", %{conn: conn} do + initial_env = Application.get_env(:plausible, :system_environment) + Application.put_env(:plausible, :system_environment, "staging") + + params = %{ + name: "pageview", + url: "http://www.example.com/", + domain: "headless-chrome-stg-test.com" + } + + conn + |> put_req_header( + "user-agent", + "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/85.0.4183.83 Safari/537.36" + ) + |> post("/api/event", params) + + assert get_event("headless-chrome-stg-test.com") + + Application.put_env(:plausible, :system_environment, initial_env) end test "parses user_agent", %{conn: conn} do @@ -476,11 +498,11 @@ defmodule PlausibleWeb.Api.ExternalControllerTest do url: "http://gigride.live/", domain: "special-props-test.com", props: %{ - campaign_id: 8, + campaign_id: "vendor-8", company_id: 10, job_id: 12, page_id: 15, - product_id: 11, + product_id: "vendor-11", site_id: 9, careers_application_form_uuid: "313a26c2-741c-421c-9a6b-f39c02c8d35c" } @@ -491,8 +513,8 @@ defmodule PlausibleWeb.Api.ExternalControllerTest do event = get_event("special-props-test.com") - assert Map.get(event, :campaign_id) == 8 - assert Map.get(event, :product_id) == 11 + assert Map.get(event, :campaign_id) == "vendor-8" + assert Map.get(event, :product_id) == "vendor-11" assert Map.get(event, :company_id) == 10 assert Map.get(event, :job_id) == 12 assert Map.get(event, :page_id) == 15 @@ -878,9 +900,7 @@ defmodule PlausibleWeb.Api.ExternalControllerTest do |> post("/api/event", params) assert json_response(conn, 400) == %{ - "errors" => %{ - "hostname" => ["can't be blank"] - } + "errors" => %{"request" => "Unable to process request"} } end @@ -897,9 +917,7 @@ defmodule PlausibleWeb.Api.ExternalControllerTest do |> post("/api/event", params) assert json_response(conn, 400) == %{ - "errors" => %{ - "domain" => ["can't be blank"] - } + "errors" => %{"request" => "Unable to process request"} } end end @@ -1077,11 +1095,12 @@ defmodule PlausibleWeb.Api.ExternalControllerTest do assert pageview.hostname == "liipgellkffekalgefpjolodblggkmjg" end - describe "GET /api/health" do - test "returns 200 OK", %{conn: conn} do - conn = get(conn, "/api/health") + # /api/health path is disabled in PlausibleWeb.Router module + # describe "GET /api/health" do + # test "returns 200 OK", %{conn: conn} do + # conn = get(conn, "/api/health") - assert conn.status == 200 - end - end + # assert conn.status == 200 + # end + # end end