mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-10-04 00:00:37 -04:00
the cache key will be also determined by the supported vary headers values, when present; this means easier lookups, and one level hash fetch, where the same url-verb request may have multiple entries depending on those headers checking response vary header will therefore be something done at cache response lookup; writes may override when they shouldn't though, as a full match on supported vary headers will be performed, and one can't know in advance the combo of vary headers, which is why insterested parties will have to be judicious with the new option
36 lines
1.2 KiB
Ruby
36 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "test_helper"
|
|
require "httpx/plugins/response_cache/store"
|
|
|
|
class ResponseCacheStoreTest < Minitest::Test
|
|
include ResponseCacheStoreTests
|
|
|
|
def test_internal_store_set
|
|
internal_store = store.instance_variable_get(:@store)
|
|
|
|
request = make_request("GET", "http://example.com/")
|
|
|
|
response = cached_response(request)
|
|
assert internal_store.size == 1
|
|
assert internal_store[request.response_cache_key] == response
|
|
response1 = cached_response(request, extra_headers: { "content-language" => "en" })
|
|
assert internal_store.size == 1
|
|
assert internal_store[request.response_cache_key] == response1
|
|
response2 = cached_response(request, extra_headers: { "content-language" => "en", "vary" => "accept-language" })
|
|
assert internal_store.size == 1
|
|
assert internal_store[request.response_cache_key] == response2
|
|
|
|
request.merge_headers("accept-language" => "pt")
|
|
response3 = cached_response(request, extra_headers: { "content-language" => "pt", "vary" => "accept-language" }, body: "teste")
|
|
assert internal_store.size == 2
|
|
assert internal_store[request.response_cache_key] == response3
|
|
end
|
|
|
|
private
|
|
|
|
def store
|
|
@store ||= Plugins::ResponseCache::Store.new
|
|
end
|
|
end
|