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