aboutsummaryrefslogblamecommitdiffstats
path: root/actionpack/test/dispatch/request_id_test.rb
blob: 230ff548898ba9f38f98303b98ada5f707f42ec1 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16















                                                                                                             
                                         









































                                                                           
require 'abstract_unit'

class RequestIdTest < ActiveSupport::TestCase
  test "passing on the request id from the outside" do
    assert_equal "external-uu-rid", stub_request('HTTP_X_REQUEST_ID' => 'external-uu-rid').uuid
  end

  test "ensure that only alphanumeric uurids are accepted" do
    assert_equal "X-Hacked-HeaderStuff", stub_request('HTTP_X_REQUEST_ID' => '; X-Hacked-Header: Stuff').uuid
  end
  
  test "ensure that 255 char limit on the request id is being enforced" do
    assert_equal "X" * 255, stub_request('HTTP_X_REQUEST_ID' => 'X' * 500).uuid
  end
  
  test "generating a request id when none is supplied" do
    assert_match /\w+/, stub_request.uuid
  end

  private
    def stub_request(env = {})
      ActionDispatch::RequestId.new(->(env) { [ 200, env, [] ] }).call(env)
      ActionDispatch::Request.new(env)
    end
end

# FIXME: Testing end-to-end doesn't seem to work
# 
# class RequestIdResponseTest < ActionDispatch::IntegrationTest
#   class TestController < ActionController::Base
#     def index
#       head :ok
#     end
#   end
# 
#   test "request id is passed all the way to the response" do
#     with_test_route_set do
#       get '/'
#       puts @response.headers.inspect
#       assert_equal "internal-uu-rid", @response.headers["X-Request-Id"]
#     end
#   end  
# 
# 
#   private
#     def with_test_route_set
#       with_routing do |set|
#         set.draw do
#           match ':action', to: ::RequestIdResponseTest::TestController
#         end
# 
#         @app = self.class.build_app(set) do |middleware|
#           middleware.use ActionDispatch::RequestId
#         end
# 
#         yield
#       end
#     end
# end