diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cc3200c..3237bd4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 diff --git a/Appraisals b/Appraisals index 185740d..f68e8b7 100644 --- a/Appraisals +++ b/Appraisals @@ -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 diff --git a/gemfiles/rails_4_2.gemfile b/gemfiles/rails_4_2.gemfile deleted file mode 100644 index 4209e6d..0000000 --- a/gemfiles/rails_4_2.gemfile +++ /dev/null @@ -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: "../" diff --git a/spec/rack_attack_instrumentation_spec.rb b/spec/rack_attack_instrumentation_spec.rb index 111ad14..d2291f7 100644 --- a/spec/rack_attack_instrumentation_spec.rb +++ b/spec/rack_attack_instrumentation_spec.rb @@ -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