discourse/spec/components/middleware/anonymous_cache_spec.rb

59 lines
1.6 KiB
Ruby

require "spec_helper"
require_dependency "middleware/anonymous_cache"
describe Middleware::AnonymousCache::Helper do
def new_helper(env={})
Middleware::AnonymousCache::Helper.new({
"HTTP_HOST" => "http://test.com",
"REQUEST_URI" => "/path?bla=1",
"REQUEST_METHOD" => "GET"
}.merge(env))
end
context "cachable?" do
it "true by default" do
new_helper.cacheable?.should == true
end
it "is false for non GET" do
new_helper("ANON_CACHE_DURATION" => 10, "REQUEST_METHOD" => "POST").cacheable?.should == false
end
it "is false if it has an auth cookie" do
new_helper("HTTP_COOKIE" => "jack=1; _t=#{"1"*32}; jill=2").cacheable?.should == false
end
end
context "cached" do
let!(:helper) do
new_helper("ANON_CACHE_DURATION" => 10)
end
let!(:crawler) do
new_helper("ANON_CACHE_DURATION" => 10, "HTTP_USER_AGENT" => "AdsBot-Google (+http://www.google.com/adsbot.html)")
end
after do
helper.clear_cache
crawler.clear_cache
end
it "returns cached data for cached requests" do
helper.is_mobile = true
helper.cached.should == nil
helper.cache([200, {"HELLO" => "WORLD"}, ["hello ", "my world"]])
helper = new_helper("ANON_CACHE_DURATION" => 10)
helper.is_mobile = true
helper.cached.should == [200, {"HELLO" => "WORLD"}, ["hello my world"]]
crawler.cached.should == nil
crawler.cache([200, {"HELLO" => "WORLD"}, ["hello ", "world"]])
crawler.cached.should == [200, {"HELLO" => "WORLD"}, ["hello world"]]
end
end
end