From fe9c4d7eb156dbddffccc820814b60e70c1c0571 Mon Sep 17 00:00:00 2001 From: Jackson Howe Date: Fri, 1 Apr 2022 12:00:04 -0600 Subject: [PATCH] Don't (sis) import observers into blueprint courses fixes LS-3073 flag = none Test plan: - Create users.csv, courses.csv, and enrollments.csv files to create a user, course, and enroll the user into the course as an observer (or get them from me) - Zip the files and upload them at accounts/id/sis_import - Expect to get this warning - "Observer enrollment for abc not allowed in blueprint course def" - Visit the new course's users page and expect the user to not have been enrolled Change-Id: I51bfefcac73219df21ff0c12a23e3e0a717d451f Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/288739 Tested-by: Service Cloud Jenkins Reviewed-by: Ed Schiebel QA-Review: Robin Kuss Product-Review: Jackson Howe --- lib/sis/enrollment_importer.rb | 4 ++-- spec/lib/sis/csv/enrollment_importer_spec.rb | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/sis/enrollment_importer.rb b/lib/sis/enrollment_importer.rb index f05e6c556ee..6454409e235 100644 --- a/lib/sis/enrollment_importer.rb +++ b/lib/sis/enrollment_importer.rb @@ -247,8 +247,8 @@ module SIS next end - if type == "StudentEnrollment" && MasterCourses::MasterTemplate.is_master_course?(@course) - message = "Student enrollment for \"#{enrollment_info.user_id}\" not allowed in blueprint course \"#{@course.sis_course_id}\"" + if %w[StudentEnrollment ObserverEnrollment].include?(type) && MasterCourses::MasterTemplate.is_master_course?(@course) + message = "#{type == "StudentEnrollment" ? "Student" : "Observer"} enrollment for \"#{enrollment_info.user_id}\" not allowed in blueprint course \"#{@course.sis_course_id}\"" @messages << SisBatch.build_error(enrollment_info.csv, message, sis_batch: @batch, row: enrollment_info.lineno, row_info: enrollment_info.row_info) next end diff --git a/spec/lib/sis/csv/enrollment_importer_spec.rb b/spec/lib/sis/csv/enrollment_importer_spec.rb index 68d5964e3b8..d4af2fd9bb0 100644 --- a/spec/lib/sis/csv/enrollment_importer_spec.rb +++ b/spec/lib/sis/csv/enrollment_importer_spec.rb @@ -1217,4 +1217,19 @@ describe SIS::CSV::EnrollmentImporter do expect(@student.enrollments.size).to eq 0 expect(importer.errors.map(&:last)).to eq ["Student enrollment for \"dee\" not allowed in blueprint course \"blue\""] end + + it "does not enroll observers in blueprint courses" do + course_factory(account: @account, sis_source_id: "blue") + @teacher = user_with_managed_pseudonym(account: @account, sis_user_id: "daba") + @observer = user_with_managed_pseudonym(account: @account, sis_user_id: "dee") + MasterCourses::MasterTemplate.set_as_master_course(@course) + importer = process_csv_data( + "course_id,user_id,role,section_id,status,associated_user_id", + "blue,daba,teacher,,active,", + "blue,dee,observer,,active," + ) + expect(@teacher.enrollments.size).to eq 1 + expect(@observer.enrollments.size).to eq 0 + expect(importer.errors.map(&:last)).to eq ["Observer enrollment for \"dee\" not allowed in blueprint course \"blue\""] + end end