cc-request.any.js (4889B)
1 // META: global=window,worker 2 // META: title=HTTP Cache - Cache-Control Request Directives 3 // META: timeout=long 4 // META: script=/common/utils.js 5 // META: script=/common/get-host-info.sub.js 6 // META: script=http-cache.js 7 8 var tests = [ 9 { 10 name: "HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=0", 11 requests: [ 12 { 13 template: "fresh", 14 pause_after: true 15 }, 16 { 17 request_headers: [ 18 ["Cache-Control", "max-age=0"] 19 ], 20 expected_type: "not_cached" 21 } 22 ] 23 }, 24 { 25 name: "HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1", 26 requests: [ 27 { 28 template: "fresh", 29 pause_after: true 30 }, 31 { 32 request_headers: [ 33 ["Cache-Control", "max-age=1"] 34 ], 35 expected_type: "not_cached" 36 } 37 ] 38 }, 39 { 40 name: "HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness", 41 requests: [ 42 { 43 response_headers: [ 44 ["Cache-Control", "max-age=3600"], 45 ["Age", "1800"] 46 ] 47 }, 48 { 49 request_headers: [ 50 ["Cache-Control", "max-age=600"] 51 ], 52 expected_type: "not_cached" 53 } 54 ] 55 }, 56 { 57 name: "HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use", 58 requests: [ 59 { 60 response_headers: [ 61 ["Cache-Control", "max-age=1"] 62 ], 63 pause_after: true 64 }, 65 { 66 request_headers: [ 67 ["Cache-Control", "max-stale=1000"] 68 ], 69 expected_type: "cached" 70 } 71 ] 72 }, 73 { 74 name: "HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use", 75 requests: [ 76 { 77 response_headers: [ 78 ["Cache-Control", "max-age=1500"], 79 ["Age", "2000"] 80 ] 81 }, 82 { 83 request_headers: [ 84 ["Cache-Control", "max-stale=1000"] 85 ], 86 expected_type: "cached" 87 } 88 ] 89 }, 90 { 91 name: "HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher", 92 requests: [ 93 { 94 response_headers: [ 95 ["Cache-Control", "max-age=1500"] 96 ] 97 }, 98 { 99 request_headers: [ 100 ["Cache-Control", "min-fresh=2000"] 101 ], 102 expected_type: "not_cached" 103 } 104 ] 105 }, 106 { 107 name: "HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher", 108 requests: [ 109 { 110 response_headers: [ 111 ["Cache-Control", "max-age=1500"], 112 ["Age", "1000"] 113 ] 114 }, 115 { 116 request_headers: [ 117 ["Cache-Control", "min-fresh=1000"] 118 ], 119 expected_type: "not_cached" 120 } 121 ] 122 }, 123 { 124 name: "HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-cache", 125 requests: [ 126 { 127 response_headers: [ 128 ["Cache-Control", "max-age=3600"] 129 ] 130 }, 131 { 132 request_headers: [ 133 ["Cache-Control", "no-cache"] 134 ], 135 expected_type: "not_cached" 136 } 137 ] 138 }, 139 { 140 name: "HTTP cache validates fresh response with Last-Modified when request contains Cache-Control: no-cache", 141 requests: [ 142 { 143 response_headers: [ 144 ["Cache-Control", "max-age=3600"], 145 ["Last-Modified", -10000] 146 ] 147 }, 148 { 149 request_headers: [ 150 ["Cache-Control", "no-cache"] 151 ], 152 expected_type: "lm_validate" 153 } 154 ] 155 }, 156 { 157 name: "HTTP cache validates fresh response with ETag when request contains Cache-Control: no-cache", 158 requests: [ 159 { 160 response_headers: [ 161 ["Cache-Control", "max-age=3600"], 162 ["ETag", http_content("abc")] 163 ] 164 }, 165 { 166 request_headers: [ 167 ["Cache-Control", "no-cache"] 168 ], 169 expected_type: "etag_validate" 170 } 171 ] 172 }, 173 { 174 name: "HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store", 175 requests: [ 176 { 177 response_headers: [ 178 ["Cache-Control", "max-age=3600"] 179 ] 180 }, 181 { 182 request_headers: [ 183 ["Cache-Control", "no-store"] 184 ], 185 expected_type: "not_cached" 186 } 187 ] 188 }, 189 { 190 name: "HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached", 191 requests: [ 192 { 193 request_headers: [ 194 ["Cache-Control", "only-if-cached"] 195 ], 196 expected_status: 504, 197 expected_response_text: null 198 } 199 ] 200 } 201 ]; 202 run_tests(tests);