[PATCH conductor] BZ#753880 Catch exceptions on DC valid credentials request

Matt Wagner matt.wagner at redhat.com
Mon Feb 6 20:02:52 UTC 2012


From: Martyn Taylor <mtaylor at redhat.com>

Signed-off-by: Matt Wagner <matt.wagner at redhat.com>
---
 src/app/models/provider_account.rb       |    8 ++++++--
 src/config/locales/en.yml                |    2 ++
 src/features/provider_account.feature    |    2 +-
 src/spec/models/provider_account_spec.rb |    8 ++++++++
 4 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/app/models/provider_account.rb b/src/app/models/provider_account.rb
index 89009aa..6a8cb35 100644
--- a/src/app/models/provider_account.rb
+++ b/src/app/models/provider_account.rb
@@ -86,8 +86,12 @@ class ProviderAccount < ActiveRecord::Base
   end
 
   def validate_credentials
-    unless valid_credentials?
-      errors.add(:base, "Login Credentials are Invalid for this Provider")
+    begin
+      unless valid_credentials?
+        errors.add(:base, I18N.t('provider_accounts.errors.invalid_credentials'))
+      end
+    rescue
+      errors.add(:base, I18n.t('provider_accounts.errors.exception_while_validating'))
     end
   end
 
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index fe65336..3a0f746 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -1101,6 +1101,8 @@ en:
         must_select_account: "You must select some accounts first."
         no_provider: "You don't have any provider yet"
     errors:
+      exception_while_validating: An error occurred when checking provider credentials. Please check your setup and try again.
+      invalid_credentials: Login credentials are invalid for this provider.
       populate_hardware_profiles_failed: "Failed to populate hardware_profiles: %{message}"
       populate_realms_failed: "Failed to populate realms: %{message}"
   config_servers:
diff --git a/src/features/provider_account.feature b/src/features/provider_account.feature
index 4ac6158..44f41cb 100644
--- a/src/features/provider_account.feature
+++ b/src/features/provider_account.feature
@@ -56,7 +56,7 @@ Feature: Manage Provider Accounts
     And I fill in "quota[maximum_running_instances]" with "13"
     And I press "Save"
     Then I should see "Cannot add the provider account."
-    Then I should see "Login Credentials are Invalid for this Provider"
+    Then I should see "An error occurred when checking provider credentials."
 
   Scenario: Delete a provider account
     Given there is a provider named "testprovider"
diff --git a/src/spec/models/provider_account_spec.rb b/src/spec/models/provider_account_spec.rb
index 04b4b1e..a8c1074 100644
--- a/src/spec/models/provider_account_spec.rb
+++ b/src/spec/models/provider_account_spec.rb
@@ -64,6 +64,14 @@ describe ProviderAccount do
     provider_account.save.should == false
   end
 
+  it "should add errors when testing credentials fails" do
+    provider_account = Factory.build(:mock_provider_account)
+    provider_account.credentials_hash = {'password' => "wrong_password"}
+    provider_account.stub(:valid_credentials).and_raise("DeltacloudError")
+    provider_account.save.should == false
+    provider_account.errors[:base].should == [I18n.t('provider_accounts.errors.exception_while_validating')]
+  end
+
   it "should fail to create a cloud account if fetching of hw profiles fails" do
     provider_account = Factory.build(:mock_provider_account)
     provider_account.stub(:populate_hardware_profiles).and_raise(ActiveRecord::RecordInvalid)
-- 
1.7.6.5




More information about the aeolus-devel mailing list