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