mirror of
https://github.com/samsonjs/rack-attack.git
synced 2026-03-25 09:25:49 +00:00
ci: update tested rails versions (#626)
This commit is contained in:
parent
c7098d610b
commit
36b830ab3c
4 changed files with 25 additions and 59 deletions
9
.github/workflows/build.yml
vendored
9
.github/workflows/build.yml
vendored
|
|
@ -32,7 +32,6 @@ jobs:
|
|||
- rails_6_1
|
||||
- rails_6_0
|
||||
- rails_5_2
|
||||
- rails_4_2
|
||||
- dalli3
|
||||
- dalli2
|
||||
- redis_5
|
||||
|
|
@ -56,8 +55,6 @@ jobs:
|
|||
ruby: 3.2.2
|
||||
- gemfile: active_support_5_redis_cache_store_pooled
|
||||
ruby: 3.2.2
|
||||
- gemfile: rails_4_2
|
||||
ruby: 3.2.2
|
||||
- gemfile: dalli2
|
||||
ruby: 3.2.2
|
||||
- gemfile: rack_1
|
||||
|
|
@ -68,8 +65,6 @@ jobs:
|
|||
ruby: 3.1.4
|
||||
- gemfile: active_support_5_redis_cache_store_pooled
|
||||
ruby: 3.1.4
|
||||
- gemfile: rails_4_2
|
||||
ruby: 3.1.4
|
||||
- gemfile: dalli2
|
||||
ruby: 3.1.4
|
||||
- gemfile: rack_1
|
||||
|
|
@ -80,14 +75,10 @@ jobs:
|
|||
ruby: 3.0.6
|
||||
- gemfile: active_support_5_redis_cache_store_pooled
|
||||
ruby: 3.0.6
|
||||
- gemfile: rails_4_2
|
||||
ruby: 3.0.6
|
||||
- gemfile: dalli2
|
||||
ruby: 3.0.6
|
||||
- gemfile: rack_1
|
||||
ruby: 2.7.8
|
||||
- gemfile: rails_4_2
|
||||
ruby: 2.7.8
|
||||
- gemfile: rails_7_0
|
||||
ruby: 2.6.10
|
||||
- gemfile: rails_7_0
|
||||
|
|
|
|||
|
|
@ -41,14 +41,6 @@ appraise 'rails_5-2' do
|
|||
gem 'railties', '~> 5.2.0'
|
||||
end
|
||||
|
||||
appraise 'rails_4-2' do
|
||||
gem 'railties', '~> 4.2.0'
|
||||
|
||||
# Override rack-test version constraint by making it more loose
|
||||
# so it's compatible with actionpack 4.2.x
|
||||
gem "rack-test", ">= 0.6"
|
||||
end
|
||||
|
||||
appraise 'dalli2' do
|
||||
gem 'dalli', '~> 2.0'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
# This file was generated by Appraisal
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "railties", "~> 4.2.0"
|
||||
gem "rack-test", ">= 0.6"
|
||||
|
||||
group :maintenance, optional: true do
|
||||
gem "bake"
|
||||
gem "bake-gem"
|
||||
end
|
||||
|
||||
gemspec path: "../"
|
||||
|
|
@ -2,42 +2,38 @@
|
|||
|
||||
require_relative "spec_helper"
|
||||
require 'active_support'
|
||||
require 'active_support/subscriber'
|
||||
|
||||
# ActiveSupport::Subscribers added in ~> 4.0.2.0
|
||||
if ActiveSupport::VERSION::MAJOR > 3
|
||||
require_relative 'spec_helper'
|
||||
require 'active_support/subscriber'
|
||||
class CustomSubscriber < ActiveSupport::Subscriber
|
||||
@notification_count = 0
|
||||
class CustomSubscriber < ActiveSupport::Subscriber
|
||||
@notification_count = 0
|
||||
|
||||
class << self
|
||||
attr_accessor :notification_count
|
||||
end
|
||||
|
||||
def throttle(_event)
|
||||
self.class.notification_count += 1
|
||||
end
|
||||
class << self
|
||||
attr_accessor :notification_count
|
||||
end
|
||||
|
||||
describe 'Rack::Attack.instrument' do
|
||||
def throttle(_event)
|
||||
self.class.notification_count += 1
|
||||
end
|
||||
end
|
||||
|
||||
describe 'Rack::Attack.instrument' do
|
||||
before do
|
||||
@period = 60 # Use a long period; failures due to cache key rotation less likely
|
||||
Rack::Attack.cache.store = ActiveSupport::Cache::MemoryStore.new
|
||||
Rack::Attack.throttle('ip/sec', limit: 1, period: @period) { |req| req.ip }
|
||||
end
|
||||
|
||||
describe "with throttling" do
|
||||
before do
|
||||
@period = 60 # Use a long period; failures due to cache key rotation less likely
|
||||
Rack::Attack.cache.store = ActiveSupport::Cache::MemoryStore.new
|
||||
Rack::Attack.throttle('ip/sec', limit: 1, period: @period) { |req| req.ip }
|
||||
ActiveSupport::Notifications.stub(:notifier, ActiveSupport::Notifications::Fanout.new) do
|
||||
CustomSubscriber.attach_to("rack_attack")
|
||||
2.times { get '/', {}, 'REMOTE_ADDR' => '1.2.3.4' }
|
||||
end
|
||||
end
|
||||
|
||||
describe "with throttling" do
|
||||
before do
|
||||
ActiveSupport::Notifications.stub(:notifier, ActiveSupport::Notifications::Fanout.new) do
|
||||
CustomSubscriber.attach_to("rack_attack")
|
||||
2.times { get '/', {}, 'REMOTE_ADDR' => '1.2.3.4' }
|
||||
end
|
||||
end
|
||||
|
||||
it 'should instrument without error' do
|
||||
_(last_response.status).must_equal 429
|
||||
assert_equal 1, CustomSubscriber.notification_count
|
||||
end
|
||||
it 'should instrument without error' do
|
||||
_(last_response.status).must_equal 429
|
||||
assert_equal 1, CustomSubscriber.notification_count
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue