From e2f3e29a341945bb6a2ee3a9dc31cce71de3a58b Mon Sep 17 00:00:00 2001 From: Gibheer Date: Fri, 26 Jul 2013 14:46:33 +0200 Subject: extend server with protocol information This extends the server class with the information, if it is serving http or https. This can then be used to generate a root uri to the web application. --- spec/unit/zero/request/server/hostname_spec.rb | 1 - spec/unit/zero/request/server/is_http_spec.rb | 20 ++++++++++++++++++++ spec/unit/zero/request/server/is_https_spec.rb | 20 ++++++++++++++++++++ spec/unit/zero/request/server/uri_spec.rb | 23 +++++++++++++++++++++++ 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 spec/unit/zero/request/server/is_http_spec.rb create mode 100644 spec/unit/zero/request/server/is_https_spec.rb create mode 100644 spec/unit/zero/request/server/uri_spec.rb (limited to 'spec/unit') diff --git a/spec/unit/zero/request/server/hostname_spec.rb b/spec/unit/zero/request/server/hostname_spec.rb index b2275b4..2f9af13 100644 --- a/spec/unit/zero/request/server/hostname_spec.rb +++ b/spec/unit/zero/request/server/hostname_spec.rb @@ -6,4 +6,3 @@ describe Zero::Request::Server, '#hostname' do let(:env) { EnvGenerator.get('/foo', {'SERVER_NAME' => hostname}) } its(:hostname) { should be(hostname) } end - diff --git a/spec/unit/zero/request/server/is_http_spec.rb b/spec/unit/zero/request/server/is_http_spec.rb new file mode 100644 index 0000000..6e41393 --- /dev/null +++ b/spec/unit/zero/request/server/is_http_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe Zero::Request::Server, '#is_http?' do + subject { Zero::Request::Server.new(env) } + let(:hostname) { 'FooName' } + + context 'with http' do + let(:env) { EnvGenerator.get('/foo', {'SERVER_NAME' => hostname}) } + its(:is_http?) { should be(true) } + end + + context 'with https' do + let(:env) { EnvGenerator.get('/foo', { + 'SERVER_NAME' => hostname, + 'HTTPS' => 'on' + }) } + its(:is_http?) { should be(false) } + end +end + diff --git a/spec/unit/zero/request/server/is_https_spec.rb b/spec/unit/zero/request/server/is_https_spec.rb new file mode 100644 index 0000000..340e489 --- /dev/null +++ b/spec/unit/zero/request/server/is_https_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe Zero::Request::Server, '#is_https?' do + subject { Zero::Request::Server.new(env) } + let(:hostname) { 'FooName' } + + context 'with http' do + let(:env) { EnvGenerator.get('/foo', {'SERVER_NAME' => hostname}) } + its(:is_https?) { should be(false) } + end + + context 'with https' do + let(:env) { EnvGenerator.get('/foo', { + 'SERVER_NAME' => hostname, + 'HTTPS' => 'on' + }) } + its(:is_https?) { should be(true) } + end +end + diff --git a/spec/unit/zero/request/server/uri_spec.rb b/spec/unit/zero/request/server/uri_spec.rb new file mode 100644 index 0000000..c9bd9ec --- /dev/null +++ b/spec/unit/zero/request/server/uri_spec.rb @@ -0,0 +1,23 @@ +require 'spec_helper' + +describe Zero::Request::Server, '#uri' do + subject { Zero::Request::Server.new(env) } + let(:hostname) { 'FooName' } + let(:port) { '80' } + let(:protocol) { 'http' } + let(:env) { EnvGenerator.get('/foo', { + 'SERVER_NAME' => hostname, + 'SERVER_PORT' => port + }) } + + context 'with standard port' do + let(:result) { "#{protocol}://#{hostname}" } + its(:uri) { should eq(result) } + end + + context 'with different port' do + let(:port) { '9292' } + let(:result) { "#{protocol}://#{hostname}:#{port}" } + its(:uri) { should eq(result) } + end +end -- cgit v1.2.3-70-g09d2