fixes CNVS-35954
just use a two-stage query where we translate to an ID first, so that
we can keep the final output as a relation object
Change-Id: Ia5529e5382ceb8f1104e09f8d0a0c04fef0d9efa
Reviewed-on: https://gerrit.instructure.com/110403
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
Create new Canvadoc plugin setting to enable the hijacking of crocodoc
sessions.
When enabled crocodoc sessions will really go to canvadocs.
Canvadocs still needs to add support for migrating crocodocs from the
raw crocodoc data table.
Test Plan:
Enable the setting.
View an existing crocodoc
You should get an error :D
If you dont want an error I have A PS you can checkout
that returns a fake session id, which you can verify is being used
but it will still result in an error. but on the canvadocs side instead
of the canvas side.
Change-Id: Ie634e3f822ae3f9c453e9fefa70069d43c896d09
Reviewed-on: https://gerrit.instructure.com/108436
Tested-by: Jenkins
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Reviewed-by: Josh Orr <jgorr@instructure.com>
Product-Review: Brad Horrocks <bhorrocks@instructure.com>
since these are not paginated. in the future, we anticipate
potentially replacing this functionality with a course asset
audit stream, which will make it possible to paginate the
migration_details and unsynced_changes endpoints and lift
this limit (and also enable the unsynced change count to be
displayed on the blueprint sidebar as in the original design)
refs MC-177
Change-Id: Iba23680de98cc67739fb9fe0372483faec9d6cf7
Reviewed-on: https://gerrit.instructure.com/110178
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
fixes CNVS-36040
test plan:
- try file uploads against an eu-central-1 and a us-east-1 s3 bucket as
well as local uploads
- try direct-to-s3 uploads (like from the files area), proxied uploads
(add a new file from the add module item dialog), and behind-the-scenes
uploads (like generating a course export or doing a sis import)
- make sure previously uploaded files continue to work
Change-Id: Ifd55cd72e017257e807f26a11a2f0870b7f68957
Reviewed-on: https://gerrit.instructure.com/110446
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
this was fixed in 6012a64ce7, but we need
to clean up old invalid channels to prevent issues with password reset
fixes CNVS-36145
test plan:
- munge the database to get an invalid email address in a communication
channel (doesn't match X@Y.Z)
- run the data fix
- it should delete the invalid channel
Change-Id: I62b72afa478538c4c0b615f555e587bfb4ab9f06
Reviewed-on: https://gerrit.instructure.com/109649
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Tested-by: Jenkins
Product-Review: Simon Williams <simon@instructure.com>
so we still have a deterministic sort for pagination when
multiple users have the same sortable name
fixes CNVS-36604
Change-Id: I75b5eaae782553a80a185660ddb4346dbe79f853
Reviewed-on: https://gerrit.instructure.com/110288
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
fixes MC-164
test plan:
- kind of hard to test because it relies on things in the backend
blowing up..
- one way might be to open up the blueprint sidebar, kill the rails
server, and click the sync button
- note that an alert appears at the top of the screen with a proper
error message
Change-Id: I7a7debfe2252217bc73e79d4ae79b370900553c4
Reviewed-on: https://gerrit.instructure.com/109888
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Tested-by: Jenkins
Product-Review: Felix Milea-Ciobanu <fmileaciobanu@instructure.com>
QA-Review: Felix Milea-Ciobanu <fmileaciobanu@instructure.com>
fixes PLAT-2173
trim() is supported in all major browser versions
We currently add validation on the name and config URL input
fields before the user is allowed to submit the form. We also
flash an alert and stop the form from submitting if the provided
config URL endpoint doesn't resolve to a file path that contains
an XML description/markup of the basic launch link. We now remove
whitespace from all fields for all form types. Whitespace in this
context is all the whitespace characters (space, tab, no-break space, etc.)
and all the line terminator characters (LF, CR, etc.)
test plan:
• Navigate to Settings --> External Apps
• Select | + App | button
• Select the "By URL" Configuration Type
• Add leading or trailing whitespace to the following fields:
• Consumer Key
• Shared Secret
• Config URL
• Submit the form with valid data
• Edit the added tool's config
• Verify no leading or trailing whitespace
Change-Id: I329871734dbb969dafef38b78bec49e044ea3607
Reviewed-on: https://gerrit.instructure.com/110268
Tested-by: Jenkins
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
QA-Review: Weston Dransfield <wdransfield@instructure.com>
Product-Review: August Thornton <august@instructure.com>
adds lock/unlock to files.
To test, will need James' fix for the files api
https://gerrit.instructure.com/#/c/109231/
closes MC-139
test plan:
setup: create master and minion courses.
- in the master course, add a file and lock it,, migrate
> expected: in the minion course it shows up as locked. the gear menu
> only lets the user download
- in the master course, add a folder and put a couple files in it,
migrate
> expected: in the minion course, the folder and files show up as
> unlocked
- in the master course, lock one of the files in the folder, migrate
> expected: in the minion course, the folder is locked. the 1 file is
> locked, the other isn't
- in the master course, unlock the files in the folder, create a
sub-folder, add a file there and lock it
> expected: in the minion course, the top and sub-folders are locked
- navigate to the master course's files
- in devtools console, set ENV.COURSE_ID='xxx'
- click on the lock to lock|unlock a file
> expected: an alert is displayed at the top of the page
- click the details button
> expectd: you are shown details about the error
- wait 10 seconds
> expectd: the alert disappears
Change-Id: I626a7ba50ddfb415d5c8337baa0ce96f87f9842e
Reviewed-on: https://gerrit.instructure.com/109193
Reviewed-by: Felix Milea-Ciobanu <fmileaciobanu@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Tested-by: Jenkins
Product-Review: Kendall Chadwick <kchadwick@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
fixes CNVS-36124
Test Plan:
- Create some appointments in new scheduler (via modal)
- Delete all appointments
- Go to the syllabus page
- Notice that the event isn't showing there
- delete more events from your calenar
- notice nothing breaks
- watch screen cast for more context
Change-Id: Ib992247bf9267889f5a296e36536b23cdc4cc22d
Reviewed-on: https://gerrit.instructure.com/110470
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Chris Ward <cward@instructure.com>
closes CNVS-36109
Test plan
- In new Scheduler, set up an appointment group that
- allows students to see other appointment group students
- As a student, sign up for the appointment group
- As another student, sign up for the appointment group
- Ensure that after you have reserved the appointment
- slot, you can still see the other student that is
- signed up for the slot
Change-Id: I9ecb5782a7cab9f6a5c6c1353bcc1f4e8647cd05
Reviewed-on: https://gerrit.instructure.com/110302
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Christi Wruck
fixes CNVS-35919
also, prefer SIS pseudonyms over non-SIS pseudonyms from any given
account
test plan:
* have a non-SIS pseudonym and a SIS pseudonym on a user
* do an LTI launch
* the LTI tool should get the info from the SIS pseudonym
Change-Id: I60a3c48a32eae94db93b0e72f1f0f6c5b6a5f5c2
Reviewed-on: https://gerrit.instructure.com/107785
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Reviewed-by: Tyler Pickett <tpickett@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Tested-by: Jenkins
Product-Review: Cody Cutrer <cody@instructure.com>
test plan:
* in a new browser/incognito window, try to visit /files
* it should redirect to the login page
closes #CNVS-36611
Change-Id: Ie0d8e7b145e062b8aa9824c6c49c7ae2386f2d64
Reviewed-on: https://gerrit.instructure.com/110352
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
- set up a blueprint course and do an initial sync
- create, update, and delete objects in the blueprint
- before performing another sync, call the unsynced_changes
endpoint and see that your changes are returned
closes MC-172
Change-Id: I6ff383a34b66217199923ed49b0456ff2f5e5be4
Reviewed-on: https://gerrit.instructure.com/110086
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
fixes CNVS-35623
test plan:
* disable redis
* configure MFA; do not remember this computer
* on your profile, there should be a link to MFA backup codes
* follow it; it should show 10 codes
* log out and log back in, using one of those codes
* go back to your backup code list; the one you used should be
crossed out
* log out and log back in, attempting to use the same code;
it should not allow you to
* log in with another code
* make note of one of the unused backup codes
* regenerate your backup codes; it should give you 10 new codes,
all unused
* log out, and attempt to log in with one of the old unused codes;
it should not allow you to
* log in with one of the new backup codes; it should work
* make note of backup codes
* reconfigure MFA
* look at your backup codes again; they should be different
* make note of them again
* disable MFA, and then configure it again
* your backup codes should be different again
Change-Id: I20b1da102ef4cb757c80e1f46e276f88fdfb21b4
Reviewed-on: https://gerrit.instructure.com/21614
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: McCall Smith <mcsmith@instructure.com>
refs CNVS-36115
Test Plan:
1. Review individual view of course with assignment groups
Note: this is just a refactoring change, to prepare for
another upcoming feature change
Change-Id: I2387f4389a6d09451fd00aa9ad73d97605e485c8
Reviewed-on: https://gerrit.instructure.com/109458
Tested-by: Jenkins
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
QA-Review: Shahbaz Javeed <sjaveed@instructure.com>
Product-Review: Christi Wruck
closes CNVS-36430
test plan:
* Create two courses with two students and two assignments each
* Go to Gradezilla for Course 1
* From the Student Name column, change the "Sort by" value so the
rows are sorted in a new way
* Reload the page and observe the rows continue to remain sorted
the way they were before the reload
* Repeat with the "Display as" and "Secondary info" menus in
the Student Name column
* Repeat with sorting on any of the Assignment, Assignment Group
or Total Grade columns
* Go to Gradezilla for Course 2
* Verify the settings for Course 1 do not apply here
* Change any of the above settings for Course 2 and verify they
stick after a reload
* Verify Course 1 settings haven't been changed as a result
* Create a third course, Course 3, with at least two sections
and at least one student in each section.
* Go to Gradezilla and ensure the display is for "All Sections"
* Change the sort order of the Student column to "None" and
verify it remains "None" after a reload
Change-Id: I4d2cf016453d2fb0f774629e5bc848fb452d4032
Reviewed-on: https://gerrit.instructure.com/109412
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Jeremy Neander <jneander@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Christi Wruck
If a score is nil, but the workflow state is graded, we should still
consider it as needing to be graded. This should will clear up an
inconsistency between what one sees in the gradebook and things like
Assignment#needs_grading_count and the canvas dashboard.
fixes CNVS-36581
test plan:
- Have an course with an online entry assignment and a student
- Submit homework as the student
- As a teacher, in the gradebook, grade the student for the assigment
- As a teacher, in the gradebook, set an empty grade for the student
for the assignment
- Confirm on the canvas dashboard that your assignment needs grading
Change-Id: I41ce623f984b91c1e4e286b0f5934421f23b2e86
Reviewed-on: https://gerrit.instructure.com/109963
Tested-by: Jenkins
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Reviewed-by: Matt Taylor <mtaylor@instructure.com>
QA-Review: Trevor Needham <tneedham@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
closes CNVS-36456
Test Plan
1. Enable Grade Export plugin.
2. As a teacher in a course with grades to export,
navigate to Gradezilla.
3. Click the "Actions" menu.
a. Verify "Publish grades to SIS" is a menu item.
b. Click "Publish grades to SIS" menu item.
c. Verify that you are taken to the course
"Grade Publishing" tab.
4. Navigate back to Gradezilla
5. Click the settings cog button.
a. Verify that "Publish grades to SIS" is no
longer an option.
6. Verify that the "Publish grades to SIS" Actions menu
item is keyboard and VO accessible.
Change-Id: I8433a59406756c892dcbce7b77d9eda61daafa47
Reviewed-on: https://gerrit.instructure.com/109400
Tested-by: Jenkins
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Pert Eilers <peilers@instructure.com>
test plan:
- render documentation
- test the "Get migration details" endpoint:
- starting both with a blueprint course and a minion course
- ensure a teacher without rights on the blueprint cannot
call the endpoint on the blueprint (but can still call
on a minion)
- ensure creates, deletes, updates, and exceptions (for
changed minion content) are returned as expected
(exceptions show what type of content changed in the minion
course to prevent the update from being synced:
'content', 'points', 'due_dates', or 'availability_dates')
- ensure when calling on a minion course, only exceptions
for that minion course are returned
- ensure the html_url retrieved links to the copy of the asset
in the course the API endpoint is called on (master or minion)
closes MC-119
Change-Id: I73cf52304b080bbe564779294b53b4991700f0f8
Reviewed-on: https://gerrit.instructure.com/104789
Reviewed-by: James Williams <jamesw@instructure.com>
Tested-by: Jenkins
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
fixes PLAT-2482
Test Plan:
- Do a content item tool launch in Firefox
(i.e. launch a tool from the rce).
- Verify you can focus elements in the tool's iframe
via keyboard navigation in Firefox
- Verify focus loops to top of modal instead of
falling through to page when forward tabbing through
content.
- Verify focus loops to bottom of modal when reverse
tabbing through content.
- Verify all instances of the jquery dialog continue
to work as expected in supported browsers.
Change-Id: Ie832b8e9150f4a67af2386f6b84404b70c06b40c
Reviewed-on: https://gerrit.instructure.com/109748
Tested-by: Jenkins
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
this allows customizing the throttle settings value by updating a JSON
hash in the Setting table: `request_throttle.custom_settings` (see
formatting below)
The Setting value is a hash of client identifiers -> custom settings.
A custom setting is a hash with some subset of the following keys: hwm,
maximum, outflow, up_front_cost. the values of those keys are floats.
For example:
Setting.set(
'request_throttle.custom_settings',
{ 'user:10000000000001' => { 'hwm' => 1000.0 } }.to_json
)
these values will be used instead of the default values for requests
from that specific client_identifier
fixes CNVS-35965
test plan:
- set up a script that hammers the API and gets throttled
- create two users with two tokens
- set maximum and hwm to really high values for one (by user id), and
verify that it is no longer throttled
- repeat, but use the access token as the id
Change-Id: I8a5e393721c7cbd4c754989ba219f92f0e280ee1
Reviewed-on: https://gerrit.instructure.com/105302
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
closes: CNVS-36564
We need to implement some better ux and more info in the new
masquerade workflow. To start we're reverting back to the old
masquerade while we sort through and work on those new features.
Original commit: https://gerrit.instructure.com/#/c/108292/16
Test Plan - Make sure all of these match look/feel of
what's on prod:
- Navigate to the following places where masquerading
occurs
* Courses/People (Selecting 'Masquerade' through Student
Context Tray)
* Courses/People (Selecting User Details from the drop
down menu and selecting 'Masquerade')
* Admin/Users (Select the user then select 'Masquerade')
* Groups/People (Select the user, then select 'User Account
Details' then 'Masquerade')
* Any other obscure locations where you can masquerade
- In each above location, selecting 'Masquerade' will open
a modal with a panda/mask animation
- Within the modal, selecting 'Masquerade' should cause
a loading spinner to appear briefly. Then you should
be taken to the student masquerade view which should
behave as it did before.
Change-Id: Iedecbc7967ae41eceb9375b3c5b1e35787639c09
Reviewed-on: https://gerrit.instructure.com/110070
Tested-by: Jenkins
Reviewed-by: Stephen Jensen <sejensen@instructure.com>
QA-Review: Adrian Russell <arussell@instructure.com>
Product-Review: Chris Hart <chart@instructure.com>
closes CNVS-36401
test plan:
1. Add an indivdual student override for a student on an assignment.
Verify the cached_due_date on the submission is updated to reflect
the override due date (assuming there aren't other overrides for
that user on the assignment that have a more lenient due date).
2. Remove an individual student override for a student on an
assignment. Verify the cached_due_date on the submission is updated
and no longer matches the due date on the override that was removed
for the student.
3. Enroll a student in 2 sections in a course (Section 1 and Section
2). On an assignment, add a section override for Section 1 and an
individual student override for the student. The section override
should have a more lenient due date than the individual student
override. Then remove the student from Section 1. The cached_due_date
on the submission for the assignment should be updated. It should no
longer reflect the due date from the Section 1 override and should
now reflect the due date for the individual student override.
Change-Id: I046eb6a468f61af905d96eb1b2a6e41efebc6b8e
Reviewed-on: https://gerrit.instructure.com/109005
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Tested-by: Jenkins
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
closes: CNVS-33683
Test Plan:
1. Navigate to gradezilla as a teacher and open action menu
- Observe LTI items appear when conditions are met
* current user has permission to publish grades
* LTI with the :post_grades extension is installed
- Observe Plugin item appears when conditions are met
* current user has permission to publish grades
* feature flag is enabled
* course has a sis id
* there is at least one assignment grade to post
- the assignment has sis posting enabled
- the assignment has at least one graded submission
- Observe Plugin item has label 'Sync to SIS'
* label reads 'Sync to {sis_name}' when sis handle is set
- Observe old button/menu placements are now gone
2. Select the new menu items
- Observe the old behavior for that functionality is invoked
- Observe that the expected element is focused
- on open
- on close
Change-Id: I442ae2fcd1e488908c354993a801398e1618fb60
Reviewed-on: https://gerrit.instructure.com/107077
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Christi Wruck
test plan:
- in course settings, under the Blueprint checkbox, default lock
configuration, "content" should be checked by default in a new
course, but it should be uncheckable
closes MC-168
Change-Id: Icf0aa6d031b835446a876f8a77bdcd93b5ecf4df
Reviewed-on: https://gerrit.instructure.com/109673
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
also fix for inactive students
test plan:
* have a course with a concluded student
* as an account admin, view the student's
user page (/users/:id)
* click on the concluded enrollment to view the
user's course-specific page
* the page should load correctly
closes #CNVS-36515
Change-Id: I14210575ba43b45c33819b9e63956085d4871cbc
Reviewed-on: https://gerrit.instructure.com/109834
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
closes PLAT-2546
Test Plan:
- Retrieve a TCP with the submission service and verify
the 'endpoint' value of the service matches the lti/submission
controller routes.
Change-Id: Iebe3954296842cff60193397c445ebf242db9561
Reviewed-on: https://gerrit.instructure.com/109647
Tested-by: Jenkins
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
Closes PLAT-2537
Test Plan
Verify the originality report service's endpoint value
now includes 'api/lti' instead of 'api/v1'
Change-Id: I25e02dcba47e9a99ec721a99a47573a071e07888
Reviewed-on: https://gerrit.instructure.com/109419
Tested-by: Jenkins
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
Fixes: CNVS-36268
Test plan:
- Sync a PowerSchool Agent you have previously synced to Canvas
before
- In your Canvas instance navigate to the SIS Imports page
- Upon the import completing comfirm the warning messages have a
more descriptive message as:
"An existing Canvas user with the SIS ID"
OR
"An existing Canvas user with the Canvas ID"
Change-Id: I3fc86e5d0de77862cfcb0741625c872dd580f882
Reviewed-on: https://gerrit.instructure.com/108368
Tested-by: Jenkins
Reviewed-by: Brad Humphrey <brad@instructure.com>
QA-Review: Mark McDermott <mmcdermott@instructure.com>
Product-Review: Brad Humphrey <brad@instructure.com>
fixes MC-166
test plan:
- master course with locked and unlocked assignments and quizzes plus
associated minion course
- goto minion course assignments|quizzes page
> expect delete to exist in cog of unlocked item, not in locked
> item
- open each item
> expect delete in cog menu of unlocked item, not in locked
(there is no cog menu in assignment show page)
- edit each item
> expect delete in cog menu of unlocked item, not in locked
Change-Id: I3ff963cfc94ef27b24867f45ae44371aa16b0d35
Reviewed-on: https://gerrit.instructure.com/109668
Tested-by: Jenkins
Reviewed-by: Felix Milea-Ciobanu <fmileaciobanu@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Kendall Chadwick <kchadwick@instructure.com>
Fixes PLAT-2483
* Add root_account_lti_guid
* Re-add provider
Test Plan:
- setup multiple root accounts with /c/108963/
- spinup local live-event testing services
- test out live-event spawning processes as a result of a delayed job
- assert that the kinesis stream contains events with attributes
containing `root_account_lti_guid` and `provider`
Change-Id: If8e44924145fb8687a16b189d63ad58528ec901e
Reviewed-on: https://gerrit.instructure.com/108970
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Tested-by: Jenkins
Product-Review: Matthew Wheeler <mwheeler@instructure.com>
closes CNVS-36146
test plan:
- hit the following api endpoint (id is the course id):
- /api/v1/courses/:id/late_policy
with the following verbs:
- GET (show)
- POST (create)
- PATCH (update)
the following valid params for LatePolicy are available:
- missing_submission_deduction_enabled
- missing_submission_deduction
- late_submission_deduction_enabled
- late_submisison_deduction
- late_submission_interval
- late_submission_minimum_percent_enabled
- late_submission_minimum_percent
example set of valid params:
- missing_submission_deduction_enabled: false
- late_submission_deduction_enabled: true
- late_submisison_deduction: '1'
- late_submission_interval: 'hour'
- late_submission_minimum_percent_enabled: true
- late_submission_minimum_percent: '10'
example set of invalid params:
- late_submisison_deduction: '-1'
the user must be a user with manage_grades permissions such as a
teacher enrolled in the course, otherwise the json response will have
an unauthorized message
- refer to the api docs for late_policy for more details
Change-Id: I9e3b2704680cf4b1f9b789deb1dccb2a1ccaa5d5
Reviewed-on: https://gerrit.instructure.com/108989
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
QA-Review: Keith T. Garner <kgarner@instructure.com>