summaryrefslogtreecommitdiff
path: root/spec/features/groups/members/manage_members_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features/groups/members/manage_members_spec.rb')
-rw-r--r--spec/features/groups/members/manage_members_spec.rb139
1 files changed, 69 insertions, 70 deletions
diff --git a/spec/features/groups/members/manage_members_spec.rb b/spec/features/groups/members/manage_members_spec.rb
index 533d2118b30..468001c3be6 100644
--- a/spec/features/groups/members/manage_members_spec.rb
+++ b/spec/features/groups/members/manage_members_spec.rb
@@ -42,46 +42,6 @@ RSpec.describe 'Groups > Members > Manage members' do
end
end
- it 'add user to group', :js, :snowplow, :aggregate_failures do
- group.add_owner(user1)
-
- visit group_group_members_path(group)
-
- invite_member(user2.name, role: 'Reporter')
-
- page.within(second_row) do
- expect(page).to have_content(user2.name)
- expect(page).to have_button('Reporter')
- end
-
- expect_snowplow_event(
- category: 'Members::CreateService',
- action: 'create_member',
- label: 'group-members-page',
- property: 'existing_user',
- user: user1
- )
- 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)
-
- click_on 'Invite members'
- find('[data-testid="members-token-select-input"]').set('@gitlab.com')
-
- wait_for_requests
-
- expect(page).to have_content('No matches found')
-
- find('[data-testid="members-token-select-input"]').set('undisclosed_email@gitlab.com')
- wait_for_requests
-
- expect(page).to have_content('Invite "undisclosed_email@gitlab.com" by email')
- end
-
it 'remove user from group', :js do
group.add_owner(user1)
group.add_developer(user2)
@@ -106,43 +66,29 @@ RSpec.describe 'Groups > Members > Manage members' do
end
end
- it 'add yourself to group when already an owner', :js, :aggregate_failures do
- group.add_owner(user1)
-
- visit group_group_members_path(group)
-
- invite_member(user1.name, role: 'Reporter')
-
- page.within(first_row) do
- expect(page).to have_content(user1.name)
- expect(page).to have_content('Owner')
- end
- end
+ context 'when inviting' do
+ it 'add yourself to group when already an owner', :js do
+ group.add_owner(user1)
- it 'invite user to group', :js, :snowplow do
- group.add_owner(user1)
+ visit group_group_members_path(group)
- visit group_group_members_path(group)
+ invite_member(user1.name, role: 'Reporter', refresh: false)
- invite_member('test@example.com', role: 'Reporter')
+ expect(page).to have_selector(invite_modal_selector)
+ expect(page).to have_content("not authorized to update member")
- expect(page).to have_link 'Invited'
- click_link 'Invited'
+ page.refresh
- aggregate_failures do
- page.within(members_table) do
- expect(page).to have_content('test@example.com')
- expect(page).to have_content('Invited')
- expect(page).to have_button('Reporter')
+ page.within find_member_row(user1) do
+ expect(page).to have_content('Owner')
end
+ end
- expect_snowplow_event(
- category: 'Members::InviteService',
- action: 'create_member',
- label: 'group-members-page',
- property: 'net_new_user',
- user: user1
- )
+ it_behaves_like 'inviting members', 'group-members-page' do
+ let_it_be(:entity) { group }
+ let_it_be(:members_page_path) { group_group_members_path(entity) }
+ let_it_be(:subentity) { create(:group, parent: group) }
+ let_it_be(:subentity_members_page_path) { group_group_members_path(subentity) }
end
end
@@ -169,4 +115,57 @@ RSpec.describe 'Groups > Members > Manage members' do
end
end
end
+
+ describe 'member search results', :js do
+ before do
+ group.add_owner(user1)
+ end
+
+ it 'does not disclose email addresses' do
+ create(:user, email: 'undisclosed_email@gitlab.com', name: "Jane 'invisible' Doe")
+
+ visit group_group_members_path(group)
+
+ click_on 'Invite members'
+ find(member_dropdown_selector).set('@gitlab.com')
+
+ wait_for_requests
+
+ expect(page).to have_content('No matches found')
+
+ find(member_dropdown_selector).set('undisclosed_email@gitlab.com')
+ wait_for_requests
+
+ expect(page).to have_content('Invite "undisclosed_email@gitlab.com" by email')
+ end
+
+ it 'does not show project_bots', :aggregate_failures do
+ internal_project_bot = create(:user, :project_bot, name: '_internal_project_bot_')
+ project = create(:project, group: group)
+ project.add_maintainer(internal_project_bot)
+
+ external_group = create(:group)
+ external_project_bot = create(:user, :project_bot, name: '_external_project_bot_')
+ external_project = create(:project, group: external_group)
+ external_project.add_maintainer(external_project_bot)
+ external_project.add_maintainer(user1)
+
+ visit group_group_members_path(group)
+
+ click_on 'Invite members'
+
+ page.within invite_modal_selector do
+ field = find(member_dropdown_selector)
+ field.native.send_keys :tab
+ field.click
+
+ wait_for_requests
+
+ expect(page).to have_content(user1.name)
+ expect(page).to have_content(user2.name)
+ expect(page).not_to have_content(internal_project_bot.name)
+ expect(page).not_to have_content(external_project_bot.name)
+ end
+ end
+ end
end