From: Tomas Sedovic <[email protected]>
---
src/spec/factories/cloud_account.rb | 9 ++++
src/spec/models/cloud_account_spec.rb | 76 +++++++++++++++++++++++++++++++++
2 files changed, 85 insertions(+), 0 deletions(-)
create mode 100644 src/spec/factories/cloud_account.rb
create mode 100644 src/spec/models/cloud_account_spec.rb
diff --git a/src/spec/factories/cloud_account.rb
b/src/spec/factories/cloud_account.rb
new file mode 100644
index 0000000..39d40c6
--- /dev/null
+++ b/src/spec/factories/cloud_account.rb
@@ -0,0 +1,9 @@
+Factory.define :cloud_account do |ca|
+ ca.sequence(:username) { |n| "user#{n}" }
+ ca.password 'asdf'
+ ca.provider_id 1
+end
+
+Factory.define :mock_cloud_account, :parent => :cloud_account do |ca|
+ ca.username 'John Doe'
+end
diff --git a/src/spec/models/cloud_account_spec.rb
b/src/spec/models/cloud_account_spec.rb
new file mode 100644
index 0000000..cc205d3
--- /dev/null
+++ b/src/spec/models/cloud_account_spec.rb
@@ -0,0 +1,76 @@
+require 'spec_helper'
+
+describe CloudAccount do
+
+ before(:each) do
+ @cloud_account = Factory.build :mock_cloud_account
+ @client = mock('DeltaCloud', :null_object => true)
+ @cloud_account.stub!(:connect).and_return(@client)
+ end
+
+ it "should require a provider to be set" do
+ @cloud_account.provider_id = nil
+ @cloud_account.should_not be_valid
+
+ @cloud_account.provider_id = 1
+ @cloud_account.should be_valid
+ end
+
+ it "should have a unique username" do
+ @cloud_account.save!
+ cloud_account2 = Factory.build :cloud_account
+ cloud_account2.username = @cloud_account.username
+ cloud_account2.should_not be_valid
+
+ cloud_account2.username = 'unique username'
+ cloud_account2.should be_valid
+ end
+
+ it "should require a password to be set" do
+ [nil, ''].each do |invalid_value|
+ @cloud_account.password = invalid_value
+ @cloud_account.should_not be_valid
+ end
+
+ @cloud_account.password = "2CufFHQjoBL5fKDW9R"
+ @cloud_account.should be_valid
+ end
+
+ it "should log connection errors" do
+ cloud_account = Factory.build :cloud_account
+ cloud_account.provider = Provider.new(:url =>
'http://invalid.provider/url')
+ logger = mock('Logger', :null_object => true)
+ cloud_account.stub!(:logger).and_return(logger)
+
+ logger.should_receive(:error).twice
+ cloud_account.connect.should be_nil
+ end
+
+ it "should create new account if it doesn't exist yet" do
+ account = @cloud_account.attributes
+ CloudAccount.find_by_username_and_provider_id(
+ account["username"], account["provider_id"]).should be_nil
+
+
+ ca1 = CloudAccount.find_or_create(account)
+ ca1.should_not be_nil
+
+ ca1.save!
+
+ ca2 = CloudAccount.find_or_create(account)
+ ca2.should_not be_nil
+ ca2.should == ca1
+ end
+
+ it "should provide the correct name" do
+ @cloud_account.name.should eql('John Doe')
+ end
+
+ it "should provide correct account prefix for realm" do
+ @cloud_account.provider = Provider.new(:name => "PerfectProvider(tm)")
+ @cloud_account.account_prefix_for_realm.should \
+ eql("PerfectProvider(tm):John Doe")
+ end
+
+
+end
--
1.6.6.1
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel