[PATCH aeolus-conductor] BZ786452 Correct inconsistency in returning errors at API controllers
Petr Blaho
pblaho at redhat.com
Wed Feb 1 13:38:50 UTC 2012
Changes returning error from 500 to 404 of API::ImagesController#destroy
when looked up Image does not exist
This mimics behaviour and code in API::ProviderImagesController#destroy
and API::BuildsController#destroy.
The same correction for API::TargetImagesController#destroy method.
---
src/app/controllers/api/images_controller.rb | 2 ++
.../controllers/api/target_images_controller.rb | 2 ++
src/spec/controllers/api/images_controller_spec.rb | 19 ++++++++++++++-----
.../api/target_images_controller_spec.rb | 19 ++++++++++++++-----
4 files changed, 32 insertions(+), 10 deletions(-)
diff --git a/src/app/controllers/api/images_controller.rb b/src/app/controllers/api/images_controller.rb
index 6261fab..18870f2 100644
--- a/src/app/controllers/api/images_controller.rb
+++ b/src/app/controllers/api/images_controller.rb
@@ -93,6 +93,8 @@ module Api
else
raise(Aeolus::Conductor::API::ImageNotFound.new(404, t("api.error_messages.image_not_found", :image => params[:id])))
end
+ rescue Aeolus::Conductor::API::ImageNotFound => e
+ raise(e)
rescue => e
raise(Aeolus::Conductor::API::ImageDeleteFailure.new(500, e.message))
end
diff --git a/src/app/controllers/api/target_images_controller.rb b/src/app/controllers/api/target_images_controller.rb
index 4ba64c5..03f7521 100644
--- a/src/app/controllers/api/target_images_controller.rb
+++ b/src/app/controllers/api/target_images_controller.rb
@@ -65,6 +65,8 @@ module Api
else
raise(Aeolus::Conductor::API::TargetImageNotFound.new(404, t("api.error_messages.target_image_not_found", :targetimage => params[:id])))
end
+ rescue Aeolus::Conductor::API::TargetImageNotFound => e
+ raise(e)
rescue => e
raise(Aeolus::Conductor::API::TargetImageDeleteFailure.new(500, e.message))
end
diff --git a/src/spec/controllers/api/images_controller_spec.rb b/src/spec/controllers/api/images_controller_spec.rb
index 67ddf15..ccce985 100644
--- a/src/spec/controllers/api/images_controller_spec.rb
+++ b/src/spec/controllers/api/images_controller_spec.rb
@@ -336,11 +336,20 @@ describe Api::ImagesController do
get :destroy, :id => '3'
end
- it { response.headers['Content-Type'].should include("application/xml") }
- it "should have error" do
- resp = Hash.from_xml(response.body)
- resp['error']['code'].should == "ImageDeleteFailure"
- resp['error']['message'].should == "Could not find Image 3"
+ context "response code" do
+ subject { response.code.to_i }
+ it { should == 404 }
+ end
+ context "response's Content-Type header" do
+ subject { response.headers['Content-Type'] }
+ it { should include "application/xml" }
+ end
+ context "response's body" do
+ subject { Hash.from_xml response.body }
+ it "should have error" do
+ subject['error']['code'].should == "ImageNotFound"
+ subject['error']['message'].should == "Could not find Image 3"
+ end
end
end
diff --git a/src/spec/controllers/api/target_images_controller_spec.rb b/src/spec/controllers/api/target_images_controller_spec.rb
index e7b03ca..28b9d23 100644
--- a/src/spec/controllers/api/target_images_controller_spec.rb
+++ b/src/spec/controllers/api/target_images_controller_spec.rb
@@ -212,11 +212,20 @@ describe Api::TargetImagesController do
get :destroy, :id => '99'
end
- it { response.headers['Content-Type'].should include("application/xml") }
- it "should have error" do
- resp = Hash.from_xml(response.body)
- resp['error']['code'].should == "TargetImageDeleteFailure"
- resp['error']['message'].should == "Could not find TargetImage 99"
+ context "response code" do
+ subject { response.code.to_i }
+ it { should == 404 }
+ end
+ context "response's Content-Type header" do
+ subject { response.headers['Content-Type'] }
+ it { should include "application/xml" }
+ end
+ context "response's body" do
+ subject { Hash.from_xml response.body }
+ it "should have error" do
+ subject['error']['code'].should == "TargetImageNotFound"
+ subject['error']['message'].should == "Could not find TargetImage 99"
+ end
end
end
end
--
1.7.7.6
More information about the aeolus-devel
mailing list