summaryrefslogtreecommitdiff
path: root/spec/unit/http
diff options
context:
space:
mode:
authorKlaas Jan Wierenga <k.j.wierenga@gmail.com>2014-06-05 12:10:17 +0200
committerKlaas Jan Wierenga <k.j.wierenga@gmail.com>2014-06-07 23:06:03 +0200
commitb3b7ec83c9d507d734ff7375fff4809dab6a960a (patch)
treedbec0cde9701560952a2c18d6b90b28bebc5d8b4 /spec/unit/http
parent0765e6fcf3a8df74ba747f6a64536e927d8430b8 (diff)
downloadchef-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/unit/http')
-rw-r--r--spec/unit/http/http_request_spec.rb91
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