require 'isolation/abstract_unit' require 'rack/test' module ApplicationTests class MiddlewareStaticTest < ActiveSupport::TestCase include ActiveSupport::Testing::Isolation include Rack::Test::Methods def setup build_app FileUtils.rm_rf "#{app_path}/config/environments" end def teardown teardown_app end # Regression test to #8907 # See https://github.com/rails/rails/commit/9cc82b77196d21a5c7021f6dca59ab9b2b158a45#commitcomment-2416514 test "doesn't set Cache-Control header when it is nil" do app_file "public/foo.html", 'static' require "#{app_path}/config/environment" get 'foo' assert_not last_response.headers.has_key?('Cache-Control'), "Cache-Control should not be set" end test "headers for static files are configurable" do app_file "public/about.html", 'static' add_to_config <<-CONFIG config.public_file_server.headers = { "Access-Control-Allow-Origin" => "http://rubyonrails.org", "Cache-Control" => "public, max-age=60" } CONFIG require "#{app_path}/config/environment" get '/about.html' assert_equal 'http://rubyonrails.org', last_response.headers["Access-Control-Allow-Origin"] assert_equal 'public, max-age=60', last_response.headers["Cache-Control"] end test "public_file_server.index_name defaults to 'index'" do app_file "public/index.html", "/index.html" require "#{app_path}/config/environment" get '/' assert_equal "/index.html\n", last_response.body end test "public_file_server.index_name configurable" do app_file "public/other-index.html", "/other-index.html" add_to_config "config.public_file_server.index_name = 'other-index'" require "#{app_path}/config/environment" get '/' assert_equal "/other-index.html\n", last_response.body end end end