Add sis_id to memberships payload if present

closes PLAT-4891, Plat-4892

Test Plan:
 - with a membership service call see that the sis id is added
  to the payload if it exists
 - see that it also is not added if one does not exist

Change-Id: Ib9723411648b7499a8c60435a522e437646e94de
Reviewed-on: https://gerrit.instructure.com/210816
Tested-by: Jenkins
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Karl Lloyd <karl@instructure.com>
This commit is contained in:
Marc Phillips 2019-09-24 12:53:49 -06:00
parent e482c442c4
commit 1fd92a0ffa
2 changed files with 21 additions and 3 deletions

View File

@ -37,7 +37,7 @@ module Lti
private
def membership_type
User.preload(:communication_channels, :not_ended_enrollments)
User.preload(:communication_channels, :not_ended_enrollments, :pseudonym)
end
def users
@ -53,7 +53,8 @@ module Lti
img: user.avatar_image_url,
email: user.email,
result_sourced_id: nil,
user_id: user_id
user_id: user_id,
sourced_id: user&.pseudonym&.sis_user_id
)
end

View File

@ -145,6 +145,8 @@ module Lti::MembershipService
end
context 'course with multiple users' do
let(:user_sis_id) { "user_sis_id_01" }
before(:each) do
course_with_teacher
@course.enroll_user(@teacher, 'TeacherEnrollment', enrollment_state: 'active')
@ -152,7 +154,9 @@ module Lti::MembershipService
@course.enroll_user(@ta, 'TaEnrollment', enrollment_state: 'active')
@designer = user_model
@course.enroll_user(@designer, 'DesignerEnrollment', enrollment_state: 'active')
@student = user_model
@student = user_with_managed_pseudonym(:active_all => true, :account => @account, :name => "John St. Clair",
:sortable_name => "St. Clair, John", :username => 'john@stclair.com',
:sis_user_id => user_sis_id, integration_id: 'int1')
@course.enroll_user(@student, 'StudentEnrollment', enrollment_state: 'active')
@observer = user_model
@course.enroll_user(@observer, 'ObserverEnrollment', enrollment_state: 'active')
@ -183,6 +187,19 @@ module Lti::MembershipService
expect(student.role).to match_array([IMS::LIS::Roles::Context::URNs::Learner])
expect(observer.role).to match_array([IMS::LIS::Roles::Context::URNs::Learner_NonCreditLearner])
end
it 'adds the sis_id to the payload if present' do
collator = CourseLisPersonCollator.new(@course, @teacher)
memberships = collator.memberships
@teacher.reload
@student.reload
teacher = memberships.find { |m| m.member.user_id == @teacher.lti_context_id }
student = memberships.find { |m| m.member.user_id == @student.lti_context_id }
expect(student.member.sourced_id).to eq user_sis_id
end
end
end