ref: master
test/integration/http_caching_test.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
require_relative "../test_helper" class HttpCachingTest < ActionDispatch::IntegrationTest def setup create_user('joao', password: 'test', password_confirmation: 'test').activate end test 'home page, default configuration' do get '/' assert_cache(5.minutes) assert_no_cookies end test 'home page, custom config' do set_env_config(home_cache_in_minutes: 10) get '/' assert_cache(10.minutes) end test 'search results, default config' do get '/search', query: 'anything' assert_cache(15.minutes) end test 'search results, custom config' do set_env_config(general_cache_in_minutes: 30) get '/search', query: 'anything' assert_cache(30.minutes) end test 'profile page, default config' do get "/profile/joao" assert_cache(15.minutes) end test 'profile page, custom config' do set_env_config(profile_cache_in_minutes: 60) get "/profile/joao" assert_cache(60.minutes) end test 'account controller' do get '/account/login' assert_no_cache end test 'profile admin' do login 'joao', 'test' get "/myprofile/joao" assert_no_cache end test 'environment admin' do Environment.default.add_admin(Profile['joao']) get '/admin' assert_no_cache end test 'logged in, home page' do login 'joao', 'test' get '/' assert_no_cache end test 'logged in, profile home' do login 'joao', 'test' get '/joao' assert_no_cache end test 'logged in, profile page' do login 'joao', 'test' get '/profile/joao' assert_no_cache end test 'private community profile should not return cache headers' do create_private_community('the-community') get "/profile/the-community" assert_response 403 assert_no_cache end test 'private community content should not return cache headers' do community = create_private_community('the-community') create(Article, profile_id: community.id, name: 'Test page', published: false) get "/the-community/test-page" assert_response 403 assert_no_cache end test 'user data, not logged in' do get '/account/user_data', {}, { 'X-Requested-With' => 'XMLHttpRequest'} assert_no_cookies end protected def set_env_config(data) env = Environment.default data.each do |key, value| env.send("#{key}=", value) end env.save! end def create_private_community(identifier) community = fast_create(Community, identifier: identifier) community.public_profile = false community.save! community end def assert_no_cache assert(cache_parts == ['max-age=0', 'must-revalidate', 'private'] || cache_parts == ['no-cache'], "should not set cache headers (found #{cache_parts.inspect})") end def assert_public_cache assert_includes cache_parts, 'public' end def cache_parts @cache_parts ||= response.headers['Cache-Control'].split(/\s*,\s*/).sort end def assert_cache(valid_for) assert_includes cache_parts, "max-age=#{valid_for}" end def assert_no_cookies assert_equal({}, response.cookies.to_hash) end def assert_cookie(cookie_name) assert_includes response.cookies.keys, cookie_name end end |