The solution in this card is based on a stack overflow post Show archive.org snapshot by Leventix Show archive.org snapshot .
If you need to make request come from a fixed IP address for the duration of a Cucumber scenario, the code below lets you write this:
Given my IP address is 188.174.117.205
Rails 3
Given /^my IP address is "(.*?)"$/ do |ip|
ActionDispatch::Request.any_instance.stub(:remote_ip).and_return(ip)
end
Rails 2
You will need the following step definitions:
Given /^my IP address is (\d+\.\d+\.\d+\.\d+)$/ do |ip|
ApplicationController.stubbed_request_ip = ip
end
After do
ApplicationController.stubbed_request_ip = nil
end
You will also need to add the following code to your ApplicationController
:
class ApplicationController < ActionController::Base
before_filter :stub_request_ip
cattr_accessor :stubbed_request_ip
...
private
def stub_request_ip
if stubbed_ip = self.class.stubbed_request_ip
request.instance_eval <<-EOS
def remote_ip
'#{stubbed_ip}'
end
EOS
end
end
end
Please do not waste time to replace the string programming above, I already went there and came back :)
Posted by Henning Koch to makandra dev (2011-10-23 19:10)