diff --git a/plugins/stoa/lib/stoa_plugin.rb b/plugins/stoa/lib/stoa_plugin.rb index a3180c9..15e95d6 100644 --- a/plugins/stoa/lib/stoa_plugin.rb +++ b/plugins/stoa/lib/stoa_plugin.rb @@ -107,14 +107,14 @@ class StoaPlugin < Noosfero::Plugin def invite_controller_filters [{ :type => 'before_filter', :method_name => 'check_usp_id_existence', - :block => lambda {render_access_denied if profile.usp_id.blank?} }] + :block => lambda {render_access_denied if !user || user.usp_id.blank?} }] end def control_panel_buttons { :title => _('Invite friends'), :icon => 'invite-friends', :url => {:controller => 'invite', - :action => 'select_address_book'} } if !context.profile.usp_id.blank? + :action => 'select_address_book'} } if context.send(:user) && context.send(:user).usp_id.present? end def remove_invite_friends_button diff --git a/plugins/stoa/test/functional/invite_controller_test.rb b/plugins/stoa/test/functional/invite_controller_test.rb index 1f8cc61..dcf8d3e 100644 --- a/plugins/stoa/test/functional/invite_controller_test.rb +++ b/plugins/stoa/test/functional/invite_controller_test.rb @@ -36,5 +36,17 @@ class InviteControllerTest < ActionController::TestCase assert_response 200 end + should 'alow invitation even in organizations' do + person_with_usp_id = User.create!(:login => 'user-with', :email => 'user-with@example.com', :password => 'test', :password_confirmation => 'test', :person_data => {:usp_id => 12345678}).person + organization = fast_create(Organization) + organization.add_admin(person_with_usp_id) + + login_as(person_with_usp_id.identifier) + get :select_address_book, :profile => organization.identifier + assert_response 200 + get :select_friends, :profile => organization.identifier, :contact_list => ContactList.create.id + assert_response 200 + end + end diff --git a/plugins/stoa/test/unit/stoa_plugin_test.rb b/plugins/stoa/test/unit/stoa_plugin_test.rb new file mode 100644 index 0000000..e6aba00 --- /dev/null +++ b/plugins/stoa/test/unit/stoa_plugin_test.rb @@ -0,0 +1,27 @@ +require File.dirname(__FILE__) + '/../../../../test/test_helper' + +class StoaPluginTest < ActiveSupport::TestCase + + def setup + @plugin = StoaPlugin.new + end + + attr_reader :plugin + + should 'display invite control panel button only to users with usp_id' do + person_with_usp_id = fast_create(Person, :usp_id => 99999999) + person_without_usp_id = fast_create(Person) + context = mock() + StoaPlugin.any_instance.stubs(:context).returns(context) + + context.stubs(:user).returns(nil) + assert_nil plugin.control_panel_buttons + + context.stubs(:user).returns(person_without_usp_id) + assert_nil plugin.control_panel_buttons + + context.stubs(:user).returns(person_with_usp_id) + assert_not_nil plugin.control_panel_buttons + end +end + -- libgit2 0.21.2