On 11/24/2010 11:25 AM, lmartinc@redhat.com wrote:
From: Ladislav Martinciklmartinc@redhat.com
- Fixing validations for User with maximum allowing blank
- Merged 2 spec files for registration service to one file
- Turned fixtures on again for now to have all permissions loaded
src/app/models/user.rb | 1 - src/spec/controllers/users_controller_spec.rb | 6 ++- src/spec/models/registration_service_spec.rb | 64 ------------------------ src/spec/services/registration_service_spec.rb | 37 ++++++++++++++ src/spec/spec_helper.rb | 2 +- 5 files changed, 42 insertions(+), 68 deletions(-) delete mode 100644 src/spec/models/registration_service_spec.rb
diff --git a/src/app/models/user.rb b/src/app/models/user.rb index 0332095..7942ae4 100644 --- a/src/app/models/user.rb +++ b/src/app/models/user.rb @@ -31,7 +31,6 @@ class User< ActiveRecord::Base validates_length_of :first_name, :maximum => 255, :allow_blank => true validates_length_of :last_name, :maximum => 255, :allow_blank => true
- # authlogic's password confirmation doesn't fire up when we fill in the # confirmation field but leave the password field blank. We have to check # that manually:
diff --git a/src/spec/controllers/users_controller_spec.rb b/src/spec/controllers/users_controller_spec.rb index eedb0b3..c1fad30 100644 --- a/src/spec/controllers/users_controller_spec.rb +++ b/src/spec/controllers/users_controller_spec.rb @@ -3,10 +3,12 @@ require 'spec_helper' describe UsersController do
before(:each) do
- Factory(:base_permission_object)
- unless BasePermissionObject.find_by_name(BasePermissionObject::GENERAL_PERMISSION_SCOPE)
Factory(:base_permission_object)
- end @tuser = Factory :tuser @admin_permission = Factory :admin_permission
- @admin_permission.role.privileges<< Privilege.new(:name => 'user_modify')
- @admin_permission.role.privileges<< Privilege.find_by_name('user_modify') @admin = @admin_permission.user Factory.create(:default_quota_metadata) Factory.create(:default_role_metadata)
diff --git a/src/spec/models/registration_service_spec.rb b/src/spec/models/registration_service_spec.rb deleted file mode 100644 index 2a97d11..0000000 --- a/src/spec/models/registration_service_spec.rb +++ /dev/null @@ -1,64 +0,0 @@ -require 'spec_helper'
-describe RegistrationService do
- fixtures :all
- before(:each) do
- @tuser = Factory :tuser
- end
- it "should initialize a new instance given valid attributes" do
- RegistrationService.new(@tuser)
- end
- describe "#save" do
- context "adding valid user with no errors" do
it "should create user, pool and self-service permission" do
user = User.new({:login => 'gooduser',
:email => 'guser@example.com',
:password => 'password',
:password_confirmation => 'password'})
r = RegistrationService.new(user)
end
- end
- context "save fails" do
it "should return errors on user when user is missing required field" do
user = User.new(:login => 'baduser')
r = RegistrationService.new(user)
r.save.should be_false
user.errors.empty?.should be_false
user.errors.find_all {|attr,msg|
["email", "password", "password_confirmation"].include?(attr).should be_true
- }
end
it "should return pool errors if pool create fails" do
#TODO: implement this test. We should check this, but not sure of best
# way right now.
end
- end
- end
- it "should register a user with default pool/quota/role when default settings set" do
- @user = Factory :user
- @pool = Factory(:pool, :name => "default_pool")
- @role = Role.find_by_name("Instance Creator and User")
- @quota = Factory :quota
- MetadataObject.set("allow_self_service_logins", "true")
- MetadataObject.set("self_service_default_pool", @pool)
- MetadataObject.set("self_service_default_role", @role)
- MetadataObject.set("self_service_default_quota", @quota)
- @registration_service = RegistrationService.new(@user)
- @registration_service.save
- @pools = Pool.list_for_user(@user, Privilege::INSTANCE_VIEW)
- @pools.size.should == 1
- @pools[0].name.should == "default_pool"
- @user.quota.maximum_running_instances.should == @quota.maximum_running_instances
- @user.quota.maximum_total_instances.should == @quota.maximum_total_instances
- end
-end diff --git a/src/spec/services/registration_service_spec.rb b/src/spec/services/registration_service_spec.rb index 7b26c63..41f6764 100644 --- a/src/spec/services/registration_service_spec.rb +++ b/src/spec/services/registration_service_spec.rb @@ -8,6 +8,43 @@ describe RegistrationService do Factory.create(:default_pool_metadata) end
describe "with validations" do
it "should return errors on user when user is missing required fields" do
user = User.new(:login => 'baduser')
r = RegistrationService.new(user)
r.save.should be_false
user.errors.empty?.should be_false
user.errors.find_all do |attr,msg|
["email","password","password_confirmation"].include?(attr).should be_true
end
end
it "should register a user with default pool/quota/role when default settings set" do
@user = Factory :user
@pool = Factory(:pool, :name => "default_pool")
privilege = Privilege.find_by_name('instance_view')
@role = Factory(:role, :privileges => [privilege])
@quota = Factory :quota
MetadataObject.set("allow_self_service_logins", "true")
MetadataObject.set("self_service_default_pool", @pool)
MetadataObject.set("self_service_default_role", @role)
MetadataObject.set("self_service_default_quota", @quota)
@registration_service = RegistrationService.new(@user)
@registration_service.save
@pools = Pool.list_for_user(@user, Privilege::INSTANCE_VIEW)
@pools.length.should == 1
@pools[0].name.should == "default_pool"
@user.quota.maximum_running_instances.should == @quota.maximum_running_instances
@user.quota.maximum_total_instances.should == @quota.maximum_total_instances
end
end
describe "with quota" do
it "passed via nested attributes to user model" do
diff --git a/src/spec/spec_helper.rb b/src/spec/spec_helper.rb index 12727d8..f7db6ee 100644 --- a/src/spec/spec_helper.rb +++ b/src/spec/spec_helper.rb @@ -19,7 +19,7 @@ Spec::Runner.configure do |config| # If you're not using ActiveRecord you should remove these # lines, delete config/database.yml and disable :active_record # in your config/boot.rb
- config.use_transactional_fixtures = false
- config.use_transactional_fixtures = true config.use_instantiated_fixtures = false config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
ACK