diff --git a/app/controllers/group_memberships_controller.rb b/app/controllers/group_memberships_controller.rb index d0cb8489532..b3082efb0bc 100644 --- a/app/controllers/group_memberships_controller.rb +++ b/app/controllers/group_memberships_controller.rb @@ -225,11 +225,12 @@ class GroupMembershipsController < ApplicationController def find_membership if (params[:membership_id] && params[:membership_id] == 'self') || (params[:user_id] && params[:user_id] == 'self') - @membership = @group.group_memberships.where(:user_id => @current_user).first || not_found + @membership = @group.group_memberships.where(:user_id => @current_user).first! elsif params[:membership_id] @membership = @group.group_memberships.find(params[:membership_id]) else - @membership = @group.group_memberships.where(:user_id => params[:user_id]).first || not_found + user_id = Api.map_ids([params[:user_id]], @group.users, @domain_root_account, @current_user).first + @membership = @group.group_memberships.where(user_id: user_id).first! end end end diff --git a/spec/apis/v1/groups_api_spec.rb b/spec/apis/v1/groups_api_spec.rb index 5077dce2e66..06fcf6ce5f3 100644 --- a/spec/apis/v1/groups_api_spec.rb +++ b/spec/apis/v1/groups_api_spec.rb @@ -678,6 +678,14 @@ describe "Groups API", type: :request do expect(@membership.workflow_state).to eq "deleted" end + it "should allow leaving a group using sis id using users/:user_id endpoint" do + @user = @member + @member.pseudonyms.first.update_attribute(:sis_user_id, 'my_sis_id') + api_call(:delete, "#{@alternate_memberships_path}/sis_user_id:my_sis_id", @memberships_path_options.merge(:group_id => @community.to_param, :user_id => 'sis_user_id:my_sis_id', :action => "destroy")) + @membership = GroupMembership.where(:user_id => @user, :group_id => @community).first + expect(@membership.workflow_state).to eq "deleted" + end + it "should allow a moderator to invite people to a group" do @user = @moderator invitees = { :invitees => ["leonard@example.com", "sheldon@example.com"] }