flag=granular_permissions_manage_course_content
fixes VICE-3285
Since the permission explainer test specifically specifies
that announcement locking and deleting should really
affect announcements locking and deleting,
we should make it so
this fix will also work with the manage course content
combined permission
test plan:
- turn on the
granular_permissions_manage_course_content feature flag
verify the following in the course announcements index:
- the delete row item menu option only shows for roles with
the manage_course_content_delete permission
- the lock/allow row item menu option only shows for roles with
the manage_course_content_edit permission
- if user has neither of these 2 permissions, the
announcement rows do not show a checkbox, and does
not show a manage menu
Change-Id: Ia4b2eee6461b6a85ae71a8b8e5af15586b7aad23
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310593
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Jason Gillett <jason.gillett@instructure.com>
refs AE-124
When running pre-deploy migrations that add a new column, if an application server loads the schema on a shard where the migration has already run, and tries to run queries on a shard where the migration has not already run, it can lead to errors. Fix this by allowing ignored_columns to append to its value dynamically through Consul.
Change-Id: I3b13e0fd2ac066e1439d3d314d71f2ebd8938e0c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310561
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
when a new quiz has multiple submissions and a teacher sets the grade
of a submission to nil, the teacher will no longer be able to see that
submission version in speedgrader or individual gradebook. this change
will now show nil submissions only when the workflow_state is "graded"
fixes EVAL-2136
flag=none
test plan:
- as teacher, create an auto graded new quiz and allow multiple
submissions
- as student, take the quiz multiple times
- as teacher, go to gradebook and mark the grade for the new quiz
to empty
- as teacher, go to speedgrader and verify that you can still see
all the submissions
Change-Id: Ib9c4a8668c7c24d63357afba4d7b3b2942e21c82
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309194
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Cameron Ray <cameron.ray@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
QA-Review: Cameron Ray <cameron.ray@instructure.com>
Product-Review: Jody Sailor
fixes VICE-3181
flag = none
description:
the cmp.root_account_ids are tied to the convo.root_account_ids.
if the convo.root_account_ids are updated
then the cmp.convo.root_account_ids will be set.
However, they are not set on create, this is what this ticket addresses.
Test Plan:
1. the specs are straightforward.
2. Create a message with Conversation.
3. Use rails console and see cmp.root_account_ids are:
a. match convo.root_account_ids. (most important)
b. not nil
Change-Id: I481849db52c991cf260bf519310ba2111c7a8058
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310604
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
when changing an assignment between published and unpublished, the
content participation counts should also be updated. this change also
verifies that deleting/restoring an assignment then publishing the
assignment should also update badge count.
fixes EVAL-2850
flag=visibility_feedback_student_grades_page
flag=assignments_2_student
test plan:
- as teacher, create an assignment and publish
- as teacher, grade assignment for a student
- as student, reload the home tab and check that the badge count on the
grades tab is set to 1
- as teacher, unpublish the assignment
- as student, reload the home tab and check that the badge count on the
grades tab is now set to 0 (not there)
- as teacher, publish assignment again
- as student, view badge count on grades tab. it should be set to 1
- as teacher, delete assignment
- as student, view the badge count on grades tab. it should be set to 0
- as teacher, restore assignment from
canvas.docker/courses/{id}/undelete
- as teacher, publish assignment again
- as student, view the badge count on grades tab. it should be 1 again
Change-Id: I26fc1ca24139e1c64b4ae6a46bb74bfffe84523e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309377
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
Reviewed-by: Cameron Ray <cameron.ray@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Jody Sailor
flag=react_discussions_post
fixes VICE-3324
test plan:
- create a group discussion assigned to more than 10 groups
(this way you have 1, 2, ...10. 11)
- visit the discussion
- click on the group switcher icon button on the top left
- verify groups list is sorted as 1, 10, 11, ... 2, and so on
Change-Id: I107ed738483c5351e4cae00bb878089ee71f6986
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310361
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Omar Soto-Fortuño <omar.soto@instructure.com>
flag=none
Refs EVAL-2874
test plan:
- As a student attempt an assignment multiple times
- As a teacher add different comments to each of those attempts
- Make an API request
- http://canvas.docker//api/v1/courses/:course_id/assignments/:assignment_id/submissions/:submission_id?include[]=submission_comments
- Note that the comments array should include the correct attempt number
Change-Id: Ib91c37191fd1c63e121102e509ff5889961a4348
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310127
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Derek Williams <derek.williams@instructure.com>
Reviewed-by: Christopher Soto <christopher.soto@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Cameron Ray <cameron.ray@instructure.com>
test plan:
- with a local or S3 (not InstFS) file, opened in Rails console
with .open(integrity_check: true)
- should work if the md5 is present and correct
- should raise a CorruptedDownload if the md5 is incorrect
- should work if the md5 is missing
flag=none
closes gh-2147
closes FOO-3360
Change-Id: Ibe1c65af8f618343cdc399217c30d15bb1f53ca9
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310294
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
if the destination user doesn't have any enrollments or
account memberships or an LTI context id (as is the case
in consortium home_account moves), move the lti_context_id,
lti_id, and uuid to the new user record. this way new
enrollments and global nav launches will continue to use
the previous LTI IDs, and the calendar feed will continue
to work
test plan:
- have an auto-merge consortium set up
- have a user enrolled in courses in two separate shards
(course A in Account A and course B in Account B)
with an LTI tool that can be launched in course context
or global nav
- use a SIS import with home_account=true to move the user
to a different shard in the consortium
- ensure when the tool is launched from any of course A,
course B, Account A, or Account B, the student's
original lti_context_id is supplied to the LTI tool
- probably repeat the above with an LTI 1.3 tool,
which uses a separate ID column
- splitting the merged users should move the ids back
where they came from
(this reverts 5695313027)
[pin-commit-multiple_root_accounts=0310a2265dde906935c99642d26e72bada1ea573]
flag=none
refs FOO-3153
closes FOO-3355
Change-Id: I7d1e61faf2498aff4fc5820609d54050ee1a31de
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310292
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
The `title` field is optional, so we should have
at least one test that does not have a `title` on the
content_item object.
We may need to do more of this in the future,
so I added a function that spits out a default content_item,
which you can add optionally add fields to.
test plan:
- specs pass
fixes INTEROP-7937
Change-Id: I4d5cd6447783d987b7126416ee514e49a00e1209
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310069
Reviewed-by: Steve Mcgee <steve.mcgee@instructure.com>
QA-Review: Steve Mcgee <steve.mcgee@instructure.com>
Product-Review: Tucker Mcknight <tmcknight@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
flag=react_discussions_post
fixes VICE-3308
notification message url now has both
- #entry for old discussions
and
- ?entry_id for new discussions
also fixed all html emails
to make use of footer link
instead of displaying the
raw url, we should only
display the raw url on the plain
text version of the email
test plan:
- mention someone in a reply
- as an admin, view /users/id/messages of
the person mentioned
- click on the footer link
"Click here to join the conversation"
- verify that on the discussion page,
you are taken to the highlighted entry in focus
- report a reply as offensive
- as an admin, view a teacher's /messages page
- click on the footer link of the reported
reply notification message
- verify that on the discussion page,
the reported entry is highlighted and
visible
- repeat for new announcement replies and new discussion replies
(you don't really have to. i strengthened the notification tests.)
Change-Id: I30597d602186ac8c14422773695797b5683e1373
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310174
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Jason Gillett <jason.gillett@instructure.com>
Use the right context id for filtering student enrollments
closes LS-3691
flag= course_paces_redesign
test plan
- Go to the course pacing page
- Select the Student tab
- Publish a student pace
- Expect the pace contexts table to reflect the updates in the
student pace
Change-Id: Id1475e1cf9347a8ae877b167e7823c88f36e665a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310272
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Robin Kuss <rkuss@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Jonathan Guardado <jonathan.guardado@instructure.com>
This reverts commit 069987a056.
Reason for revert: this prevents teachers from editing any course settings in an account where prevent_course_availability_editing_by_teachers is enabled.
Change-Id: Idd042af11f175981a3e5c3d51c0e840e71abc6ed
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/308988
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
QA-Review: Eric Saupe <eric.saupe@instructure.com>
Product-Review: Jackson Howe <jackson.howe@instructure.com>
This reverts commit 26007bda68.
Reason for revert: deadlocks detected during SIS imports
Change-Id: Ic8f6fa693496654957c5cb6993393855321212d5
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/308986
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
closes EVAL-2822
flag=proxy_file_uploads
test plan:
- turn on proxy_file_uploads siteAdmin FF
- grant Teachers permission with proxy_assignment_submission
- create an assigment on a course with file_upload submissions
- as a teacher, navigate individual gradebook
- select the student and the newly created assignment
- notice 'Submit for Student' button
- upload a file and see that it saves to the student's folder
- click 'submit' to save the submission
- after success, ensure the text above the grade input now reads
"Submitted by <proxy> on <submitted_at datetime>"
Change-Id: I71422add6328ecaf8d15567244547f66d6e67a65
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309148
Reviewed-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Jody Sailor
closes OUT-5374
flag=outcome_alignment_summary
Test plan:
- Enable Improved Outcomes Management FF
- Enable Outcome Alignment Summary FF
- Go to Course > Outcomes and copy course id from URL
- Create an outcome and a rubric and align them
- Create published assignment and align it with the rubric
- Create unpublished classic quiz and align it with the rubric
- Open Devtools -> Network, reload the outcomes page and
copy the outcome id from the graphql respose
- Open in browser canvas.docker/graphiql
- Execute query below replacing the outcome id and
the contextId with previously retrieved values
query MyQuery {
learningOutcome(id: "1") {
alignments(contextId: "2", contextType: "Course") {
title
assignmentContentType
assignmentWorkflowState
}
}
}
- Verify that the outcome alignment to the assignment
returns assignmentWorkflowState "published"
- Verify that the outcome alignment to the classic quiz
returns assignmentWorkflowState "unpublished"
- Verify that the outcome alignment to the rubric
returns assignmentWorkflowState null
Change-Id: I7a3368c0ad6a722431b2e91e4a54286f847a9ebc
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309788
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Dave Wenzlick <david.wenzlick@instructure.com>
QA-Review: Dave Wenzlick <david.wenzlick@instructure.com>
Product-Review: Kyle Rosenbaum <krosenbaum@instructure.com>
Also improves TypeScript coverage of API responses
Test plan:
- In the Gradebook, ensure that the search filters
for both students and assignments are present
- Verify that one can search for students and
assignments by name/title
- Verify this for a course with a large number of
students and assignments
- With enhanced Gradebook filters disabled
- Enable a filter: Click "View", "Filters", then select
a filter
- Verify that the filter UI is visible in the Gradebook
flag=none
Refs EVAL-2612
Refs EVAL-2853
Change-Id: I698477062916fec51348b82935e431b8c321ed28
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309385
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Cameron Ray <cameron.ray@instructure.com>
Product-Review: Cameron Ray <cameron.ray@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
peer reviews for a2 is showing comments by other peer reviewers.
this fix will only show comments by the current_user
fixes EVAL-2832
flag=assignments_2_student
flag=visibility_feedback_student_grades_page
test plan:
- create a peer review assignment
- have 3 students in course
- assign 2 students to peer review the same student
- act as all 3 students and submit for them
- as one of the reviewers, leave a comment on the peer review
- as the other reviewer, navigate to the peer review page. you should
not see any comments besides the ones this user posts
- as this reviewer leave a comment and refresh. verify you only see your
own comment
Change-Id: I0dcfd99c71c9efdba0610cb5ecf4b76fae665bcc
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309605
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Derek Williams <derek.williams@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Jody Sailor
fixes FOO-3156
Change-Id: Ibd93e097544e7b5da082cdcf4429e97c83a24bed
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/304309
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Isaac Moore <isaac.moore@instructure.com>
QA-Review: Jacob Burroughs <jburroughs@instructure.com>
Product-Review: Jacob Burroughs <jburroughs@instructure.com>
Migration-Review: Isaac Moore <isaac.moore@instructure.com>
flag=react_discussions_post
fixes VICE-3306
Test Plan
1. Open a isolated view discussion
2. Open a thread
3. Click reply from the isolatedViewParent
4. verify that the reply is correctly created
4a. the entry should be within the thread.
Change-Id: Ie4686f10ca2badf387274c6c12d545be2883bf2f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310064
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Chawn Neal <chawn.neal@instructure.com>
Reviewed-by: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Caleb Guanzon <cguanzon@instructure.com>
fixes VICE-3309
flag=none
Notes:
The calendar ui seems a bit weird. When you click show
options on calendar event modal, if you set from and to,
then click 'show options', it does some type of submit
conference already.
This solution with safe guard processing bad params.
This does not create an error page for the user.
Test PLan:
1. Should stop the sentry errors in the ticket.
2. go to calendar.
- click on a block to create an event.
- set from and to.
- click more options.
3. Notice server log no longer gets merged error.
4. No error page for user.
Change-Id: Ie4834bbf1c226433b76b80a977a03d1a6209e1f4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309786
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Reviewed-by: Jason Gillett <jason.gillett@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Jason Gillett <jason.gillett@instructure.com>
fixes MAT-1167
flag=none
test plan:
-create any new content using RCE
-add text divided by spaces, ex. test test test
-highlight a word but not the space after it and embed an external link
-save the content
-underline should only be under the highlighted word
-should be no underline after the embedded external link icon
Change-Id: I976e4c626b3b3700778afa85889f66c65ba3f451
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309929
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jake Oeding <jake.oeding@instructure.com>
QA-Review: Jake Oeding <jake.oeding@instructure.com>
Product-Review: Sarah Gerard <sarah.gerard@instructure.com>
fixes LS-3737
flag=none
test plan:
- With enrollments, go to the All Courses page /courses
- Hover over a star to set as favorite
- Verify the tooltip shown includes the course name
- Using the screenreader on the star
- Verify the screenreader includes the course name
- Make the course as a favorite
- Repeat the steps above and verify the unfavorite tooltip and
screenreader text includes the course name
- Verify inactive course stars also include the course name in the
tooltip and screenreader but display a message about the course being
inactive
Change-Id: I5a7539519d811ac9f033c816bca553f239d83e5d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309963
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jonathan Guardado <jonathan.guardado@instructure.com>
QA-Review: Jonathan Guardado <jonathan.guardado@instructure.com>
Product-Review: Eric Saupe <eric.saupe@instructure.com>
Closes QUIZ-10736
flag=none
Test Plan:
- Tail the canvas-live-events kinesis stream locally
- Do a course copy
- Validate the `content_migration_completed` event has a
`resource_map_url` using `canvas.docker` as the domain
- Validate the `source_host` in the attachment matches
this domain as well
- Simulate Canvas beta ENV locally (pair with weston for details)
- Do a course copy
- Validate the `content_migration_completed` event has a
`resource_map_url` that uses the configured beta domain
as the domain in the file url
- Validate the `source_host` in the attachment matches this
domain as well
Change-Id: Ic86b80f0e44d91c75b4fe2b661bad695aa3ab4a4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310021
Reviewed-by: Alex Slaughter <aslaughter@instructure.com>
QA-Review: Alex Slaughter <aslaughter@instructure.com>
Product-Review: Alex Slaughter <aslaughter@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
closes VICE-3283
flag=none
test plan:
- Specs pass
- Go to a course with hundreds of enrollments
- Go to BigBlueButton
- Add a Conference
- Should take little time since adding users is async now.
qa risk: low
Change-Id: I3ab266ecffa8839c5ea287f804d843d00d8f8409
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309630
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
don't bring them back from death when a user
views an embedded version of them
fixes MAT-1193
flag=none
test plan:
-upload a media file (audio or video)
-embed said file in a page/assignment/other rce location
and save
-go to your 'Uploaded Media' folder and delete said file
-go back the the location where you embedded said file,
view it, and make sure you wait until you can play the
audio/video before moving on
>go back to files and ensure that the file wasn't recreated,
i.e. it's not present in your 'Uploaded Media' folder
>go to an RCE, open the media embed tray, and confirm
said file also does not appear in the files available to
embed
Change-Id: Icc061234d2be8b853ed89107146cf161cdab3d28
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309791
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob DeWar <jacob.dewar@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Migration-Review: Jacob Burroughs <jburroughs@instructure.com>
Product-Review: Allison Howell <allison.howell@instructure.com>
the `md5` attribute should store a hex digest and not the Digest
object iself. the latter works after type cast but prevents the
Attachment from being marshaled before reloading, resulting in
"no _dump_data is defined for class Digest::SHA512"
test plan: specs
fixes FOO-3306
Change-Id: I34d540bb6f110cf43d3ab68436277caf0d024db4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309972
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
This should help with NQ issues where the tool launches in mobile but it
doesn't have access to Canvas resources such as images.
generate_session_token requires the endpoint be hit with an API token,
but I think this should be the case for the mobile requests (I don't
know if anyone uses this endpoint without an API token)
As mentioned in the comment, we _might_ be able to simplify LTI 1.1
sessionless launches to just make a session token and then do a normal
launch, like we do for LTI 1.3 tools. I left some additional info in
a JIRA comment.
closes INTEROP-7912
flag=none
Test plan:
- Create a sessionless launch for an LTI 1.1 tool by hitting the API at
/api/v1/accounts/self/external_tools/sessionless_launch?id=123
where 123 is the id of your LTI 1.1 tool.
- In a new incognito window, visit the URL returned
- The tool should launch. Then in the same incognito visit Canvas -- you
should still be logged in.
Change-Id: I7fff6e6e558a93af6659007475e16017951fa50d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309488
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Alexis Nast <alexis.nast@instructure.com>
Reviewed-by: Tucker Mcknight <tmcknight@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
[fsc-timeout=30]
flag=react_inbox
fixes VICE-3318
note:
- moved a ui test to selenium
- to make sure backend processes
correctly
test plan:
- have a course with over 100 students
- and 2 non-students
(i.e. Big Course in the X-Men SIS)
- as a teacher or admin of that course,
compose a message, select All Students in [Course]
- verify that individual checkbox is checked and disabled
- add 2 non-student recipients (maybe a ta or other teacher)
- verify that individual checkbox remains checked and disabled
- remove All Students in [Course] selection
- verify that individual checkbox stays checked but becomes disabled
- Uncheck individual message checkbox
- complete the form and send
- verify a group conversation was created between you, and
the 2 non-students
- now create a new convo,
- this time select All Students in [Course]
- complete the rest of the form, send
- verify that a separate conversation is
created for each student recipient
Change-Id: Ibc83594c48cbee893fdab5461295878c99fe3c7c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309581
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Jason Gillett <jason.gillett@instructure.com>
Reviewed-by: Chawn Neal <chawn.neal@instructure.com>
Product-Review: Chawn Neal <chawn.neal@instructure.com>
refs MAT-1091
flag=none
[fsc-timeout=30]
Test plan
- Specs pass
Change-Id: Iac01fda45b271340fed69c57b9647a1240367171
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309298
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
Product-Review: Mysti Lilla <mysti@instructure.com>
flag= react_inbox
closes VICE-3321
Test Plan
1. Create a conversation with a single message
2. Find the conversation on ruby console
3. Get the conversation message participant for your current user
4. Set the workflow_state to nil
4a. You will need to save it in a way that bypasses validation
4b participant.save(validate: false)
5. Open the conversation again
6. the conversation should load and the page should not crash
Change-Id: I07c8883d605c6b0ef092169950f123b668fbe180
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309679
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Omar Soto-Fortuño <omar.soto@instructure.com>
Product-Review: Omar Soto-Fortuño <omar.soto@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Closes QUIZ-10477
flag=none
New Quiz LTI provisions are already requesting this field with g/307628.
With this migration, the existing provisions will also be adapted.
Test plan:
- check that your Quiz LTI ContextExternalTool
record does not have the canvas_tool_id custom field.
- execute rails db:migrate
- check that your Quiz LTI ContextExternalTool
record HAS the canvas_tool_id custom field
Change-Id: I04c54dcdf5d9730756f67ae9459c5008c9aecfdf
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/308959
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ferenc Marcsó <ferenc.marcso@instructure.com>
QA-Review: Roland Beres <roland.beres@instructure.com>
Product-Review: Roland Beres <roland.beres@instructure.com>
Migration-Review: Aaron Ogata <aogata@instructure.com>
flag=none
fixes VICE-3302
test plan:
- the new specs are strong and follow
the pattern set by previous fixes
to reply_from
- full e2e testing can be done on
an env with working mail processing
- create a convo as a teacher with your
students
- wait for the student to get the convo
email
- as the student, reply to the email
- verify that your reply was added to the convo
- now as the teacher, hard conclude the course
- and then as the student, reply to the email
- verify that your reply did not create
a reply to the convo
other rules to test:
- soft concluded courses will also reject email replies
- section overrides with section restrictions will bypass
rejection
- term role overrides will bypass rejection as long
as dates are not restricted to courses, nor sections
Change-Id: I7e2dbde18c87687861c3cdd48c1553b5df99c8c2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309665
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jason Gillett <jason.gillett@instructure.com>
Product-Review: Jason Gillett <jason.gillett@instructure.com>
QA-Review: Chawn Neal <chawn.neal@instructure.com>
Trigger change events on time inputs before
time data extraction so the data layer is updated
before further usage.
fixes LS-3707
flag = none
Test plan:
- Create a calendar event with a start date before
a DST window
- Edit the event through 'More options' and
update the day to a day inside the DST period
- Notice that the start time is not an hour later
Change-Id: I7274c9e3a9ac52edb51186fa49a8d7d3152f65e1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309579
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jonathan Guardado <jonathan.guardado@instructure.com>
QA-Review: Jonathan Guardado <jonathan.guardado@instructure.com>
Product-Review: Luis Oliveira <luis.oliveira@instructure.com>
fixes MAT-1091
flag=none
Test plan
- Have at least 2 users (preferably 3)
- Create image links as each of the users in HTML
somewhere (creating a new discussion topic
is usually on by default for students, I
think)
- Merge user 1 into 2 and then 2 into 3
- Verify the links still work
- Test this with at least 1 cross-shard merge
and make sure the file links still work
Change-Id: If64b46c79afd8935b155fb20c4310f2f2c98b76c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/308810
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob DeWar <jacob.dewar@instructure.com>
Reviewed-by: Yona Appletree <yona.appletree@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Product-Review: Allison Howell <allison.howell@instructure.com>
This will provide consistency in the IDs for Accounts which can be
accessed on multiple domains. No matter what domain is used to access
Canvas, the AGS ids will always use the domain which is considered the
primary for the account.
closes INTEROP-7813
flag=consistent_ags_ids_based_on_account_principal_domain
Test plan:
- Make sure you have a Canvas account which you can access from multiple
domains. To do this you'll likely need to have MRA setup, and then add
an additional domain in Account Settings -> Canvas Cloud Information,
and setup an additional domain with your proxy
(traefik/dinghy/dory/whatever) as you did when setting up MRA
- Check the following both with the new feature flag
(consistent_ags_ids_based_on_account_principal_domain) off and on.
Hit Canvas on a domain which is the not the account's primary domain.
For each, check that, for the ID/URL in question:
- With the flag off, it should include the domain you're accessing
Canvas on
- With the flag on, it should include the primary domain
1. Launch an LTI 1.3 tool in an assignment context (e.g. create an LTI
1.3 assignment) and check both the "lineitems" and "lineitem"
fields
2. Also check the context_memberships_url (NRPS) from the launch
3. Get an LTI advantage token for your LTI 1.3 tool
(/api/lti/advantage_token?tool_id=123) and GET the
/api/lti/courses/2/line_items endpoint, and check the "id" fields
of the returned results.
4. Post a score to the /courses/123/line_items/456 (etc.) endpoint --
see the example requst from the docs at
https://canvas.instructure.com/doc/api/score.html --
and check the the "progress" URL (under content_items) and the
resultUrl returned.
5. Get the /api/lti/courses/2/line_items/1/results and check the URLs
in the "id" field and the "scoreOf" field.
6. Get the /api/lti/courses/2/names_and_roles endpoint and check the
URL in the "id" field.
Change-Id: I4250323445d00324cf7470b2496683b492dfce27
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309389
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Xander Moffatt <xmoffatt@instructure.com>
QA-Review: Xander Moffatt <xmoffatt@instructure.com>
Product-Review: Alexis Nast <alexis.nast@instructure.com>
closes EVAL-2817
flag=none
Test Plan:
1. Create an assignment in a course with a due date in the previous year.
2. From the assignment index page, click the three vertical dots to expand
the 'Edit' options.
3. Under 'Due' date, use the calendar to select any date in the current
year. Notice that the date in the input includes the current year.
Change-Id: Ib3b7764fc66d392690dabcd3fc6b742a8ac1feac
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309392
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Reviewed-by: Christopher Soto <christopher.soto@instructure.com>
QA-Review: Cameron Ray <cameron.ray@instructure.com>
Product-Review: Jody Sailor
closes EVAL-2838
flag=proxy_file_uploads
test plan:
- as a teacher, submit an assignment on behalf of a student
- ensure that your proxy submission is the only submission from that
student for the given assignment
- navigate to speed grader for that submission
- notice the 'Submitted:' text now contains a timestamp AND the name
of the proxy submitter
Change-Id: I3bc2a27f1f106b5a124709078d573ce34bbcb6c3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309304
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Cameron Ray <cameron.ray@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Jody Sailor
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
test plan:
- have a course with a new quiz
- copy it to another course
- the quizzes_next_quiz_duplicated live event that is dispatched
should include a resource_map_url that points to a file
that looks like
{
"source_course": "203",
"source_host": "pineapple.edu",
"resource_mapping": {
"assignments": { "1": "21", "2": "22" },
"announcements": { ... },
...
}
}
flag=none
refs FOO-3302
Change-Id: I97196bd13c0cb2d95103540526e69e11f5c9c2f7
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309121
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Logan <james.logan@instructure.com>
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
QA-Review: James Logan <james.logan@instructure.com>
Migration-Review: Isaac Moore <isaac.moore@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Adds a datafix that will be manually run after the
"Deprioritize Section Overrides for Nonactive Enrollments"
Site Admin feature flag is enabled. The datafix recalculates
cached_due_date on affected submissions, and resets the
availability cache on affected assignments.
refs EVAL-619
flag=deprioritize_section_overrides_for_nonactive_enrollments
Test Plan:
1. Disable the Site Admin feature flag 'Deprioritize Section
Overrides for Nonactive Enrollments' and clear your redis
cache (redis-cli flushall)
2. Enroll a student in two sections in a course.
3. Create an assignment due for Section 1 a week from today, and for
Section 2 two weeks from today.
4. Conclude or deactivate the student's enrollment in Section 2.
5. Sign in as the student, view the assignment, and notice that it
shows the due date as 2 weeks from today.
6. Enable the 'Deprioritize Section Overrides for Nonactive Enrollments'
feature flag. Ensure the flag is showing as enabled in a rails
console (you may have to wait a bit, sometimes it takes a moment for
the feature flag setting to propogate. Make sure NOT to clear your
cache):
Account.site_admin.feature_enabled?(
:deprioritize_section_overrides_for_nonactive_enrollments
)
=> true
7. As the student, notice the due date is still showing as 2 weeks
from today.
8. In a rails console, run the datafix:
DataFixup::RecalculateSectionOverrideDates.run
9. As the student, notice the due date now shows as 1 week from today.
Change-Id: Ia6a491f14b428fb6b65b56d33878bd0b01539423
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/305406
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Christopher Soto <christopher.soto@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
Reviewed-by: Cameron Ray <cameron.ray@instructure.com>
Reviewed-by: Rosser Schwarz <rschwarz@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Jody Sailor
test plan:
- the "Get asset id mapping" API should include an id mapping
for "module_items"
- and this should work for either course copy or blueprint sync
flag=none
closes FOO-3313
Change-Id: I9ea7d3918ae05ceddc2d90c4e3d952d4527abff2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309299
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Logan <james.logan@instructure.com>
QA-Review: James Logan <james.logan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
closes QUIZ-10691
flag = none
Test Plan:
- Launch canvas with a canvas live events stream set up.
- Tail the live events stream.
- Complete a blueprint sync and check the event body for the
source course uuid.
Change-Id: Idc17b1537c99337495c05b1bd7e4808241893882
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309314
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jorge Arteaga <jorge.arteaga@instructure.com>
QA-Review: Jorge Arteaga <jorge.arteaga@instructure.com>
Product-Review: James Logan <james.logan@instructure.com>
we had a case where a role for a specific account was created and
later deactivated. a new role with identical name was created in
its place, and the old role was attempted to be re-activated.
this violated a uniqueness constraint on [:account_id, :name]
for active roles.
we now guard against re-activating roles when a currently active
role exists in the same context with the same name.
fixes FOO-3315
flag = none
test plan:
• within an account create a custom role
• de-activate that custom role
• create a new role with that same name
• attempt to re-activate the former role
• verify helpful error reponse as to why that action will not
be permitted with an http code 400
Change-Id: I03143696d94210e6379195cb6d42ea8e48891c13
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309457
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
QA-Review: August Thornton <august@instructure.com>
fixes LS-3395
flag=module_publish_menu
test plan:
- Enable the flag
- Go to a modules page
- See the publish icon on the module is now a menu
- Verify all the actions work as expected
- See the publish menu item at the top of the page
- Verify the actions open a modal with differing titles based on the
action
- Verify submitting the form creates a background job that completes and
updates the page accordingly
- Verify the cancel button stops the job and refreshes the page to
reflect the most correct data based on what was run
Change-Id: Idbda6fe7a971cb6c9d6a897aaf2bd42fe950ddd4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/304526
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Robin Kuss <rkuss@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Eric Saupe <eric.saupe@instructure.com>
closes EVAL-2839
flag=assignment_missing_shortcut
Test Plan:
1. Enable the 'Keyboard Shortcut for Missing Assignment' SiteAdmin flag.
2. Go to Gradebook, click on an assignment header, and select 'Set Default
Grade'.
3. Verify that you can enter "MI" (case insensitive) into the input to
mark students as missing.
- If "Overwrite already-entered grades" is not checked, students with
grades and students marked as excused for the assignment will not be
marked as missing.
- If "Overwrite already-entered grades" is checked, all students for
the assignment will be marked as missing.
- If a missing policy is enabled, then ungraded students will be graded
according to the missing policy in addition to being marked as
missing.
Change-Id: I352a991c18bb82567e98bdac74800526ba0c9ec1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309136
Reviewed-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Reviewed-by: Derek Williams <derek.williams@instructure.com>
QA-Review: Cameron Ray <cameron.ray@instructure.com>
Product-Review: Jody Sailor
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>