summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordanielsdeleo <dan@opscode.com>2014-01-22 16:05:32 -0800
committerdanielsdeleo <dan@opscode.com>2014-01-22 16:05:32 -0800
commitc52960f3cea72c65068ab07cdeea602b4821d322 (patch)
tree8b4b70235316b321f08b5b925353e900dda3ac8f
parent25e2afe01d5e9d3e156c90f0a923906582a70f3e (diff)
downloadchef-c52960f3cea72c65068ab07cdeea602b4821d322.tar.gz
Update error messaging in Policyfile policy builder
-rw-r--r--lib/chef/policy_builder/policyfile.rb5
-rw-r--r--spec/unit/policy_builder/policyfile_spec.rb18
2 files changed, 18 insertions, 5 deletions
diff --git a/lib/chef/policy_builder/policyfile.rb b/lib/chef/policy_builder/policyfile.rb
index 9460302edc..9a544e6dc9 100644
--- a/lib/chef/policy_builder/policyfile.rb
+++ b/lib/chef/policy_builder/policyfile.rb
@@ -218,6 +218,8 @@ class Chef
def policy
@policy ||= http_api.get(policyfile_location)
+ rescue Net::HTTPServerException => e
+ raise ConfigurationError, "Error loading policyfile from `#{policyfile_location}': #{e.class} - #{e.message}"
end
def policyfile_location
@@ -310,6 +312,9 @@ class Chef
@api_service ||= Chef::REST.new(config[:chef_server_url])
end
+ def config
+ Chef::Config
+ end
end
end
diff --git a/spec/unit/policy_builder/policyfile_spec.rb b/spec/unit/policy_builder/policyfile_spec.rb
index 7f11cb2e65..b56fea4a48 100644
--- a/spec/unit/policy_builder/policyfile_spec.rb
+++ b/spec/unit/policy_builder/policyfile_spec.rb
@@ -90,10 +90,16 @@ describe Chef::PolicyBuilder::Policyfile do
}
end
- let(:http_api) { double("Chef::REST") }
-
let(:err_namespace) { Chef::PolicyBuilder::Policyfile }
+ it "configures a Chef HTTP API client" do
+ http = double("Chef::REST")
+ server_url = "https://api.opscode.com/organizations/example"
+ Chef::Config[:chef_server_url] = server_url
+ Chef::REST.should_receive(:new).with(server_url).and_return(http)
+ expect(policy_builder.http_api).to eq(http)
+ end
+
describe "reporting unsupported features" do
def initialize_pb
@@ -136,6 +142,8 @@ describe Chef::PolicyBuilder::Policyfile do
describe "when using compatibility mode" do
+ let(:http_api) { double("Chef::REST") }
+
let(:configured_environment) { nil }
let(:override_runlist) { nil }
@@ -170,12 +178,12 @@ describe Chef::PolicyBuilder::Policyfile do
end
it "raises an error" do
- expect { policy_builder.load_node }.to raise_error(Net::HTTPServerException)
+ expect { policy_builder.load_node }.to raise_error(err_namespace::ConfigurationError)
end
it "sends error message to the event system" do
- events.should_receive(:node_load_failed).with(node_name, error404, Chef::Config)
- expect { policy_builder.load_node }.to raise_error(Net::HTTPServerException)
+ events.should_receive(:node_load_failed).with(node_name, an_instance_of(err_namespace::ConfigurationError), Chef::Config)
+ expect { policy_builder.load_node }.to raise_error(err_namespace::ConfigurationError)
end
end