Check username and password are not blank before calling deltacloud validation. --- src/app/models/provider_account.rb | 3 +++ src/spec/models/provider_account_spec.rb | 12 ++++++++++++ 2 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/src/app/models/provider_account.rb b/src/app/models/provider_account.rb index 33c7d2e..9858219 100644 --- a/src/app/models/provider_account.rb +++ b/src/app/models/provider_account.rb @@ -163,6 +163,9 @@ class ProviderAccount < ActiveRecord::Base end
def valid_credentials? + if credentials_hash['username'].blank? || credentials_hash['password'].blank? + return false + end DeltaCloud::valid_credentials?(credentials_hash['username'].to_s, credentials_hash['password'].to_s, provider.url) end
diff --git a/src/spec/models/provider_account_spec.rb b/src/spec/models/provider_account_spec.rb index 6845ed2..77ccb1e 100644 --- a/src/spec/models/provider_account_spec.rb +++ b/src/spec/models/provider_account_spec.rb @@ -23,6 +23,12 @@ describe ProviderAccount do invalid_provider_account.credentials_hash = {'username' => "wrong_username", 'password' => "wrong_password"} invalid_provider_account.should_not be_valid
+ ec2_provider = Factory :ec2_provider + invalid_ec2_provider_account = Factory.build(:ec2_provider_account, :provider => ec2_provider) + invalid_ec2_provider_account.credentials_hash = {'username' => "", 'password' => nil} + invalid_ec2_provider_account.valid_credentials?.should == false + invalid_ec2_provider_account.should_not be_valid + valid_provider_account = Factory.build(:mock_provider_account, :provider => mock_provider) valid_provider_account.should be_valid end @@ -33,6 +39,12 @@ describe ProviderAccount do provider_account.save.should == false end
+ it "should fail to create a cloud account if the provider credentials are missing" do + provider_account = Factory.build(:mock_provider_account) + provider_account.credentials_hash = {'password' => nil} + provider_account.valid_credentials?.should == false + end + it "should create an instance_key if provider is EC2" do @client = mock('Conductor', :null_object => true) @provider = Factory.build :ec2_provider