diff options
author | Klaas Jan Wierenga <k.j.wierenga@gmail.com> | 2014-06-05 12:10:17 +0200 |
---|---|---|
committer | Klaas Jan Wierenga <k.j.wierenga@gmail.com> | 2014-06-07 23:06:03 +0200 |
commit | b3b7ec83c9d507d734ff7375fff4809dab6a960a (patch) | |
tree | dbec0cde9701560952a2c18d6b90b28bebc5d8b4 /spec | |
parent | 0765e6fcf3a8df74ba747f6a64536e927d8430b8 (diff) | |
download | chef-b3b7ec83c9d507d734ff7375fff4809dab6a960a.tar.gz |
Add specs for CHEF-5355. Only pass on port in Host header when port is different from default port for URI scheme.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/unit/http/http_request_spec.rb | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/spec/unit/http/http_request_spec.rb b/spec/unit/http/http_request_spec.rb new file mode 100644 index 0000000000..d573d4c5dc --- /dev/null +++ b/spec/unit/http/http_request_spec.rb @@ -0,0 +1,91 @@ +# +# Author:: Klaas Jan Wierenga (<k.j.wierenga@gmail.com>) +# Copyright:: Copyright (c) 2014 Chef Software, Inc. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'spec_helper' + +describe Chef::HTTP::HTTPRequest do + + context "with HTTP url scheme" do + + it "should not include port 80 in Host header" do + request = Chef::HTTP::HTTPRequest.new(:GET, URI('http://dummy.com'), '') + + request.headers['Host'].should eql('dummy.com') + end + + it "should not include explicit port 80 in Host header" do + request = Chef::HTTP::HTTPRequest.new(:GET, URI('http://dummy.com:80'), '') + + request.headers['Host'].should eql('dummy.com') + end + + it "should include explicit port 8000 in Host header" do + request = Chef::HTTP::HTTPRequest.new(:GET, URI('http://dummy.com:8000'), '') + + request.headers['Host'].should eql('dummy.com:8000') + end + + it "should include explicit 443 port in Host header" do + request = Chef::HTTP::HTTPRequest.new(:GET, URI('http://dummy.com:443'), '') + + request.headers['Host'].should eql('dummy.com:443') + end + + it "should pass on explicit Host header unchanged" do + request = Chef::HTTP::HTTPRequest.new(:GET, URI('http://dummy.com:8000'), '', { 'Host' => 'yourhost.com:8888' }) + + request.headers['Host'].should eql('yourhost.com:8888') + end + + end + + context "with HTTPS url scheme" do + + it "should not include port 443 in Host header" do + request = Chef::HTTP::HTTPRequest.new(:GET, URI('https://dummy.com'), '') + + request.headers['Host'].should eql('dummy.com') + end + + it "should include explicit port 80 in Host header" do + request = Chef::HTTP::HTTPRequest.new(:GET, URI('https://dummy.com:80'), '') + + request.headers['Host'].should eql('dummy.com:80') + end + + it "should include explicit port 8000 in Host header" do + request = Chef::HTTP::HTTPRequest.new(:GET, URI('https://dummy.com:8000'), '') + + request.headers['Host'].should eql('dummy.com:8000') + end + + it "should not include explicit port 443 in Host header" do + request = Chef::HTTP::HTTPRequest.new(:GET, URI('https://dummy.com:443'), '') + + request.headers['Host'].should eql('dummy.com') + end + + end + + it "should pass on explicit Host header unchanged" do + request = Chef::HTTP::HTTPRequest.new(:GET, URI('http://dummy.com:8000'), '', { 'Host' => 'myhost.com:80' }) + + request.headers['Host'].should eql('myhost.com:80') + end + +end |