blob: bdadbf66444552802e10ab37811f39c827bdd41d (
plain) (
tree)
|
|
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+-\w+-\w+-\w+-\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
|