summaryrefslogtreecommitdiff
path: root/spec/unit/chef_fs
diff options
context:
space:
mode:
authorKazuhiro Yamada <yamadakazu45@gmail.com>2013-07-29 12:08:48 +0900
committerJohn Keiser <jkeiser@opscode.com>2013-09-12 23:10:55 -0700
commit60d2e995475c79645d9573f46cbea8507cbb0f38 (patch)
tree5c8b615b40117e360c701732e60a80b0e4377c64 /spec/unit/chef_fs
parenta3ced11def5e270b1d58787992bb2cff9d889327 (diff)
downloadchef-60d2e995475c79645d9573f46cbea8507cbb0f38.tar.gz
Change OperationFailedError itself to include the body in "message" if it's a 400.
Diffstat (limited to 'spec/unit/chef_fs')
-rw-r--r--spec/unit/chef_fs/file_system/operation_failed_error_spec.rb47
-rw-r--r--spec/unit/chef_fs/file_system_spec.rb20
2 files changed, 47 insertions, 20 deletions
diff --git a/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb b/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb
new file mode 100644
index 0000000000..570246c41f
--- /dev/null
+++ b/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb
@@ -0,0 +1,47 @@
+#
+# Author:: John Keiser (<jkeiser@opscode.com>)
+# Copyright:: Copyright (c) 2012 Opscode, 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'
+require 'chef/chef_fs/file_system/operation_failed_error'
+
+describe Chef::ChefFS::FileSystem::OperationFailedError do
+ context 'message' do
+ let(:error_message) { 'HTTP error writing: 400 "Bad Request"' }
+
+ context 'has a cause attribute and HTTP result code is 400' do
+ it 'include error cause' do
+ allow_message_expectations_on_nil
+ response_body = '{"error":["Invalid key test in request body"]}'
+ @response.stub(:code).and_return("400")
+ @response.stub(:body).and_return(response_body)
+ exception = Net::HTTPServerException.new("(exception) unauthorized", @response)
+ proc {
+ raise Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self, exception), error_message
+ }.should raise_error(Chef::ChefFS::FileSystem::OperationFailedError, "#{error_message} cause: #{response_body}")
+ end
+ end
+
+ context 'does not have a cause attribute' do
+ it 'does not include error cause' do
+ proc {
+ raise Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self), error_message
+ }.should raise_error(Chef::ChefFS::FileSystem::OperationFailedError, error_message)
+ end
+ end
+ end
+end
diff --git a/spec/unit/chef_fs/file_system_spec.rb b/spec/unit/chef_fs/file_system_spec.rb
index b223dc084d..383a2c81ab 100644
--- a/spec/unit/chef_fs/file_system_spec.rb
+++ b/spec/unit/chef_fs/file_system_spec.rb
@@ -131,25 +131,5 @@ describe Chef::ChefFS::FileSystem do
Chef::ChefFS::FileSystem.resolve_path(fs, '/y/x/w').path.should == '/y/x/w'
end
end
-
- context 'get_error_cause' do
- context 'error has a cause attribute and cause attribute is instance of Net::HTTPServerException' do
- it 'return error cause' do
- allow_message_expectations_on_nil
- response_body = '{"error":["Invalid key test in request body"]}'
- @response.stub(:body).and_return(response_body)
- exception = Net::HTTPServerException.new("(exception) unauthorized", @response)
- error = Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self, exception)
- Chef::ChefFS::FileSystem.get_error_cause(error).should == response_body
- end
- end
-
- context 'error has not a cause property' do
- it 'return nil' do
- error = Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self)
- Chef::ChefFS::FileSystem.get_error_cause(error).should == nil
- end
- end
- end
end
end