From 4aab135bc6fffb0b13979e240479c24a3f553b06 Mon Sep 17 00:00:00 2001 From: Gibheer Date: Wed, 5 Mar 2014 09:42:49 +0100 Subject: add x-forwarded-for header to the client This adds the way to find out the actual ip of the client machine, even if it is hidden behind a local reverse proxy. --- spec/unit/zero/request/client/address_spec.rb | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'spec') diff --git a/spec/unit/zero/request/client/address_spec.rb b/spec/unit/zero/request/client/address_spec.rb index 5e0b65d..09c6da9 100644 --- a/spec/unit/zero/request/client/address_spec.rb +++ b/spec/unit/zero/request/client/address_spec.rb @@ -2,8 +2,26 @@ require 'spec_helper' describe Zero::Request::Client, '#address' do subject { Zero::Request::Client.new(env) } - let(:address) { '127.0.0.1' } - let(:env) { {'REMOTE_ADDR' => address} } - its(:address) { should == address } + context 'without a proxy' do + let(:address) { '127.0.0.1' } + let(:env) { {'REMOTE_ADDR' => address} } + + its(:address) { should == address } + end + + context 'with a proxy' do + let(:proxy) { '127.0.0.1' } + let(:address) { '192.168.42.3' } + let(:env) do + { + 'REMOTE_ADDR' => proxy, + 'X_FORWARDED_FOR' => address + } + end + + its(:address) { should == address } + its(:remote_address) { should == proxy } + its(:forwarded_for) { should == address } + end end -- cgit v1.2.3-70-g09d2