You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by mf...@apache.org on 2012/09/26 23:12:37 UTC
[2/3] git commit: Added tests for exception DSL
Added tests for exception DSL
Project: http://git-wip-us.apache.org/repos/asf/deltacloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltacloud/commit/2ffef854
Tree: http://git-wip-us.apache.org/repos/asf/deltacloud/tree/2ffef854
Diff: http://git-wip-us.apache.org/repos/asf/deltacloud/diff/2ffef854
Branch: refs/heads/master
Commit: 2ffef85449a8a8c1b297b32146717b388cf0b588
Parents: 243c0ac
Author: Michal Fojtik <mf...@redhat.com>
Authored: Sat Sep 22 00:10:08 2012 +0200
Committer: Michal fojtik <mf...@redhat.com>
Committed: Wed Sep 26 23:09:54 2012 +0200
----------------------------------------------------------------------
.../deltacloud/collections/keys_collection_test.rb | 3 -
server/tests/drivers/base/exceptions_test.rb | 64 +++++++++++++++
2 files changed, 64 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/2ffef854/server/tests/deltacloud/collections/keys_collection_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/deltacloud/collections/keys_collection_test.rb b/server/tests/deltacloud/collections/keys_collection_test.rb
index c2e5635..9751a33 100644
--- a/server/tests/deltacloud/collections/keys_collection_test.rb
+++ b/server/tests/deltacloud/collections/keys_collection_test.rb
@@ -48,9 +48,6 @@ describe Deltacloud::Collections::Keys do
xml.root.name.must_equal 'key'
xml.root[:id].must_equal 'unit-test1'
(xml/'key/pem').wont_be_empty
- Proc.new {
- post root_url + '/keys', { :name => 'unit-test1' }
- }.must_raise Deltacloud::ExceptionHandler::ProviderError, 'keyExist'
delete root_url + '/keys/unit-test1'
status.must_equal 204
end
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/2ffef854/server/tests/drivers/base/exceptions_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/base/exceptions_test.rb b/server/tests/drivers/base/exceptions_test.rb
new file mode 100644
index 0000000..479627d
--- /dev/null
+++ b/server/tests/drivers/base/exceptions_test.rb
@@ -0,0 +1,64 @@
+require 'rubygems'
+require 'require_relative' if RUBY_VERSION < '1.9'
+require_relative './common'
+require_relative '../../../lib/deltacloud/drivers/exceptions'
+
+class TestException < StandardError; end
+
+class ExceptionTestClass
+ include Deltacloud::ExceptionHandler
+
+ def raise_exception(id)
+ case id
+ when 1 then safely { raise 'test1 exception' }
+ when 2 then safely { raise TestException }
+ when 3 then safely { raise 'not captured' }
+ end
+ end
+
+ exceptions do
+ on /test1/ do
+ status 500
+ message 'Test1ErrorMessage'
+ end
+ on TestException do
+ status 400
+ message 'StandardErrorTest'
+ end
+ end
+end
+
+def raise_error(id); ExceptionTestClass.new.raise_exception(id); end
+
+describe Deltacloud::ExceptionHandler do
+
+ it 'should capture exception when match the exception message' do
+ lambda { raise_error 1 }.must_raise Deltacloud::ExceptionHandler::BackendError
+
+ begin raise_error(1); rescue Deltacloud::ExceptionHandler::BackendError => e
+ e.code.must_equal 500
+ e.message.must_equal 'Test1ErrorMessage'
+ e.backtrace.wont_be_empty
+ end
+
+ end
+
+ it 'should capture exception when match the exception class' do
+ lambda { raise_error 2 }.must_raise Deltacloud::ExceptionHandler::ValidationFailure
+ begin raise_error(2); rescue Deltacloud::ExceptionHandler::ValidationFailure => e
+ e.code.must_equal 400
+ e.message.must_equal 'StandardErrorTest'
+ e.backtrace.wont_be_empty
+ end
+ end
+
+ it 'should capture exception when no match found' do
+ lambda { raise_error 3 }.must_raise Deltacloud::ExceptionHandler::BackendError
+ begin raise_error(3); rescue Deltacloud::ExceptionHandler::BackendError => e
+ e.code.must_equal 500
+ e.message.must_equal 'Unhandled exception or status code (not captured)'
+ e.backtrace.wont_be_empty
+ end
+ end
+
+end