From 040cd20021996567a3d55ebe58267995fee3e560 Mon Sep 17 00:00:00 2001 From: Alvin Garcia Date: Fri, 9 Mar 2012 17:28:32 +0800 Subject: [PATCH] [openstack|identity] Update users collections and model --- lib/fog/openstack/models/identity/user.rb | 2 +- lib/fog/openstack/models/identity/users.rb | 11 +++++++ .../openstack/models/identity/users_tests.rb | 33 +++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 tests/openstack/models/identity/users_tests.rb diff --git a/lib/fog/openstack/models/identity/user.rb b/lib/fog/openstack/models/identity/user.rb index 768987fee..e30440bac 100644 --- a/lib/fog/openstack/models/identity/user.rb +++ b/lib/fog/openstack/models/identity/user.rb @@ -9,7 +9,7 @@ module Fog attribute :email attribute :enabled attribute :name - attribute :tenantId, :aliases => 'tenant_id' + attribute :tenant_id, :aliases => 'tenantId' attribute :password attr_accessor :email, :name, :tenant_id, :enabled, :password diff --git a/lib/fog/openstack/models/identity/users.rb b/lib/fog/openstack/models/identity/users.rb index bcb91a678..c2518d81a 100644 --- a/lib/fog/openstack/models/identity/users.rb +++ b/lib/fog/openstack/models/identity/users.rb @@ -10,6 +10,17 @@ module Fog def all load(connection.list_users.body['users']) end + + def find_by_id(id) + self.find {|user| user.id == id} || + Fog::Identity::OpenStack::User.new( + connection.get_user_by_id(id).body['user']) + end + + def destroy(id) + user = self.find_by_id(id) + user.destroy + end end # class Users end # class OpenStack end # module Identity diff --git a/tests/openstack/models/identity/users_tests.rb b/tests/openstack/models/identity/users_tests.rb new file mode 100644 index 000000000..30d30ebc1 --- /dev/null +++ b/tests/openstack/models/identity/users_tests.rb @@ -0,0 +1,33 @@ +Shindo.tests("Fog::Identity[:openstack] | users", ['openstack']) do + tenant_id = Fog::Identity[:openstack].list_tenants.body['tenants'].first['id'] + @instance = Fog::Identity[:openstack].users.create({ + :name => 'foobar', + :email => 'foo@bar.com', + :tenant_id => tenant_id, + :password => 'spoof', + :enabled => true + }) + + tests('success') do + tests('#find_by_id').succeeds do + user = Fog::Identity[:openstack].users.find_by_id(@instance.id) + user.id == @instance.id + end + + tests('#destroy').succeeds do + Fog::Identity[:openstack].users.destroy(@instance.id) + end + end + + tests('fails') do + pending if Fog.mocking? + + tests('#find_by_id').raises(Fog::Identity::OpenStack::NotFound) do + Fog::Identity[:openstack].users.find_by_id('fake') + end + + tests('#destroy').raises(Fog::Identity::OpenStack::NotFound) do + Fog::Identity[:openstack].users.destroy('fake') + end + end +end