test/multiverse/suites/grape/grape_test.rb in newrelic_rpm-3.9.9.275 vs test/multiverse/suites/grape/grape_test.rb in newrelic_rpm-3.10.0.279

- old
+ new

@@ -27,34 +27,115 @@ def test_route_raises_an_error assert_raises(GrapeTestApiError) do get '/self_destruct' end - assert_metrics_recorded(['Errors/Controller/Rack/GrapeTestApi/self_destruct (GET)']) + + expected_txn_name = 'Controller/Grape/GrapeTestApi/self_destruct (GET)' + assert_grape_metrics(expected_txn_name) + assert_metrics_recorded(["Errors/#{expected_txn_name}"]) end def test_getting_a_list_of_grape_apes get '/grape_ape' - assert_metrics_recorded(['Controller/Rack/GrapeTestApi/grape_ape (GET)']) + assert_grape_metrics('Controller/Grape/GrapeTestApi/grape_ape (GET)') end def test_showing_a_grape_ape get '/grape_ape/1' - assert_metrics_recorded(['Controller/Rack/GrapeTestApi/grape_ape/:id (GET)']) + assert_grape_metrics('Controller/Grape/GrapeTestApi/grape_ape/:id (GET)') end def test_creating_a_grape_ape post '/grape_ape', {} - assert_metrics_recorded(['Controller/Rack/GrapeTestApi/grape_ape (POST)']) + assert_grape_metrics('Controller/Grape/GrapeTestApi/grape_ape (POST)') end def test_updating_a_grape_ape put '/grape_ape/1', {} - assert_metrics_recorded(['Controller/Rack/GrapeTestApi/grape_ape/:id (PUT)']) + assert_grape_metrics('Controller/Grape/GrapeTestApi/grape_ape/:id (PUT)') end def test_deleting_a_grape_ape delete '/grape_ape/1' - assert_metrics_recorded(['Controller/Rack/GrapeTestApi/grape_ape/:id (DELETE)']) + assert_grape_metrics('Controller/Grape/GrapeTestApi/grape_ape/:id (DELETE)') + end + + def test_transaction_renaming + get '/grape_ape/renamed' + # The second segment here is 'Rack' because of an idiosyncrasy of + # the set_transaction_name API: when you call set_transaction_name and + # don't provide an explicit category, you lock in the category prefix + # that was in use at the time you made the call. + # + # We may change this behavior in the future, once we have a better + # internal representation of the name and category of a transaction as + # truly separate entities. + # + assert_grape_metrics('Controller/Rack/RenamedTxn') + #assert_metrics_recorded(['Controller/Rack/RenamedTxn']) + end + + def test_params_are_not_captured_with_capture_params_disabled + with_config(:capture_params => false) do + get '/grape_ape/10' + assert_equal({}, last_transaction_trace_request_params) + end + end + + def test_route_params_are_captured + with_config(:capture_params => true) do + get '/grape_ape/10' + assert_equal({"id" => "10"}, last_transaction_trace_request_params) + end + end + + def test_query_params_are_captured + with_config(:capture_params => true) do + get '/grape_ape?q=1234&foo=bar' + assert_equal({'q' => '1234', 'foo' => 'bar'}, last_transaction_trace_request_params) + end + end + + def test_post_body_params_are_captured + with_config(:capture_params => true) do + post '/grape_ape', {'q' => '1234', 'foo' => 'bar'}.to_json, "CONTENT_TYPE" => "application/json" + assert_equal({'q' => '1234', 'foo' => 'bar'}, last_transaction_trace_request_params) + end + end + + def test_post_body_with_nested_params_are_captured + with_config(:capture_params => true) do + params = {"ape" => {"first_name" => "koko", "last_name" => "gorilla"}} + post '/grape_ape', params.to_json, "CONTENT_TYPE" => "application/json" + assert_equal(params, last_transaction_trace_request_params) + end + end + + def test_file_upload_params_are_filtered + with_config(:capture_params => true) do + params = { + :title => "blah", + :file => Rack::Test::UploadedFile.new(__FILE__, 'text/plain') + } + post '/grape_ape', params + assert_equal({"title" => "blah", "file" => "[FILE]"}, last_transaction_trace_request_params) + end + end + + def test_404_with_params_does_not_capture_them + with_config(:capture_params => true) do + post '/grape_catfish', {"foo" => "bar"} + assert_equal({}, last_transaction_trace_request_params) + end + end + + def assert_grape_metrics(expected_txn_name) + expected_segment_name = 'Middleware/Grape/GrapeTestApi/call' + assert_metrics_recorded([ + expected_segment_name, + [expected_segment_name, expected_txn_name], + expected_txn_name + ]) end end end