spec/unit/settings_spec.rb in r10k-2.2.2 vs spec/unit/settings_spec.rb in r10k-2.3.0

- old
+ new

@@ -30,10 +30,28 @@ it "passes values through unchanged" do output = subject.evaluate("private_key" => "/etc/puppetlabs/r10k/id_rsa") expect(output[:private_key]).to eq("/etc/puppetlabs/r10k/id_rsa") end end + + describe "proxy" do + it "accepts valid URIs" do + output = subject.evaluate("proxy" => "http://proxy.tessier-ashpool.freeside:3128") + expect(output[:proxy]).to eq "http://proxy.tessier-ashpool.freeside:3128" + end + + it "rejects invalid URIs" do + expect { + subject.evaluate("proxy" => "that's no proxy!") + }.to raise_error do |err| + expect(err.message).to match(/Validation failed for 'git' settings group/) + expect(err.errors.size).to eq 1 + expect(err.errors[:proxy]).to be_a_kind_of(ArgumentError) + expect(err.errors[:proxy].message).to match(/could not be parsed as a URL/) + end + end + end end describe "forge settings" do subject { described_class.forge_settings } @@ -45,27 +63,16 @@ it "rejects invalid URIs" do expect { subject.evaluate("proxy" => "that's no proxy!") }.to raise_error do |err| - expect(err.message).to match(/Validation failed for forge settings group/) + expect(err.message).to match(/Validation failed for 'forge' settings group/) expect(err.errors.size).to eq 1 expect(err.errors[:proxy]).to be_a_kind_of(ArgumentError) expect(err.errors[:proxy].message).to match(/could not be parsed as a URL/) end end - - describe "setting a default value" do - %w[HTTPS_PROXY https_proxy HTTP_PROXY http_proxy].each do |env_var| - it "respects the #{env_var} environment variable" do - R10K::Util::ExecEnv.withenv(env_var => "http://proxy.value/#{env_var}") do - output = subject.evaluate({}) - expect(output[:proxy]).to eq("http://proxy.value/#{env_var}") - end - end - end - end end describe "baseurl" do it "accepts valid URIs" do output = subject.evaluate("baseurl" => "https://forge.tessier-ashpool.freeside") @@ -74,11 +81,11 @@ it "rejects invalid URIs" do expect { subject.evaluate("baseurl" => "that's no forge!") }.to raise_error do |err| - expect(err.message).to match(/Validation failed for forge settings group/) + expect(err.message).to match(/Validation failed for 'forge' settings group/) expect(err.errors.size).to eq 1 expect(err.errors[:baseurl]).to be_a_kind_of(ArgumentError) expect(err.errors[:baseurl].message).to match(/could not be parsed as a URL/) end end @@ -101,11 +108,11 @@ it "rejects non-string truthy values for the write lock" do expect { subject.evaluate("write_lock" => %w[list of reasons why deploys are locked]) }.to raise_error do |err| - expect(err.message).to match(/Validation failed for deploy settings group/) + expect(err.message).to match(/Validation failed for 'deploy' settings group/) expect(err.errors.size).to eq 1 expect(err.errors[:write_lock]).to be_a_kind_of(ArgumentError) expect(err.errors[:write_lock].message).to match(/should be a string containing the reason/) end end @@ -136,28 +143,50 @@ it "rejects a string command" do expect { subject.evaluate("postrun" => "curl -F 'deploy=done' https://reporting.tessier-ashpool.freeside/r10k") }.to raise_error do |err| - expect(err.message).to match(/Validation failed for global settings group/) + expect(err.message).to match(/Validation failed for 'global' settings group/) expect(err.errors.size).to eq 1 expect(err.errors[:postrun]).to be_a_kind_of(ArgumentError) expect(err.errors[:postrun].message).to eq("The postrun setting should be an array of strings, not a String") end end end + describe "proxy" do + it "accepts valid URIs" do + output = subject.evaluate("proxy" => "http://proxy.tessier-ashpool.freeside:3128") + expect(output[:proxy]).to eq "http://proxy.tessier-ashpool.freeside:3128" + end + + it "rejects invalid URIs" do + expect { + subject.evaluate("proxy" => "that's no proxy!") + }.to raise_error do |err| + expect(err.message).to match(/Validation failed for 'global' settings group/) + expect(err.errors.size).to eq 1 + expect(err.errors[:proxy]).to be_a_kind_of(ArgumentError) + expect(err.errors[:proxy].message).to match(/could not be parsed as a URL/) + end + end + + describe "setting a default value" do + %w[HTTPS_PROXY https_proxy HTTP_PROXY http_proxy].each do |env_var| + it "respects the #{env_var} environment variable" do + R10K::Util::ExecEnv.withenv(env_var => "http://proxy.value/#{env_var}") do + output = subject.evaluate({}) + expect(output[:proxy]).to eq("http://proxy.value/#{env_var}") + end + end + end + end + end + describe "git settings" do it "passes settings through to the git settings" do output = subject.evaluate("git" => {"provider" => "shellgit", "username" => "git"}) - expect(output[:git]).to eq(:provider => :shellgit, :username => "git", :private_key => nil, :repositories => []) - end - - it "handles keywords in repository settings" do - output = subject.evaluate("git" => {"provider" => "shellgit", - "username" => "git", - "repositories" => [ {"remote" => "foo"} ]}) - expect(output[:git]).to eq(:provider => :shellgit, :username => "git", :private_key => nil, :repositories => [{remote: "foo"}]) + expect(output[:git]).to include(:provider => :shellgit, :username => "git") end end describe "forge settings" do it "passes settings through to the forge settings" do