From 831e4e9e977670b6f9978831dda5fe74bb3ea83b Mon Sep 17 00:00:00 2001 From: Gonzalo Rodriguez Date: Fri, 22 Jun 2018 12:14:56 -0300 Subject: [PATCH] Acceptance test Dalli::Client (via dalli) as cache store backend --- spec/acceptance/stores/dalli_client_spec.rb | 39 +++++++++++++++++++++ spec/integration/rack_attack_cache_spec.rb | 1 - 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 spec/acceptance/stores/dalli_client_spec.rb diff --git a/spec/acceptance/stores/dalli_client_spec.rb b/spec/acceptance/stores/dalli_client_spec.rb new file mode 100644 index 0000000..e01ab3f --- /dev/null +++ b/spec/acceptance/stores/dalli_client_spec.rb @@ -0,0 +1,39 @@ +require_relative "../../spec_helper" +require_relative "../../support/cache_store_helper" + +require "dalli" +require "timecop" + +describe "Dalli::Client as a cache backend" do + before do + Rack::Attack.cache.store = Dalli::Client.new + end + + after do + Rack::Attack.cache.store.flush_all + end + + it_works_for_cache_backed_features + + it "doesn't leak keys" do + Rack::Attack.throttle("by ip", limit: 1, period: 1) do |request| + request.ip + end + + key = nil + + # Freeze time during these statement to be sure that the key used by rack attack is the same + # we pre-calculate in local variable `key` + Timecop.freeze do + key = "rack::attack:#{Time.now.to_i}:by ip:1.2.3.4" + + get "/", {}, "REMOTE_ADDR" => "1.2.3.4" + end + + assert Rack::Attack.cache.store.fetch(key) + + sleep 2.1 + + assert_nil Rack::Attack.cache.store.fetch(key) + end +end diff --git a/spec/integration/rack_attack_cache_spec.rb b/spec/integration/rack_attack_cache_spec.rb index a349dbf..cbea458 100644 --- a/spec/integration/rack_attack_cache_spec.rb +++ b/spec/integration/rack_attack_cache_spec.rb @@ -19,7 +19,6 @@ describe Rack::Attack::Cache do cache_stores = [ ActiveSupport::Cache::MemoryStore.new, - Dalli::Client.new, ConnectionPool.new { Dalli::Client.new } ]