From 74a0b39b78d41569050963c3923e21124b717362 Mon Sep 17 00:00:00 2001 From: Brian Le Date: Wed, 22 May 2024 11:15:26 -0700 Subject: [PATCH] Remove Autoredirect by default in Remote Viewer --- .../viewer/speedscope_remote_viewer.rb | 8 ++++++-- .../viewer/speedscope_remote_viewer_test.rb | 17 +++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/lib/app_profiler/viewer/speedscope_remote_viewer.rb b/lib/app_profiler/viewer/speedscope_remote_viewer.rb index ced8bbce..829d1d9c 100644 --- a/lib/app_profiler/viewer/speedscope_remote_viewer.rb +++ b/lib/app_profiler/viewer/speedscope_remote_viewer.rb @@ -21,8 +21,12 @@ def view(response: nil, autoredirect: nil, async: false) id = Middleware.id(@profile.file) if response && response[0].to_i < 500 - response[1]["Location"] = "/app_profiler/#{id}" - response[0] = 303 + if autoredirect + response[0] = 303 + response[1]["Location"] = "/app_profiler/#{id}" + elsif AppProfiler.profile_header + response[1][AppProfiler.profile_header] = "/app_profiler/#{id}" + end else AppProfiler.logger.info("[Profiler] Profile available at /app_profiler/#{id}\n") end diff --git a/test/app_profiler/viewer/speedscope_remote_viewer_test.rb b/test/app_profiler/viewer/speedscope_remote_viewer_test.rb index 2cd35c2e..67dfac56 100644 --- a/test/app_profiler/viewer/speedscope_remote_viewer_test.rb +++ b/test/app_profiler/viewer/speedscope_remote_viewer_test.rb @@ -25,14 +25,27 @@ class SpeedscopeRemoteViewerTest < TestCase viewer.view end - test "#view with response redirects to URL" do + test "#view with response sets the profiler header" do + response = [200, {}, ["OK"]] + profile = BaseProfile.from_stackprof(stackprof_profile) + + view = SpeedscopeRemoteViewer.new(profile) + id = SpeedscopeRemoteViewer::Middleware.id(profile.file) + + view.view(response: response) + + assert_equal(200, response[0]) + assert_equal("/app_profiler/#{id}", response[1][AppProfiler.profile_header]) + end + + test "#view with response redirects to URL when autoredirect is set" do response = [200, {}, ["OK"]] profile = BaseProfile.from_stackprof(stackprof_profile) viewer = SpeedscopeRemoteViewer.new(profile) id = SpeedscopeRemoteViewer::Middleware.id(profile.file) - viewer.view(response: response) + viewer.view(response: response, autoredirect: true) assert_equal(303, response[0]) assert_equal("/app_profiler/#{id}", response[1]["Location"])