spec/arachni/http/headers_spec.rb in arachni-1.4 vs spec/arachni/http/headers_spec.rb in arachni-1.5
- old
+ new
@@ -1,23 +1,63 @@
require 'spec_helper'
describe Arachni::HTTP::Headers do
- context 'when it includes multiple same names that differ in case' do
- subject do
- described_class.new( cookies )
+ subject do
+ described_class.new
+ end
+
+ describe '#merge!' do
+ context 'by default' do
+ context 'when it includes multiple same names that differ in case' do
+ let(:cookies) do
+ {
+ 'set-cookie' => 'mycookie1=myvalue1',
+ 'Set-Cookie' => 'mycookie2=myvalue2',
+ 'SET-COOKIE' => 'mycookie3=myvalue3'
+ }
+ end
+
+ it 'merges them into an array' do
+ subject.merge!( cookies )
+ expect(subject['set-cookie']).to eq(cookies.values)
+ end
+ end
end
- let(:cookies) do
- {
- 'set-cookie' => 'mycookie1=myvalue1',
- 'Set-Cookie' => 'mycookie2=myvalue2',
- 'SET-COOKIE' => 'mycookie3=myvalue3'
- }
+
+ context 'when convert to array is false' do
+ context 'when it includes multiple same names that differ in case' do
+ let(:cookies) do
+ {
+ 'set-cookie' => 'mycookie1=myvalue1',
+ 'Set-Cookie' => 'mycookie2=myvalue2',
+ 'SET-COOKIE' => 'mycookie3=myvalue3'
+ }
+ end
+
+ it 'does not merge them into an array' do
+ subject.merge!( cookies, false )
+ expect(subject['set-cookie']).to eq(cookies.values.last)
+ end
+ end
end
- it 'merges them into an array' do
- expect(subject['set-cookie']).to eq(cookies.values)
+ context 'when convert to array is true' do
+ context 'when it includes multiple same names that differ in case' do
+ let(:cookies) do
+ {
+ 'set-cookie' => 'mycookie1=myvalue1',
+ 'Set-Cookie' => 'mycookie2=myvalue2',
+ 'SET-COOKIE' => 'mycookie3=myvalue3'
+ }
+ end
+
+ it 'does not merge them into an array' do
+ subject.merge!( cookies )
+ expect(subject['set-cookie']).to eq(cookies.values)
+ end
+ end
end
end
describe '#delete' do
it 'deleted a header field' do
@@ -104,11 +144,11 @@
])
end
end
describe '#location' do
- it 'returns the content-type' do
+ it 'returns the Location' do
ct = 'http://test.com'
h = { 'location' => ct }
expect(described_class.new( h ).location).to eq(ct)
h = { 'Location' => ct }
@@ -122,8 +162,15 @@
h = { 'content-type' => ct }
expect(described_class.new( h ).content_type).to eq(ct)
h = { 'Content-Type' => ct }
expect(described_class.new( h ).content_type).to eq(ct)
+ end
+
+ context 'when there are multiple content-types' do
+ it 'returns the first one' do
+ h = { 'Content-Type' => ["application/x-javascript", "text/javascript"] }
+ expect(described_class.new( h ).content_type).to eq("application/x-javascript")
+ end
end
end
end