Commit fbb18e91844763fce1f2107ad1eb76d253bbb4d5

Authored by Leandro Santos
1 parent 82193169

Add is_admin? method to check if a user is a community or enterprise adminsitrator

app/models/organization.rb
... ... @@ -181,4 +181,9 @@ class Organization < Profile
181 181 def allow_invitation_from?(person)
182 182 (followed_by?(person) && self.allow_members_to_invite) || person.has_permission?('invite-members', self)
183 183 end
  184 +
  185 + def is_admin?(user)
  186 + self.admins.where(:id => user.id).exists?
  187 + end
  188 +
184 189 end
... ...
test/unit/community_test.rb
... ... @@ -393,4 +393,30 @@ class CommunityTest < ActiveSupport::TestCase
393 393 assert_not_includes community.activities.map { |a| a.klass.constantize.find(a.id) }, article.activity
394 394 end
395 395  
  396 +
  397 + should 'check if a community admin user is really a community admin' do
  398 + c = fast_create(Community, :name => 'my test profile', :identifier => 'mytestprofile')
  399 + admin = create_user('adminuser').person
  400 + c.add_admin(admin)
  401 +
  402 + assert c.is_admin?(admin)
  403 + end
  404 +
  405 + should 'a member user not be a community admin' do
  406 + c = fast_create(Community, :name => 'my test profile', :identifier => 'mytestprofile')
  407 + admin = create_user('adminuser').person
  408 + c.add_admin(admin)
  409 +
  410 + member = create_user('memberuser').person
  411 + c.add_member(member)
  412 + assert !c.is_admin?(member)
  413 + end
  414 +
  415 + should 'a moderator user not be a community admin' do
  416 + c = fast_create(Community, :name => 'my test profile', :identifier => 'mytestprofile')
  417 + moderator = create_user('moderatoruser').person
  418 + c.add_moderator(moderator)
  419 + assert !c.is_admin?(moderator)
  420 + end
  421 +
396 422 end
... ...
test/unit/enterprise_test.rb
... ... @@ -499,5 +499,30 @@ class EnterpriseTest < ActiveSupport::TestCase
499 499 assert_equal({:profile => enterprise.identifier, :controller => 'catalog'}, enterprise.catalog_url)
500 500 end
501 501  
  502 + should 'check if a community admin user is really a community admin' do
  503 + c = fast_create(Enterprise, :name => 'my test profile', :identifier => 'mytestprofile')
  504 + admin = create_user('adminuser').person
  505 + c.add_admin(admin)
  506 +
  507 + assert c.is_admin?(admin)
  508 + end
  509 +
  510 + should 'a member user not be a community admin' do
  511 + c = fast_create(Enterprise, :name => 'my test profile', :identifier => 'mytestprofile')
  512 + admin = create_user('adminuser').person
  513 + c.add_admin(admin)
  514 +
  515 + member = create_user('memberuser').person
  516 + c.add_member(member)
  517 + assert !c.is_admin?(member)
  518 + end
  519 +
  520 + should 'a moderator user not be a community admin' do
  521 + c = fast_create(Enterprise, :name => 'my test profile', :identifier => 'mytestprofile')
  522 + moderator = create_user('moderatoruser').person
  523 + c.add_moderator(moderator)
  524 + assert !c.is_admin?(moderator)
  525 + end
  526 +
502 527  
503 528 end
... ...
test/unit/organization_test.rb
... ... @@ -452,4 +452,29 @@ class OrganizationTest < ActiveSupport::TestCase
452 452 end
453 453 end
454 454  
  455 + should 'check if a community admin user is really a community admin' do
  456 + c = fast_create(Organization, :name => 'my test profile', :identifier => 'mytestprofile')
  457 + admin = create_user('adminuser').person
  458 + c.add_admin(admin)
  459 +
  460 + assert c.is_admin?(admin)
  461 + end
  462 +
  463 + should 'a member user not be a community admin' do
  464 + c = fast_create(Organization, :name => 'my test profile', :identifier => 'mytestprofile')
  465 + admin = create_user('adminuser').person
  466 + c.add_admin(admin)
  467 +
  468 + member = create_user('memberuser').person
  469 + c.add_member(member)
  470 + assert !c.is_admin?(member)
  471 + end
  472 +
  473 + should 'a moderator user not be a community admin' do
  474 + c = fast_create(Organization, :name => 'my test profile', :identifier => 'mytestprofile')
  475 + moderator = create_user('moderatoruser').person
  476 + c.add_moderator(moderator)
  477 + assert !c.is_admin?(moderator)
  478 + end
  479 +
455 480 end
... ...