From: Jan Provaznik <jprovazn(a)redhat.com>
---
src/app/models/provider_account.rb | 13 +++++++++++--
src/spec/models/provider_account_spec.rb | 12 ++++++++++++
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/src/app/models/provider_account.rb b/src/app/models/provider_account.rb
index 88ebe5b..9c5f316 100644
--- a/src/app/models/provider_account.rb
+++ b/src/app/models/provider_account.rb
@@ -68,6 +68,8 @@ class ProviderAccount < ActiveRecord::Base
validate :validate_presence_of_credentials
validate :validate_credentials
validate :validate_unique_username
+ before_create :no_account?
+ before_destroy :destroyable?
def validate_presence_of_credentials
provider.provider_type.credential_definitions.each do |cd|
@@ -92,8 +94,15 @@ class ProviderAccount < ActiveRecord::Base
return true
end
- # Hooks
- before_destroy :destroyable?
+ def no_account?
+ #if provider.provider_accounts.empty?
+ if provider.provider_accounts.empty?
+ return true
+ else
+ errors.add(:base, "Only one account is supported per provider")
+ return false
+ end
+ end
def object_list
super << provider
diff --git a/src/spec/models/provider_account_spec.rb
b/src/spec/models/provider_account_spec.rb
index 2c3c090..02666f1 100644
--- a/src/spec/models/provider_account_spec.rb
+++ b/src/spec/models/provider_account_spec.rb
@@ -93,4 +93,16 @@ EOT
provider_account1.credentials_hash.should == provider_account2.credentials_hash
provider_account2.should be_valid
end
+
+ it "should fail to create more than one account per provider" do
+ provider = Factory :mock_provider
+ acc1 = Factory(:mock_provider_account, :provider => provider)
+ acc2 = Factory.build(:mock_provider_account, :provider => provider)
+ acc2.stub!(:valid_credentials?).and_return(true)
+ acc2.stub!(:validate_unique_username).and_return(true)
+ provider.provider_accounts << acc1
+ provider.provider_accounts << acc2
+ acc2.save.should == false
+ acc2.errors[:base].should include('Only one account is supported per
provider')
+ end
end
--
1.7.4
Show replies by date