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