add sis user id support to group memberships API

fixes gh-695

test plan:
 * enroll a user with an SIS ID in a group
 * you should be able to use the API to do
   DELETE /api/v1/groups/<group_id>/users/sis_user_id:<sis id>
   (assuming proper permissions)

Change-Id: Idf07a28eabc53fbe604efac8f96b56ed8120ff57
Reviewed-on: https://gerrit.instructure.com/63681
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
This commit is contained in:
Cody Cutrer 2015-09-21 12:05:14 -06:00
parent 92421e6cf8
commit 72d8de6429
2 changed files with 11 additions and 2 deletions

View File

@ -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

View File

@ -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"] }