1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
require File.expand_path('../../helper', __FILE__)
describe Innate::Request do
def request(env = {})
Innate::Request.new(@env.merge(env))
end
@env = {
"GATEWAY_INTERFACE" => "CGI/1.1",
"HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"HTTP_ACCEPT_CHARSET" => "UTF-8,*",
"HTTP_ACCEPT_ENCODING" => "gzip,deflate",
"HTTP_ACCEPT_LANGUAGE" => "en-us,en;q=0.8,de-at;q=0.5,de;q=0.3",
"HTTP_CACHE_CONTROL" => "max-age=0",
"HTTP_CONNECTION" => "keep-alive",
"HTTP_HOST" => "localhost:7000",
"HTTP_KEEP_ALIVE" => "300",
"HTTP_USER_AGENT" => "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008123017 Firefox/3.0.4 Ubiquity/0.1.4",
"HTTP_VERSION" => "HTTP/1.1",
"PATH_INFO" => "/",
"QUERY_STRING" => "a=b",
"REMOTE_ADDR" => "127.0.0.1",
"REMOTE_HOST" => "delta.local",
"REQUEST_METHOD" => "GET",
"REQUEST_PATH" => "/",
"REQUEST_URI" => "http://localhost:7000/",
"SCRIPT_NAME" => "",
"SERVER_NAME" => "localhost",
"SERVER_PORT" => "7000",
"SERVER_PROTOCOL" => "HTTP/1.1",
}
should 'provide #request_uri' do
request('REQUEST_URI' => '/?a=b').request_uri.should == '/?a=b'
request('REQUEST_URI' => '/').request_uri.should == '/'
end
should 'provide #local_net?' do
request.local_net?('192.168.0.1').to_s.should == '192.168.0.0'
request.local_net?('252.168.0.1').should == nil
request.local_net?('unknown').should == nil
request('REMOTE_ADDR' => '211.3.129.47, 66.249.85.131').local_net?.should == nil
request('REMOTE_ADDR' => '211.3.129.47').local_net?.should == nil
end
should 'provide #subset' do
require 'stringio'
query = {'a' => 'b', 'c' => 'd', 'e' => 'f'}
params = StringIO.new(Rack::Utils.build_query(query))
req = request(
'QUERY_STRING' => params.string,
'rack.input' => params
)
req.params.should == query
req.subset(:a).should == {'a' => 'b'}
req.subset(:a, :c).should == {'a' => 'b', 'c' => 'd'}
end
should 'provide #domain on http' do
request('rack.url_scheme' => 'http').domain.
should == URI('http://localhost:7000/')
request('rack.url_scheme' => 'http').domain('/foo').
should == URI('http://localhost:7000/foo')
request('rack.url_scheme' => 'http').domain('/foo', :keep_query => true).
should == URI('http://localhost:7000/foo?a=b')
end
should 'provide #domain on https' do
request('rack.url_scheme' => 'https').domain.
should == URI('https://localhost:7000/')
request('rack.url_scheme' => 'https').domain('/foo').
should == URI('https://localhost:7000/foo')
request('rack.url_scheme' => 'https').domain('/foo', :keep_query => true).
should == URI('https://localhost:7000/foo?a=b')
end
end
|