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

Reply via email to