From 00a62c568e80063777b5843f1b111ac5b4fa9578 Mon Sep 17 00:00:00 2001 From: Andrea Leopardi Date: Wed, 20 Dec 2023 22:47:36 +0100 Subject: [PATCH] Ignores unknown request fields --- lib/sentry/event.ex | 14 +------------- test/event_test.exs | 7 +++---- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/lib/sentry/event.ex b/lib/sentry/event.ex index 500d63ad..35e766a4 100644 --- a/lib/sentry/event.ex +++ b/lib/sentry/event.ex @@ -346,7 +346,7 @@ defmodule Sentry.Event do modules: :persistent_term.get({:sentry, :loaded_applications}), original_exception: exception, release: Config.release(), - request: coerce_request(request), + request: struct(%Interfaces.Request{}, request), sdk: @sdk, server_name: Config.server_name() || to_string(:net_adm.localhost()), source: source, @@ -427,18 +427,6 @@ defmodule Sentry.Event do end end - @request_fields %Interfaces.Request{} |> Map.from_struct() |> Map.keys() |> MapSet.new() - - defp coerce_request(request) do - Enum.reduce(request, %Interfaces.Request{}, fn {key, value}, acc -> - if key in @request_fields do - Map.replace!(acc, key, value) - else - raise ArgumentError, "unknown field for the request interface: #{inspect(key)}" - end - end) - end - defp add_thread_with_stacktrace(%__MODULE__{} = event, stacktrace) when is_list(stacktrace) do thread = %Interfaces.Thread{ id: UUID.uuid4_hex(), diff --git a/test/event_test.exs b/test/event_test.exs index cc0ff2ee..19575a52 100644 --- a/test/event_test.exs +++ b/test/event_test.exs @@ -292,10 +292,9 @@ defmodule Sentry.EventTest do assert event.original_exception == exception end - test "raises if the :request option contains non-request fields" do - assert_raise ArgumentError, ~r/unknown field for the request interface: :bad_key/, fn -> - Event.create_event(request: %{method: "GET", bad_key: :indeed}) - end + test "ignores unknown fields in :request" do + assert %Event{} = event = Event.create_event(request: %{method: "GET", bad_key: :indeed}) + assert event.request == %Interfaces.Request{method: "GET"} end end