mirror of
https://github.com/samsonjs/rack-attack.git
synced 2026-03-25 09:25:49 +00:00
90 lines
3.1 KiB
Ruby
90 lines
3.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "spec_helper"
|
|
|
|
describe "Rack::Attack.reset!" do
|
|
it "raises an error when is not supported by cache store" do
|
|
Rack::Attack.cache.store = Class.new
|
|
assert_raises(Rack::Attack::IncompatibleStoreError) do
|
|
Rack::Attack.reset!
|
|
end
|
|
end
|
|
|
|
if defined?(Redis)
|
|
it "should delete rack attack keys" do
|
|
redis = Redis.new
|
|
redis.set("key", "value")
|
|
redis.set("#{Rack::Attack.cache.prefix}::key", "value")
|
|
Rack::Attack.cache.store = redis
|
|
Rack::Attack.reset!
|
|
|
|
_(redis.get("key")).must_equal "value"
|
|
_(redis.get("#{Rack::Attack.cache.prefix}::key")).must_be_nil
|
|
end
|
|
end
|
|
|
|
if defined?(Redis::Store)
|
|
it "should delete rack attack keys" do
|
|
redis_store = Redis::Store.new
|
|
redis_store.set("key", "value")
|
|
redis_store.set("#{Rack::Attack.cache.prefix}::key", "value")
|
|
Rack::Attack.cache.store = redis_store
|
|
Rack::Attack.reset!
|
|
|
|
_(redis_store.get("key")).must_equal "value"
|
|
_(redis_store.get("#{Rack::Attack.cache.prefix}::key")).must_be_nil
|
|
end
|
|
end
|
|
|
|
if defined?(Redis) && defined?(ActiveSupport::Cache::RedisCacheStore)
|
|
it "should delete rack attack keys" do
|
|
redis_cache_store = ActiveSupport::Cache::RedisCacheStore.new
|
|
redis_cache_store.write("key", "value")
|
|
redis_cache_store.write("#{Rack::Attack.cache.prefix}::key", "value")
|
|
Rack::Attack.cache.store = redis_cache_store
|
|
Rack::Attack.reset!
|
|
|
|
_(redis_cache_store.read("key")).must_equal "value"
|
|
_(redis_cache_store.read("#{Rack::Attack.cache.prefix}::key")).must_be_nil
|
|
end
|
|
|
|
describe "with a namespaced cache" do
|
|
it "should delete rack attack keys" do
|
|
redis_cache_store = ActiveSupport::Cache::RedisCacheStore.new(namespace: "ns")
|
|
redis_cache_store.write("key", "value")
|
|
redis_cache_store.write("#{Rack::Attack.cache.prefix}::key", "value")
|
|
Rack::Attack.cache.store = redis_cache_store
|
|
Rack::Attack.reset!
|
|
|
|
_(redis_cache_store.read("key")).must_equal "value"
|
|
_(redis_cache_store.read("#{Rack::Attack.cache.prefix}::key")).must_be_nil
|
|
end
|
|
end
|
|
end
|
|
|
|
if defined?(ActiveSupport::Cache::MemoryStore)
|
|
it "should delete rack attack keys" do
|
|
memory_store = ActiveSupport::Cache::MemoryStore.new
|
|
memory_store.write("key", "value")
|
|
memory_store.write("#{Rack::Attack.cache.prefix}::key", "value")
|
|
Rack::Attack.cache.store = memory_store
|
|
Rack::Attack.reset!
|
|
|
|
_(memory_store.read("key")).must_equal "value"
|
|
_(memory_store.read("#{Rack::Attack.cache.prefix}::key")).must_be_nil
|
|
end
|
|
|
|
describe "with a namespaced cache" do
|
|
it "should delete rack attack keys" do
|
|
memory_store = ActiveSupport::Cache::MemoryStore.new(namespace: "ns")
|
|
memory_store.write("key", "value")
|
|
memory_store.write("#{Rack::Attack.cache.prefix}::key", "value")
|
|
Rack::Attack.cache.store = memory_store
|
|
Rack::Attack.reset!
|
|
|
|
_(memory_store.read("key")).must_equal "value"
|
|
_(memory_store.read("#{Rack::Attack.cache.prefix}::key")).must_be_nil
|
|
end
|
|
end
|
|
end
|
|
end
|