add section restriction to enrollments in courses API

test plan:
* accessing /api/v1/courses
 should add "limit_privileges_to_course_section" to
 the included enrollments

closes #LA-244

Change-Id: I6ebd2fea27c08acd870a802bf124498f5649d5e0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/217319
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
This commit is contained in:
James Williams 2019-11-14 14:00:15 -07:00
parent 0e5feac8ec
commit 13fea28fa4
4 changed files with 31 additions and 12 deletions

View File

@ -156,7 +156,8 @@ module Api::V1
:role => enrollment.role.name,
:role_id => enrollment.role.id,
:user_id => enrollment.user_id,
:enrollment_state => enrollment.workflow_state
:enrollment_state => enrollment.workflow_state,
:limit_privileges_to_course_section => enrollment.limit_privileges_to_course_section
}
end

View File

@ -154,7 +154,8 @@ describe "API Authentication", type: :request do
expect(response).to be_successful
json = JSON.parse(response.body)
expect(json.size).to eq 1
expect(json.first['enrollments']).to eq [{'type' => 'teacher', 'role' => 'TeacherEnrollment', 'role_id' => teacher_role.id, 'user_id' => @user.id, 'enrollment_state' => 'invited'}]
expect(json.first['enrollments']).to eq [{'type' => 'teacher', 'role' => 'TeacherEnrollment', 'role_id' => teacher_role.id,
'user_id' => @user.id, 'enrollment_state' => 'invited', 'limit_privileges_to_course_section' => false}]
expect(AccessToken.authenticate(token)).to eq AccessToken.last
expect(AccessToken.last.purpose).to eq 'fun'
@ -422,7 +423,8 @@ describe "API Authentication", type: :request do
expect(response).to be_successful
json = JSON.parse(response.body)
expect(json.size).to eq 1
expect(json.first['enrollments']).to eq [{'type' => 'teacher', 'role' => 'TeacherEnrollment', 'role_id' => teacher_role.id, 'user_id' => @user.id, 'enrollment_state' => 'invited'}]
expect(json.first['enrollments']).to eq [{'type' => 'teacher', 'role' => 'TeacherEnrollment', 'role_id' => teacher_role.id,
'user_id' => @user.id, 'enrollment_state' => 'invited', 'limit_privileges_to_course_section' => false}]
expect(AccessToken.last).to eq AccessToken.authenticate(token)
end
end

View File

@ -167,10 +167,11 @@ describe Api::V1::Course do
"role_id" => student_role.id,
"user_id" => @me.id,
"enrollment_state" => "active",
"limit_privileges_to_course_section" => false,
"computed_current_score" => 95.0,
"computed_final_score" => 85.0,
"computed_current_grade" => "A",
"computed_final_grade" => "B"
"computed_final_grade" => "B",
}
end
@ -252,6 +253,7 @@ describe Api::V1::Course do
"role_id" => student_role.id,
"user_id" => @student.id,
"enrollment_state" => "active",
"limit_privileges_to_course_section" => false,
"computed_current_score" => 45.0,
"computed_final_score" => 30.0,
"computed_current_grade" => "F",
@ -468,18 +470,21 @@ describe CoursesController, type: :request do
"role_id" => @assigned_observer_enrollment.role.id,
"user_id" => @assigned_observer_enrollment.user_id,
"enrollment_state" => "active",
"limit_privileges_to_course_section" => false,
"associated_user_id" => @observed_student.id
}, {
"type" => "observer",
"role" => @observer_enrollment.role.name,
"role_id" => @observer_enrollment.role.id,
"user_id" => @observer_enrollment.user_id,
"limit_privileges_to_course_section" => false,
"enrollment_state" => "active"
}, {
"type" => "student",
"role" => @student_enrollment.role.name,
"role_id" => @student_enrollment.role.id,
"user_id" => @student_enrollment.user_id,
"limit_privileges_to_course_section" => false,
"enrollment_state" => "active"
}]
end
@ -498,19 +503,22 @@ describe CoursesController, type: :request do
"role_id" => @assigned_observer_enrollment.role.id,
"user_id" => @assigned_observer_enrollment.user_id,
"enrollment_state" => "active",
"limit_privileges_to_course_section" => false,
"associated_user_id" => @observed_student.id
}, {
"type" => "observer",
"role" => @observer_enrollment.role.name,
"role_id" => @observer_enrollment.role.id,
"user_id" => @observer_enrollment.user_id,
"enrollment_state" => "active"
"enrollment_state" => "active",
"limit_privileges_to_course_section" => false,
}, {
"type" => "student",
"role" => @student_enrollment.role.name,
"role_id" => @student_enrollment.role.id,
"user_id" => @student_enrollment.user_id,
"enrollment_state" => "active"
"enrollment_state" => "active",
"limit_privileges_to_course_section" => false,
}]
end
@ -527,13 +535,15 @@ describe CoursesController, type: :request do
"role_id" => @assigned_observer_enrollment.role.id,
"user_id" => @assigned_observer_enrollment.user_id,
"enrollment_state" => "active",
"limit_privileges_to_course_section" => false,
"associated_user_id" => @observed_student.id
}, {
"type" => "observer",
"role" => @observer_enrollment.role.name,
"role_id" => @observer_enrollment.role.id,
"user_id" => @observer_enrollment.user_id,
"enrollment_state" => "active"
"enrollment_state" => "active",
"limit_privileges_to_course_section" => false,
}]
end
end
@ -2307,7 +2317,8 @@ describe CoursesController, type: :request do
json = api_call(:get, "/api/v1/courses.json?enrollment_role=SuperTeacher",
{ :controller => 'courses', :action => 'index', :format => 'json', :enrollment_role => 'SuperTeacher' })
expect(json.collect{ |c| c['id'].to_i }).to eq [@course3.id]
expect(json[0]['enrollments']).to eq [{ 'type' => 'teacher', 'role' => 'SuperTeacher', 'role_id' => @role.id, 'user_id' => @me.id, 'enrollment_state' => 'invited' }]
expect(json[0]['enrollments']).to eq [{ 'type' => 'teacher', 'role' => 'SuperTeacher', 'role_id' => @role.id,
'user_id' => @me.id, 'enrollment_state' => 'invited', "limit_privileges_to_course_section" => false }]
end
end
@ -2424,7 +2435,8 @@ describe CoursesController, type: :request do
{ :controller => 'courses', :action => 'index', :format => 'json', :enrollment_role => 'SuperTeacher' },
{ :state => ['unpublished'] })
expect(json.collect{ |c| c['id'].to_i }).to eq [@course3.id]
expect(json[0]['enrollments']).to eq [{ 'type' => 'teacher', 'role' => 'SuperTeacher', 'role_id' => @role.id, 'user_id' => @me.id, 'enrollment_state' => 'invited' }]
expect(json[0]['enrollments']).to eq [{ 'type' => 'teacher', 'role' => 'SuperTeacher', 'role_id' => @role.id, 'user_id' => @me.id,
'enrollment_state' => 'invited', "limit_privileges_to_course_section" => false }]
json.collect{ |c| c['workflow_state']}.each do |s|
expect(%w{unpublished}).to include(s)
end
@ -3408,7 +3420,8 @@ describe CoursesController, type: :request do
'account_id' => @course1.account_id,
'root_account_id' => @course1.root_account_id,
'course_code' => @course1.course_code,
'enrollments' => [{'type' => 'teacher', 'role' => 'TeacherEnrollment', 'role_id' => teacher_role.id, 'user_id' => @me.id, 'enrollment_state' => 'active'}],
'enrollments' => [{'type' => 'teacher', 'role' => 'TeacherEnrollment', 'role_id' => teacher_role.id,
'user_id' => @me.id, 'enrollment_state' => 'active', "limit_privileges_to_course_section" => false}],
'grading_standard_id' => nil,
'grade_passback_setting' => nil,
'sis_course_id' => @course1.sis_course_id,

View File

@ -64,19 +64,22 @@ describe "Favorites API", type: :request do
"role_id" => @assigned_observer_enrollment.role.id,
"user_id" => @assigned_observer_enrollment.user_id,
"enrollment_state" => "active",
"limit_privileges_to_course_section" => false,
"associated_user_id" => @observed_student.id
}, {
"type" => "observer",
"role" => @observer_enrollment.role.name,
"role_id" => @observer_enrollment.role.id,
"user_id" => @observer_enrollment.user_id,
"enrollment_state" => "active"
"enrollment_state" => "active",
"limit_privileges_to_course_section" => false,
}, {
"type" => "student",
"role" => @student_enrollment.role.name,
"role_id" => @student_enrollment.role.id,
"user_id" => @student_enrollment.user_id,
"enrollment_state" => "active"
"enrollment_state" => "active",
"limit_privileges_to_course_section" => false,
}]
end
end