diff options
Diffstat (limited to 'spec/features/groups/members/manage_members_spec.rb')
-rw-r--r-- | spec/features/groups/members/manage_members_spec.rb | 110 |
1 files changed, 82 insertions, 28 deletions
diff --git a/spec/features/groups/members/manage_members_spec.rb b/spec/features/groups/members/manage_members_spec.rb index 3b637a10abe..c5e6479ec51 100644 --- a/spec/features/groups/members/manage_members_spec.rb +++ b/spec/features/groups/members/manage_members_spec.rb @@ -5,13 +5,13 @@ require 'spec_helper' RSpec.describe 'Groups > Members > Manage members' do include Select2Helper include Spec::Support::Helpers::Features::MembersHelpers + include Spec::Support::Helpers::Features::InviteMembersModalHelper let(:user1) { create(:user, name: 'John Doe') } let(:user2) { create(:user, name: 'Mary Jane') } let(:group) { create(:group) } before do - stub_feature_flags(invite_members_group_modal: false) sign_in(user1) end @@ -26,16 +26,28 @@ RSpec.describe 'Groups > Members > Manage members' do end end - context 'when Invite Members modal is enabled' do - before do - stub_feature_flags(invite_members_group_modal: true) + shared_examples 'does not include either invite modal or either invite form' do + it 'does not include either of the invite members or invite group modal buttons' do + expect(page).not_to have_selector '.js-invite-members-modal' + expect(page).not_to have_selector '.js-invite-group-modal' end + it 'does not include either of the invite users or invite group forms' do + expect(page).not_to have_selector '.invite-users-form' + expect(page).not_to have_selector '.invite-group-form' + end + end + + context 'when Invite Members modal is enabled' do it_behaves_like 'includes the correct Invite link', '.js-invite-members-trigger', '.invite-users-form' it_behaves_like 'includes the correct Invite link', '.js-invite-group-trigger', '.invite-group-form' end context 'when Invite Members modal is disabled' do + before do + stub_feature_flags(invite_members_group_modal: false) + end + it_behaves_like 'includes the correct Invite link', '.invite-users-form', '.js-invite-members-trigger' it_behaves_like 'includes the correct Invite link', '.invite-group-form', '.js-invite-group-trigger' end @@ -59,7 +71,7 @@ RSpec.describe 'Groups > Members > Manage members' do visit group_group_members_path(group) - add_user(user2.id, 'Reporter') + invite_member(user2.name, role: 'Reporter') page.within(second_row) do expect(page).to have_content(user2.name) @@ -73,21 +85,46 @@ RSpec.describe 'Groups > Members > Manage members' do visit group_group_members_path(group) - find('.select2-container').click - select_input = find('.select2-input') + click_on 'Invite members' + fill_in 'Select members or type email addresses', with: '@gitlab.com' - select_input.send_keys('@gitlab.com') wait_for_requests expect(page).to have_content('No matches found') - select_input.native.clear - select_input.send_keys('undisclosed_email@gitlab.com') + fill_in 'Select members or type email addresses', with: 'undisclosed_email@gitlab.com' wait_for_requests expect(page).to have_content("Jane 'invisible' Doe") end + context 'when Invite Members modal is disabled' do + before do + stub_feature_flags(invite_members_group_modal: false) + end + + it 'do not disclose email addresses', :js do + group.add_owner(user1) + create(:user, email: 'undisclosed_email@gitlab.com', name: "Jane 'invisible' Doe") + + visit group_group_members_path(group) + + find('.select2-container').click + select_input = find('.select2-input') + + select_input.send_keys('@gitlab.com') + wait_for_requests + + expect(page).to have_content('No matches found') + + select_input.native.clear + select_input.send_keys('undisclosed_email@gitlab.com') + wait_for_requests + + expect(page).to have_content("Jane 'invisible' Doe") + end + end + it 'remove user from group', :js do group.add_owner(user1) group.add_developer(user2) @@ -115,7 +152,7 @@ RSpec.describe 'Groups > Members > Manage members' do visit group_group_members_path(group) - add_user(user1.id, 'Reporter') + invite_member(user1.name, role: 'Reporter') page.within(first_row) do expect(page).to have_content(user1.name) @@ -128,7 +165,7 @@ RSpec.describe 'Groups > Members > Manage members' do visit group_group_members_path(group) - add_user('test@example.com', 'Reporter') + invite_member('test@example.com', role: 'Reporter') expect(page).to have_link 'Invited' click_link 'Invited' @@ -140,29 +177,46 @@ RSpec.describe 'Groups > Members > Manage members' do end end - it 'guest can not manage other users', :js do - group.add_guest(user1) - group.add_developer(user2) + context 'as a guest', :js do + before do + group.add_guest(user1) + group.add_developer(user2) - visit group_group_members_path(group) + visit group_group_members_path(group) + end - expect(page).not_to have_selector '.invite-users-form' - expect(page).not_to have_selector '.invite-group-form' + it_behaves_like 'does not include either invite modal or either invite form' - page.within(second_row) do - # Can not modify user2 role - expect(page).not_to have_button 'Developer' + it 'does not include a button on the members page list to manage or remove the existing member', :js do + page.within(second_row) do + # Can not modify user2 role + expect(page).not_to have_button 'Developer' - # Can not remove user2 - expect(page).not_to have_selector 'button[title="Remove member"]' + # Can not remove user2 + expect(page).not_to have_selector 'button[title="Remove member"]' + end end end - def add_user(id, role) - page.within ".invite-users-form" do - select2(id, from: "#user_ids", multiple: true) - select(role, from: "access_level") - click_button "Invite" + context 'As a guest when the :invite_members_group_modal feature flag is disabled', :js do + before do + stub_feature_flags(invite_members_group_modal: false) + group.add_guest(user1) + group.add_developer(user2) + + visit group_group_members_path(group) + end + + it_behaves_like 'does not include either invite modal or either invite form' + + it 'does not include a button on the members page list to manage or remove the existing member', :js do + page.within(second_row) do + # Can not modify user2 role + expect(page).not_to have_button 'Developer' + + # Can not remove user2 + expect(page).not_to have_selector 'button[title="Remove member"]' + end end end end |