diff options
Diffstat (limited to 'spec/requests/api/graphql/group/group_members_spec.rb')
-rw-r--r-- | spec/requests/api/graphql/group/group_members_spec.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/spec/requests/api/graphql/group/group_members_spec.rb b/spec/requests/api/graphql/group/group_members_spec.rb index 06afb5b9a49..78852622835 100644 --- a/spec/requests/api/graphql/group/group_members_spec.rb +++ b/spec/requests/api/graphql/group/group_members_spec.rb @@ -53,6 +53,30 @@ RSpec.describe 'getting group members information' do end end + context "when requesting member's notification email" do + context 'when current_user is admin' do + let_it_be(:admin_user) { create(:user, :admin) } + + it 'returns notification email' do + fetch_members_notification_email(current_user: admin_user) + notification_emails = graphql_data_at(:group, :group_members, :edges, :node, :notification_email) + + expect(notification_emails).to all be_present + expect(graphql_errors).to be_nil + end + end + + context 'when current_user is not admin' do + it 'returns an error' do + fetch_members_notification_email + + expect(graphql_errors.first) + .to include('path' => ['group', 'groupMembers', 'edges', 0, 'node', 'notificationEmail'], + 'message' => a_string_including("you don't have permission to perform this action")) + end + end + end + context 'member relations' do let_it_be(:child_group) { create(:group, :public, parent: parent_group) } let_it_be(:grandchild_group) { create(:group, :public, parent: child_group) } @@ -117,6 +141,10 @@ RSpec.describe 'getting group members information' do post_graphql(members_query(group.full_path, args), current_user: current_user) end + def fetch_members_notification_email(group: parent_group, current_user: user) + post_graphql(member_notification_email_query(group.full_path), current_user: current_user) + end + def members_query(group_path, args = {}) members_node = <<~NODE edges { @@ -134,6 +162,24 @@ RSpec.describe 'getting group members information' do ) end + def member_notification_email_query(group_path) + members_node = <<~NODE + edges { + node { + user { + id + } + notificationEmail + } + } + NODE + + graphql_query_for("group", + { full_path: group_path }, + [query_graphql_field("groupMembers", {}, members_node)] + ) + end + def expect_array_response(*items) expect(response).to have_gitlab_http_status(:success) member_gids = graphql_data_at(:group, :group_members, :edges, :node, :user, :id) |