From ba91e2341947304e0df160643592178059813be7 Mon Sep 17 00:00:00 2001 From: Gonzalo Rodriguez Date: Thu, 22 Mar 2018 10:16:02 -0300 Subject: [PATCH] Acceptance test ability to extend the request object --- .../extending_request_object_spec.rb | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 spec/acceptance/extending_request_object_spec.rb diff --git a/spec/acceptance/extending_request_object_spec.rb b/spec/acceptance/extending_request_object_spec.rb new file mode 100644 index 0000000..f6e0d0f --- /dev/null +++ b/spec/acceptance/extending_request_object_spec.rb @@ -0,0 +1,34 @@ +require_relative "../spec_helper" + +describe "Extending the request object" do + before do + class Rack::Attack::Request + def authorized? + env["APIKey"] == "private-secret" + end + end + + Rack::Attack.blocklist("unauthorized requests") do |request| + !request.authorized? + end + end + + # We don't want the extension to leak to other test cases + after do + class Rack::Attack::Request + remove_method :authorized? + end + end + + it "forbids request if blocklist condition is true" do + get "/" + + assert_equal 403, last_response.status + end + + it "succeeds if blocklist condition is false" do + get "/", {}, "APIKey" => "private-secret" + + assert_equal 200, last_response.status + end +end