Closes QUIZ-3761
Test plan:
- Log in as admin or teacher
- Create an API access token by following the instructions here:
https://community.canvaslms.com/docs/DOC-10806-4214724194
- Make a note of the token
- Create a Quizzes.Next assignment
- Go back to the assignments page
- Click the kebab menu on the assignment and click 'Duplicate'
- Find the id of the new, duplicating assignment. You can do this by
running `Assignment.last.id` in a canvas rails console. Make a note of
this id
- Notify canvas that the assignment has duplicated successfully by
running:
curl -v -XPUT \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"assignment": {"duplicated_successfully": true}}' \
http://canvas.docker/api/v1/courses/<course_id>/assignments/<id>
where <token> is the API access token created earlier, <course_id> is
the id of the course, and <id> is the id of the duplicating assignment
you made a note of earlier.
- Refresh the assignments page
- Check that the assignment is now in the "unpublished" state
- Repeat these steps, but this time with
{"assignment": {"duplicated_successfully": false}}
as the request body
- Refresh the assignments page
- Check that the assignment is now in the "failed_to_duplicate" state
Change-Id: Ief72eb84fc711207bea43c66b866710489235280
Reviewed-on: https://gerrit.instructure.com/147483
Tested-by: Jenkins
Reviewed-by: Jeff Belser <jbelser@instructure.com>
Product-Review: Jeff Belser <jbelser@instructure.com>
refs gh-1273
test plan
- course api include account should work
Change-Id: If4dbd24c70fdb5f9502cd65b031466334b7b9c0d
Reviewed-on: https://gerrit.instructure.com/146762
Tested-by: Jenkins
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
Removes all but the name, workflow_state, and id of the inherited
developer keys. Also addes the developers key that are inherited
to a different tab.
closes PLAT-3244, PLAT-3207, PLAT-3247
Test Plan:
- Go to the Developer Key page for site admin and create a few keys
- One with off, one with on, and one with allow
- Make sure that the feature flag is turned on
- Click the visibility (eye) icon to enable visibility of each
- Go to the developer key page for a root admin
- Note that the inherited tab has the three keys
- If key is on, should be set to on in the inherited tab and can't
change
- If key is off, shoudl be set to off in the inherited tab and can't
change
- If allowed, should be set to allowed and can change
- Change this key in the root page to on or off, refresh, note
that state persists
- Go back to site admin page, change the allow to on or off
- Go back to the root page and note that the state has been
overridden and can't change
- Create a key for the root account and refresh page
- Note that the root account keys are still in the main tab
- Create more than 11 root account keys, refresh page, and note that
it is now paginated
- Click the show more button, all the remaining keys should appear
- Go back to the site admin page, create more than 11 keys
- Go back to the root admin page, click on the inherited tab, and see
that the show more button appears
- Click the show more button; all the keys should appear
- Go back to the site admin page and turn off the visibility of all the
keys
- Go back to the root admin page, click on the inherited tab, and note
that none of the keys are now visible
Change-Id: Ib666cb33636b1582108dcc4a8822c8625c633157
Reviewed-on: https://gerrit.instructure.com/145427
Reviewed-by: Stewie aka Nicholas Stewart <nstewart@instructure.com>
Product-Review: Marc Alan Phillips <mphillips@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
closes MBL-10278
test plan:
- fetch a group discussion from the discussion index & show api endpoints
- the attribute "group_topic_children" should return an array of:
{id: <id>, group_id: <group_id}
Change-Id: Ibf095ae64e2bd906758e6641c49f2766399e2c7f
Reviewed-on: https://gerrit.instructure.com/147207
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Taylor Wilson <twilson@instructure.com>
Product-Review: Gentry Beckmann <gbeckmann@instructure.com>
fixes gh-1273
test plan
- rake doc:api should work
Change-Id: I5dcc154eca68c789395ffe9f0297d04b66821823
Reviewed-on: https://gerrit.instructure.com/146733
Reviewed-by: Spencer Olson <solson@instructure.com>
Tested-by: Jenkins
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
closes RECNVS-404
test plan:
- a request for an attachment which includes `?include[]=instfs_uuid`
returns the instfs_uuid property for the attachment
Change-Id: If2ecaf43807be1a4f1c0489dc30af6e5ef7c4e76
Reviewed-on: https://gerrit.instructure.com/145949
Reviewed-by: Jacob Fugal <jacob@instructure.com>
QA-Review: Collin Parrish <cparrish@instructure.com>
Tested-by: Jenkins
Product-Review: Michael Jasper <mjasper@instructure.com>
test plan:
- enable the "Account Course and User Search" feature
- ensure "See other users' primary email address"
permission is required to find by email address
- ensure "Read SIS data" or "Manage SIS data" is
required to find by SIS ID
- ensure "View login ids for users" is required
to find by login ID
- ensure you can find users by canvas ID and name
in the same search (where one user's name matches
another user's ID)
also:
- ensure students cannot use the include[]=email
option in the "List users in course" API to
retrieve email addresses of other students
(unless granted "See other users' primary
email address" permission)
fixes ADMIN-836
Change-Id: I9c0a1ba9a643632047f42dc010822b6e5035d0d4
Reviewed-on: https://gerrit.instructure.com/143915
Reviewed-by: Mysti Sadler <mysti@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
Tested-by: Jenkins
Closes PLAT-3256
Test Plan:
- Turn off all developer key feature flags.
- Visit the /developer_keys page and
verify no queries for developer key account
bindings occur.
Change-Id: I06b6783f29f227e446346b00a8c5431ccaf6b306
Reviewed-on: https://gerrit.instructure.com/145887
Product-Review: August Thornton <august@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
refs CORE-20
test plan:
- test file upload api with success_include[]=avatar on the preflight
request
- the final response on success should include the avatar property
- test with local storage, s3, and InstFS
Change-Id: I974197944d0f84ad0b89a628ab8604f50cdec45e
Reviewed-on: https://gerrit.instructure.com/144456
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
fixes COMMS-1024
Test Plan
* make sure profiles are off and avatars
* go to a student enrolled in a course
* find the student enrollment on a course
example /courses/11/users/2
* Click more details and add a last attended date to the user
* use the api such as the bottom to get all enrollments for
the course
* curl http://localhost:3000/api/v1/courses/11/enrollments
or do something to get the request.. you can visit the url
with canvas running
* make sure that date you set shows up
Change-Id: Idf3dbd39192f1fe3c6088c8fc45a4112994b3419
Reviewed-on: https://gerrit.instructure.com/145253
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Reviewed-by: Venk Natarajan <vnatarajan@instructure.com>
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Aaron Kc Hsu <ahsu@instructure.com>
Tested-by: Jenkins
fixes RECNVS-401
the javascript has already been adapted to expect a progress instead of
the file status blob, that's what causes the bug. give it what it
expects. the progress results are populated during Attachment#clone_url,
and the progress is flagged completed once the worker successfully
completes the job.
test-plan:
- with inst-fs turned off in the account
- have a course with the Google Drive LTI tool enabled
- have a file upload assignment in that course
- as a student in the course, click "Submit Assignment" on the file
upload assignment
- choose the Google Drive tab, authorize a google account, select a
file from the drive, and click submit.
- submit the assignment with the selected file; the submission should
go through without error (will give an error at this point without
this commit)
- click the link to download the submission; should download
Change-Id: I43e991f419a9f81359145d9f40899ecc82675da0
Reviewed-on: https://gerrit.instructure.com/145403
Reviewed-by: Michael Jasper <mjasper@instructure.com>
Tested-by: Jenkins
Reviewed-by: Andrew Huff <ahuff@instructure.com>
QA-Review: Collin Parrish <cparrish@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
Closes PLAT-3196, PLAT-3210, PLAT-3017
Test Plan:
- Create a developer key in site admin
- Verify in the DB a DeveloperKeyAccountBinding is
created for that key and associated to the site
admin account. The workflow state of the binding
should be 'allow'
- Set the developer key visible to true
- Navigate to a root account.
- Verify the site admin key is visible and set to 'allow'
- In the root account UI change the visiblity to 'on'
- Refresh the page and verify the change persisted
- In the site admin UI turn the developer key to 'off'
- In the root account UI verify the key is now set to 'off'
and the control is disabled.
- In the site admin account UI set the status to 'allow'
- In the root account verify the key status has been
changed back to 'on' and is no longer disabled.
- Create a key in the root account and verify you can
succesfully change its binding status to 'allow', 'off',
and 'on'
- Try any other combinations of keys and states you can think of.
The binding state set at the site admin level shoud always override
the state set in the root account.
- Turn off the dev key rewrite feature flags and verify the old UI
works as before
Change-Id: I50e92e75447529ece7a27a5b9f4b0009f8d1288e
Reviewed-on: https://gerrit.instructure.com/144248
Tested-by: Jenkins
Reviewed-by: Stewie aka Nicholas Stewart <nstewart@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Karl Lloyd <karl@instructure.com>
rather than `url`, which can clash with Backbone's cid
test plan:
- create a course containing Pages named "C1", "C2", ..., "C9"
- ensure all pages appear on the Pages index,
without needing to re-sort the list
- regression test creating and editing wiki pages from the UI
fixes ADMIN-903
Change-Id: I6fcada03eb843625370f211cca23f15a73580629
Reviewed-on: https://gerrit.instructure.com/145081
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Refs MBL-9902
The show discussion endpoint did not
accept any include parameters. Added
all_dates, sections, sections_user_count,
and overrides
Test Plan:
- Create a discussion that is section specific
and has a due date and has overrides
- Hit /courses/:courseID/discussions/:discussionID
- It should just give you back the discussion with the
assignment
- Include ?include[]=all_dates
- It should include all_dates on the assignment
- Include ?include[]=overrides
- It should include overrides on the assignment
- Include ?include[]=sections
- It should include sections on the discussion
- Include ?include[]=sections&include[]=sections_user_count
- It should include the user count on the section
- Hit /courses/:courseID/discussions
- It should not include the overrides on the assignment
- Include ?include[]=overrides
- It should include the overrides on the assignment
Change-Id: I41820dc47720152ef6494d1b0a3428e07272e645
Reviewed-on: https://gerrit.instructure.com/145060
Tested-by: Jenkins
Reviewed-by: Cameron Sutter <csutter@instructure.com>
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Matthew Sessions <msessions@instructure.com>
Closes QUIZ-3753
Test plan:
- Create an assignment
- Click on the assignment's kebab menu and select 'Duplicate'
- Open a rails console with:
`docker-compose run --rm web bundle exec rails console`
- In the rails console, fetch the duplicate assignment:
`assignment = Assignment.last`
- Put the assignment in the 'duplicating' state:
`assignment.update!(workflow_state: 'duplicating')`
- Refresh the assignment list, check that a spinner and 'Making a copy'
text appear as per the mockup
- Put the assignment in the 'failed_to_duplicate' state:
`assignment.update!(workflow_state: 'failed_to_duplicate')`
- Refresh the assignment list, check that a 'Something went wrong'
message, 'Retry' and 'Cancel' buttons appear as per the mockup
- Click the 'Cancel' button, check that assignment disappears
- Repeat the above steps and click the 'Retry' button, check that it
duplicates the assignment
Change-Id: Id594395d27dc05c07e621974875281341fa4390a
Reviewed-on: https://gerrit.instructure.com/144512
Tested-by: Jenkins
Reviewed-by: Steve Kacsmark <skacsmark@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Kevin Dougherty <jdougherty@instructure.com>
Fixes ADMIN-829
Test Plan:
* Turn on the new Course and User search feature option
at the account level
* Create a course with multiple sections and enroll two
teachers in one of the sections
* Add one of the teachers as a teacher to the second section
* View the Courses page at the account level and notice the
Show More link is not displayed under the list of teachers
for the course
Change-Id: If8fce197b5e0c3edb93027f04769476e1e7e0d7f
Reviewed-on: https://gerrit.instructure.com/144170
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
QA-Review: Dan Minkevitch <dan@instructure.com>
Change-Id: Ia1477ba32f8424f3e5e00e4fb69136b3b1aaea53
Reviewed-on: https://gerrit.instructure.com/144172
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
fixes RECNVS-361
instead of just using Attachment.current_root_account.domain
to facilitate the change, all generation of non-public links to external
file storage go through a FileAuthenticator instance that holds the
necessary information about the current user and oauth host
test-plan:
[locally]
- smoke test file uploads and downloads, there should be no impact on
behavior, just a refactor
[once on beta]
- enable inst-fs in your sandbox
- logout of canvas
- open network logging in your browser dev tools and log back in to
canvas
- identify the requests related to the inst-fs login pixel and
corresponding oauth redirects
- the oauth should have occurred against your beta sandbox, not your
production sandbox
- attempt to upload a file; should be successful
Change-Id: Ic859b707908baef84f5ee4dba29f18bdd841abcc
Reviewed-on: https://gerrit.instructure.com/143930
Tested-by: Jenkins
Reviewed-by: Michael Jasper <mjasper@instructure.com>
QA-Review: Collin Parrish <cparrish@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
Add an "anonymous grading" field to the Assignment object, and add a
checkbox for it in the assignment UI that appears when the feature flags
for anonymous moderated marking (the base flag) and AMM-related
anonymous grading are enabled.
closes GRADE-949
Test plan:
* Run the attached migration and make sure there are no errors.
Afterward, open up a database console and check that there
are no values in the new column:
> select * from assignments where anonymous_grading is null;
The above query should return zero rows.
* Make sure that undoing the migration using db:migrate:down
properly deletes the new column (remember to re-run the
migration before continuing!).
* Enable Anonymous Moderated Marking at the account level if not
already enabled. Create a new course and turn on the new
Anonymous Marking flag for it.
* Create an assignment and edit it.
* There should be an "anonymous grading" checkbox on the edit page,
and if you check (or uncheck) it its value should persist between
views of the page.
* Check that if you turn the new anonymous grading flag off for the
course and edit the assignment again, the checkbox is no longer
present.
Change-Id: Ie8955644d78243008bdcd51a05689c093d5d8a8b
Reviewed-on: https://gerrit.instructure.com/143402
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: Sidharth Oberoi <soberoi@instructure.com>
Refs: PLAT-3184
Test Plan: Visible attribute should be in the dev key api
Change-Id: I0bfb76d9d0c40434ea12495dd1b24b32e5d6e4b3
Reviewed-on: https://gerrit.instructure.com/142847
Tested-by: Jenkins
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Stewie aka Nicholas Stewart <nstewart@instructure.com>
fixes ADMIN-131
Test plan
- Set up user with several assignments with
as many types of overrides as possible
- (User in multiple sections with different
due dates, user with an ad-hoc override,
overrides that don't override the due date, etc)
- Ensure the API returns the items in the correct
order (assuming the user has a due date for the
item)
- Check the same with ungraded quizzes
- Ensure the plannable_date is the correct date
for the user
- Turn off Canvas Planner and check to make sure
the to do list works correctly
Change-Id: Ie38900ac645804867823ed24b59f228cefef7f51
Reviewed-on: https://gerrit.instructure.com/142412
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Mysti Sadler <mysti@instructure.com>
fixes RECNVS-237
simplify FilesController#create_pending (which corresponds to the
POST /files/pending route) to do its preflight setup through
api_attachment_preflight. this makes it consistent with other preflight
endpoints, particularly so inst-fs gets used when enabled.
cascaded implications:
* FilesController#create for local uploads is removed in favor of
FilesController#api_create + FilesController#api_create_success
* FilesController#s3_success for s3 uploads is removed in favor of
FilesController#api_create_success
* FilesController#render_attachment_json is removed (was only used by
the previous two removed methods) in favor of the attachment_json
returned by #api_create_success
* JavaScript performing uploads through /files/pending now expects an
{<attachment fields>} shaped response in line with
attachment_json
* JavaScript performing uploads through /files/pending now expects a
'content-type' field in the response instead of 'content_type', in
line with attachment_json
as part of the cleanup, the duplicate_handling parameter was renamed to
on_duplicate to match other preflight endpoints, and the size parameter
was added to the request for quota checking
test-plan:
- generally, uploads that go through /files/pending:
- still work
- work with instfs
- specifically, the uploads that go through /files/pending are:
- uploading an image as an avatar in the user profile
- submitting an assignment via file upload
- conversation messages with attached files
- uploading a file to an eportfolio
- upload image from wiki sidebar (w/o RCE enabled)
- upload files from wiki sidebar (w/o RCE enabled)
- of particular interest to confirm beyond just "appears to work" are:
- attachment(s) are associated with conversation message correctly
after upload
- attachment(s) are associated with submission correctly after upload
- images uploaded to eportfolio are recognized as images
- video files uploaded via wiki sidebar are recognized as video
- image files uploaded via wiki sidebar are recognized as images
Change-Id: I463b3746e8e99a5e503df302664122bf364771c1
Reviewed-on: https://gerrit.instructure.com/141859
Tested-by: Jenkins
QA-Review: Collin Parrish <cparrish@instructure.com>
Reviewed-by: Jonathan Featherstone <jfeatherstone@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
refs RECNVS-331
allows simplifying course link validator to use progress_json
test-plan: N/A
Change-Id: I88bf27298773a40cf9bec0152093bbc8da9bed40
Reviewed-on: https://gerrit.instructure.com/142641
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Collin Parrish <cparrish@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
closes GRADE-927
test plan:
* Create a course with an assignment and a quiz
* Enroll three students in the course
* For the assignment
- Add two overrides with one student in each and ensure the
"Everyone Else" group isn't present in any overrides
- Observe the Rails logs while saving this to ensure DueDateCacher
runs only once
- Verify DueDateCacher only runs for the assignment and recalculates
grades at the same time
- Edit the assignment and submit without any changes
- Verify DueDateCacher does not run
* For the quiz
- Add two overrides with one student in each and ensure the
"Everyone Else" group isn't present in any overrides
- Observe the Rails logs while saving this to ensure DueDateCacher
runs only once
- Verify DueDateCacher only runs for the assignment and recalculates
grades at the same time
- Edit the assignment and submit without any changes
- Verify DueDateCacher does not run
* For the Course
- From the Course settings page, Copy the course with the following
settings:
> Change the start date to one year out
> Choose "Shift dates" for the Date adjustment
- Observe the Rails logs while saving this to ensure DueDateCacher
runs only once
- Verify DueDateCacher only runs for the course
Change-Id: Ia97620132f3f1ccc42668610deb125e67c45bd9a
Reviewed-on: https://gerrit.instructure.com/142197
Reviewed-by: Spencer Olson <solson@instructure.com>
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
refs RECNVS-264
but still pass the @current_user for access and upload JWTs, so that it
can go in a separate claim if its different
test-plan:
- smoke test an inst-fs upload. should still work
Change-Id: I4be9cd4049c83848e69aae37500ae9f4b96392b4
Reviewed-on: https://gerrit.instructure.com/142334
Tested-by: Jenkins
Reviewed-by: Michael Jasper <mjasper@instructure.com>
QA-Review: Jonathan Featherstone <jfeatherstone@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
closes OUT-1534
Scheduling of outcome import jobs will occur in a separate PS,
after this merges and OUT-1997 is merged too.
test plan:
- start up canvas
- generate api docs:
> docker-compose run --rm web bundle exec rake doc:api
- load api docs in http://canvas.docker/doc/api/index.html
- read over the "Outcomes CSV Format" and make sure it reads well
- read over the "Outcomes Import" and make sure it reads well
- obtain an access token:
https://community.canvaslms.com/docs/DOC-10806-4214724194
- request an outcome import, replace "canvas-path" and "token" values:
curl -F attachment=@<canvas-path>/spec/lib/outcomes/fixtures/demo.csv \
-F 'import_type=instructure_csv' \
-H "Authorization: Bearer <token>" \
http://canvas.docker/api/v1/accounts/1/outcome_imports
- in a rails console, confirm that the import was accepted:
> docker-compose run --rm web bin/rails console
% pp OutcomeImport.last
# confirm that the import is in the 'created' state, associated with
your user and associated with an account context
# note the "id" value for later use
% pp OutcomeImport.last.attachment
# confirm that the attachment is in the 'processed' state and has
the filename "test_outcomes_1.csv" passed in above
- request the status of the outcome import (should return a message
saying "The specified resource does not exist"):
curl -H "Authorization: Bearer <token>" \
http://canvas.docker/api/v1/accounts/1/outcome_imports/latest
- back in the rails console created above, manually transition
the import to "importing":
% OutcomeImport.last.job_started
- run the above curl command again, and this time the latest outcome
import should be returned, in the 'importing' state
- run the above curl command again, replacing "latest" with the "id"
value obtained above. it should return the same response as the
previous step.
Change-Id: Ice7d67b625b443cec70f531f2e673face6d6fbeb
Reviewed-on: https://gerrit.instructure.com/142024
Reviewed-by: Neil Gupta <ngupta@instructure.com>
Reviewed-by: Frank Murphy <fmurphy@instructure.com>
Tested-by: Jenkins
QA-Review: Frank Murphy <fmurphy@instructure.com>
Product-Review: Neil Gupta <ngupta@instructure.com>
fixes CORE-1076
test plan
- specs should pass
Change-Id: Id0b88c21a606a69ec5663864f4303ba95101c14a
Reviewed-on: https://gerrit.instructure.com/142386
Reviewed-by: James Williams <jamesw@instructure.com>
Tested-by: Jenkins
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
refs RECNVS-313
test-plan:
- with inst-fs enabled, do the following:
- login, upload a file, access a file
- in each case the JWT serialized in the url should contain a
`host` claim which is the oauth host (domain of the root account)
Change-Id: I05e833407bfd6a3d6cb0dcb95d42d446e314d224
Reviewed-on: https://gerrit.instructure.com/141584
Tested-by: Jenkins
Reviewed-by: Jacob Fugal <jacob@instructure.com>
QA-Review: Collin Parrish <cparrish@instructure.com>
Product-Review: Michael Jasper <mjasper@instructure.com>
fixes CORE-763
test plan:
* set up two accounts, on different shards, and a user associated with both
* create a course on shard 2 and create a wiki page for the front page.
* create a module in that course
* as the content of the front page, embed an image from the course, and
link to the module
* using the domain of shard 1, go to /api/v1/courses/<id of shard 2>~<id the course>/front_page
* inspect the links in the returned body element. they should be using the
first account's domain, but should contain (short) global ids. there should
4 - the 'regular' URL for the image and the link, and a data-api-endpoint for each.
* exercise all 4 URLs. the HTML ones should redirect to account 2's domain,
and the API URLs should return a result directly
Change-Id: I10aa0fc1dc003a781d04ec5b230ede6aeba64fb9
Reviewed-on: https://gerrit.instructure.com/141664
Reviewed-by: Rob Orton <rob@instructure.com>
Tested-by: Jenkins
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
Test Plan:
1 - Run the migrations and validate that the
`read_only` column exists on the
`custom_gradebook_columns` table, with a default
of false
2 - Create a new CustomGradebookColumn through the API
and validate that it accepts and persists the
`read_only` parameter. Example curls:
Create the column:
curl -H "Authorization: Bearer <token>" \
http://localhost:3000/api/v1/courses/:id/custom_gradebook_columns \
-X POST \
-F "title=ReadOnly" \
-F "read_only=true"
Validate the columns:
curl -H "Authorization: Bearer <token>" \
http://localhost:3000/api/v1/courses/:id/custom_gradebook_columns/
3 - Open the gradebook for a course and validate that you cannot
edit the `read_only` columns in both the old and new
gradebooks. (Tabbing should still work as normal.)
4 - Go to the Individual View. Under Global Settings, check Show Notes
in Student Info. Under Content Selection, select a student.
Confirm that you can only edit the custom columns that were
not created as read_only.
refs PFS-9913, PFS-9914, PFS-10003
Change-Id: I18005cc0eaf19202c00a5d79c2a04421b5d12a5c
Reviewed-on: https://gerrit.instructure.com/139625
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Tested-by: Jenkins
Product-Review: Ian Morris <ianm@instructure.com>
QA-Review: Aiona Hernandez <ahernandez@instructure.com>
test plan: ensure the API endpoint below does not include
the student view student in total counts
api/v1/courses/X?include=total_students
fixes ADMIN-800
Change-Id: I706bcdabdf2cba9031c8b5649a89370e1f0471e9
Reviewed-on: https://gerrit.instructure.com/141685
Tested-by: Jenkins
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
QA-Review: Jon Willesen <jonw+gerrit@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Closes: GRADE-861
Test Plan
- Verify there are no N+1 queries when loading speedgrader
caused by originality reports
- Verify there are no N+1 queries when loading gradebook
caused by originality reports
- Verify originality reports are copied to all submissions
in a group when they are created or updated in a group
assignment.
- Verify online upload originality reports are displayed
correctly in speedgrader, gradebook, student grade page,
and submission details page.
- Verify originality reports display properly in gradebook
and speed grader when there are multiple submissions
and each has a different originality report.
- Verify the "resubmit to plagiarism tool" button still
appears in speedgrader.
- Verify originality reports for group assignments are displayed
correctly.
- Verify text entry originality reports are displayed correctly.
- Verify originality report launches work correctly from speedgrader
and gradebook.
Change-Id: I459bbf0a165bb131d58fc153feb0dce3d0bf07af
Reviewed-on: https://gerrit.instructure.com/141321
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
closes OUT-1566
When outcomes are imported into rubrics, then any updates
to an outcome's name, description and ratings will be
reflected in unassessed, updateable (referenced by no more
than one assignment) rubrics, specifically in the rubric
criteria containing the outcome.
test plan (unassessed/updateable):
- create an account outcome
- create an account rubric, using the outcome as
a single criterion
- edit the outcome, including name, description
ratings and total points possible (confirm that
a warning dialog appears before editing)
- confirm that the changes are reflected in the
account rubric's criterion (check criteria name,
ratings, and total points)
- create an assignment, and use the account rubric
as its rubric
- edit the outcome, including name, description
ratings and total points possible (confirm that
a warning dialog appears before editing)
- confirm that the changes are reflected in the
account rubric's criterion and the assignment's rubric
(check criteria name, ratings, and total points)
- create another assignment, and use the account rubric
as its rubric
- edit the outcome, including name, description
ratings and total points possible (confirm that
a warning dialog DOES NOT appear before editing)
- confirm that the changes are NOT reflected in the
account rubric's criterion and both the assignment
rubrics
test plan (assessed):
- create a new account rubric using the default criterion
- create a new assignment and use the account rubric
as its rubric
- as a student, submit to the assignment
- as a teacher, score the assignment, including the rubric
- add the account outcome to this new account rubric
- edit the outcome, including name, description
ratings and total points possible (confirm that
a warning dialog DOES NOT appear before editing)
- confirm that the changes are NOT reflected in the
account rubric's criterion and the assignment's rubric
Change-Id: Ie5064269689071a450fa503fb68c73f5beb16710
Reviewed-on: https://gerrit.instructure.com/127991
Reviewed-by: Michael Brewer-Davis <mbd@instructure.com>
Tested-by: Jenkins
Reviewed-by: Frank Murphy <fmurphy@instructure.com>
QA-Review: Andrew Porter <hporter-c@instructure.com>
QA-Review: Leo Abner <rabner@instructure.com>
Product-Review: Sidharth Oberoi <soberoi@instructure.com>
This commit updates Assignment#duplicate to store a reference to the
original assignment on the duplicated assignment. Both the original
assignment and the new assignment's lti_resource_link_id are included
in the `assignment_created` live event emitted when the new assignment
is saved.
This allows LTI tools listening for Canvas live events to identify when
an assignment has been duplicated, and duplicate their own data
accordingly.
Closes QUIZ-3749
Test plan:
- Set up live events and tail the kinesis stream as per the instructions
in doc/live_events.md
- Create an LTI assignment
- An `assignment_created` live event containing this assignment's
lti_resource_link_id should appear in the kinesis log. Make a note of
this lti_resource_link_id
- Duplicate this assignment by clicking the "kebab" menu and clicking
"Duplicate"
- Check that another `assignment_created` live event appears in the
kinesis log, containing both the original assignment's
lti_resource_link_id and the new assignment's lti_resource_link_id
Change-Id: I64bdb9a2132e58c4e7be0ab7687c2c819a3587fd
Reviewed-on: https://gerrit.instructure.com/140877
Tested-by: Jenkins
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Reviewed-by: Jeff Belser <jbelser@instructure.com>
Product-Review: Michael Hargiss <mhargiss@instructure.com>
Ignores soft-deleted Grading Periods when determining the current
grading period for an enrollment.
closes GRADE-834
Test Plan:
1. At the root account grading standards page
(accounts/:id/grading_standards), create an active Grading Period
(a period where `start_date` > now < `end_date`).
2. In a course that is using that grading period, hit the courses
endpoint as a student and verify the enrollments you get back have
a not-null current_grading_period_id:
GET /api/v1/courses/:id?include[]=total_scores&include[]=current_grading_period_scores
=> current_grading_period_id should be present
3. At the root account grading standards page, delete the Grading
Period you created in step 1.
4. In a course that is using that grading period, hit the courses
endpoint as a student and verify the enrollments you get back have
a null current_grading_period_id:
GET /api/v1/courses/:id?include[]=total_scores&include[]=current_grading_period_scores
=> current_grading_period_id should be null
Change-Id: I5aed1ba5bed47a08902d74ec3c41a4b9e2bad049
Reviewed-on: https://gerrit.instructure.com/139932
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Josh Simpson <jsimpson@instructure.com>
Tested-by: Jenkins
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
QA-Review: Adrian Packel <apackel@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
Update several API methods to return unposted scores/grades alongside
the existing fields if the requesting user has either of the
:manage_grades or :view_all_grades permissions.
The updated functions are:
submissions_api_controller.rb#for_students
users_controller.rb#grades_for_student
course_json.rb#total_scores
course_json.rb#current_grading_period_scores
closes GRADE-761
Test plan:
Initial setup and notes:
- As a teacher, set up a course with some students and at least one
unposted assignment, and assign some grades.
- Also, set up a login for a student in the course.
For each step listed below, you should access the listed URL first
as the teacher, then log out and back in as a student, and access it
again. Check that your results are in line with what's indicated below.
To each URL, prepend your server and port (presumably localhost:3000 or
similar).
Testing submissions_api_controller:
- Access the following URL (replace "1" with your course ID):
/api/v1/courses/1/students/submissions?student_ids=all&include=total_scores&grouped=true
- As a teacher:
- In each individual student hash, the fields "unposted_current_score"
and "unposted_final_score" should appear alongside the corresponding
computed_ scores.
- The unposted fields should reflect each student's scores with
unposted assignments factored in.
- As a student:
- The unposted fields should not appear.
Testing grades_for_student:
- From your course above, identify the ID for a student's enrollment,
perhaps using the Rails console.
(E.g.: StudentEnrollment.find_by(course_id: <course ID>).id)
- Access the following URL (replace "1" with the enrollment ID):
/grades_for_student?enrollment_id=1
(note that the "/api/v1/" prefix is NOT part of this one)
- As a teacher:
- The output should include an 'unposted_grade' field reflecting the
student's unposted (current) score.
- As a student:
- The output should not include the new field.
Testing course_json:
- Set up a grading period that includes the current date and time,
if one is not already active.
- Identify the ID of a student in the course.
(E.g.: StudentEnrollment.find_by(course_id: <course ID>).user.id)
- Access the following URL (replace "1" with your course ID):
/api/v1/users/1/courses?include[]=enrollments&include[]=total_scores&include[]=current_grading_period_scores
- As a teacher:
- In the output, each element in the "enrollments" array should
include the following fields (which should, as described above,
reflect the student's scores factoring in unposted assignments):
- unposted_current_score
- unposted_current_grade
- unposted_final_score
- unposted_final_grade
- current_period_unposted_current_score
- current_period_unposted_current_grade
- current_period_unposted_final_score
- current_period_unposted_final_grade
- As a student:
- The unposted fields listed above should *not* be included.
Change-Id: Ie2b7cbfa41446d3f9010d4f6376407b1c1edd443
Reviewed-on: https://gerrit.instructure.com/138468
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Tested-by: Jenkins
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
fixes CORE-922
test plan
- old api results should include limited errors
and warnings
Change-Id: Ia71bca882ea234d286b43be12baa291518e69f11
Reviewed-on: https://gerrit.instructure.com/139371
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
fixes CORE-324
test plan
- run a sis import with errors
- the errors should be included in the api JSON
Change-Id: I97e372a82b565e7bfa01cd9ca0bb66bb67c95723
Reviewed-on: https://gerrit.instructure.com/139071
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
fixes CORE-652
test plan
- groups response should include sis_id
- group category response should include sis id
Change-Id: I2e2ea884e6fed333baf4a2f5df8a8d1ad0e65f1c
Reviewed-on: https://gerrit.instructure.com/137876
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
refs #ADMIN-675
Change-Id: Ie656b5272c63245aaa0df82d98efdd18941ea03d
Reviewed-on: https://gerrit.instructure.com/137748
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
This adds four additional fields (unposted_current_score,
unposted_final_score, unposted_current_grade, unposted_final_grade) to
the enrollment and users endpoints if the requesting user has either
manage_grades or view_all_grades permissions.
fixes GRADE-119
test plan:
- Have a course with a teacher and a student.
- Have three assignments each worth 10 points, one muted (Assignment 1)
and two not muted (Assignment 2 and Assignment 3).
- As the teacher, grade the student 6/10 for Assignment 1 and 10/10
for Assignment 2. Do not grade the student for Assignment 3.
- As the teacher, make an API call to get the grades for the student:
GET /api/v1/courses/:course_id/users/:student_id?include[]=enrollments
Authorization: Bearer the-teacher-api-token
Verify the grades on the enrollments in the response include the
unposted_current_score, unposted_final_score,
unposted_current_grade, and unposted_final_grade keys. Verify the
unposted_current_score is 80.00, the unposted_final_score is 53.33,
the unposted_current_grade is null, and the unposted_final_grade is
null.
- As the student, make an API call to get the grades for yourself:
GET /api/v1/courses/:course_id/users/:student_id?include[]=enrollments
Authorization: Bearer the-student-api-token
Verify the grades on the enrollment in the response do not include
the unposted_current_score, unposted_final_score,
unposted_current_grade, or unposted_final_grade keys.
Change-Id: Ibd14d0ed0a246f1cb8d16d7bc9ba0beb2680cba9
Reviewed-on: https://gerrit.instructure.com/137213
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Tested-by: Jenkins
QA-Review: Indira Pai <ipai@instructure.com>
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
fixes COMMS-584
Test Plan:
- With section specific announcements turned on
- Go to the announcements index page
- If you don't have any announcements create some
that are both section specific and some that aren't
- go back to the index page
- hover over the all sections toolip/the tool tip that
says the count of the amount of sections
- notice it states how many users it sent to (for all sections)
and how many it sent to for section specific
Change-Id: I74e37512f6244a32cfd2fdb90bce63c85e42be26
Reviewed-on: https://gerrit.instructure.com/136867
Reviewed-by: Venk Natarajan <vnatarajan@instructure.com>
Tested-by: Jenkins
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
refs CORE-23
Test Plan:
- Make a GET request to /api/v1/folders/XX/files?use_verifiers=0
using a valid JWT
- Verifiers should not be present in the URLs returned
Change-Id: I7111098fe1f1fd4f8d83d06bc19f0c819fb18a85
Reviewed-on: https://gerrit.instructure.com/136683
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
Change-Id: If147691095e217b4a523a231a0bf9844b0eac2dc
Reviewed-on: https://gerrit.instructure.com/136905
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
fixes CORE-667
fixes GRADE-250
fixes GRADE-251
test plan
- have a user with multiple sis pseudonyms
- enroll user into courses through sis import
using both sis_ids for different enrollments
- each enrollment should return the correct
pseudonym in grade export, Enrollment API,
Section API, Submission API
Change-Id: I2693851b6b65fe8266b3a4e6e8cefc30e3d6f214
Reviewed-on: https://gerrit.instructure.com/136804
Tested-by: Jenkins
QA-Review: Anju Reddy <areddy@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
Fixes ADMIN-311
Test Plan:
* Create an assignment that has an override
assigned to two students
* Conclude one of the users
* Go back to the assignment page and notice it
now only lists '1 Student'
* Go to the edit page and notice only the active
user is listed for the override
Change-Id: I2f351afa4cf341bab1e3679d47cc032c8f729207
Reviewed-on: https://gerrit.instructure.com/131961
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
refs COMMS-587 COMMS-588
test plan:
- enable the section specific announcements feature flag
- use a course with multiple sections and students across sections
- create some section specific announcements and regular announcements
- test the following API routes as both a teacher and a student
- use your own course id as appropriate
- as a teacher you should see all announcements in a course
- as a student you should only see announcements specific to the
sections that you are enrolled in
[Announcements API]
- /api/v1/announcements?context_codes=course_2
- note that each announcement has a "is_section_specific"
property with the correct value
- /api/v1/announcements?context_codes=course_2&include[]=sections
- note that section specific announcements include correct section
- /api/v1/announcements?context_codes=course_2&include[]=sections&include[]=sections_student_count
- note that section specific announcements' include sections with
correct "student_count" property
[Discussion Topics API]
- /api/v1/courses/2/discussion_topics/?only_announcements=true
- note that each announcement has a "is_section_specific"
property with the correct value
- /api/v1/courses/2/discussion_topics/?only_announcements=true&include[]=sections
- note that section specific announcements include correct section
- /api/v1/courses/2/discussion_topics/?only_announcements=true&include[]=sections&include[]=sections_studenst_count
- note that section specific announcements' include sections with
correct "student_count" property
Change-Id: Idbe68e2d72a538ce5d3701daf12287f3e8bb8d94
Reviewed-on: https://gerrit.instructure.com/136266
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
Reviewed-by: Venk Natarajan <vnatarajan@instructure.com>
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Felix Milea-Ciobanu <fmileaciobanu@instructure.com>
Fixes PLAT-2967
Test Plan:
- Create an assignment that uses file upload and
a plagiarism detection tool. The assignment
should be a group assignment. The tool should
support LTI launches for originality reports.
- As one of the students in the group submit
to the assignment (there should be at least
two students in the group).
- Create an originality report for the submission/attachment
combo.
- Verify that all originality report LTI launches work
for all students in the group (submission details page,
student grade page, gradebook, speedgrader).
- Verify the normal flow for originality reports works
for non-group assignments.
Change-Id: I2b4002c58bd6438181559f8dab66a67ee0a8f8e2
Reviewed-on: https://gerrit.instructure.com/135974
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
fixes PLAT-2936
fixes PLAT-2935
Test plan:
* Ensure that when the membership service feature flag is disabled the
checkbox to allow it on the tool is not visible
* Ensure that when the memebership service feature flag is enabled the
checkbox to allow it on the tool is visible and can be checked
* Ensure that the checked box persists and is checked when editing the
tool
Change-Id: Ice75acbcdcc25548c8e9f5d53dd1b2256e8ff8ac
Reviewed-on: https://gerrit.instructure.com/134878
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
Product-Review: Karl Lloyd <karl@instructure.com>
test plan:
- import a course via SIS Import
- enroll a student in the course
- as a student, set a nickname for the course
- use the "List courses for a user" API endpoint as an
account admin to list the student's courses
- the SIS ID for the imported course should appear
in the API results
- the student's course nickname should not appear
in the admin's API results
also
- set up module items with completion requirements
- complete some but not all of these as the student
- as the account admin, call
/api/v1/users/<student id>/courses
with
include[]=course_progress
and ensure the student's module progress is included
in the API results
fixes ADMIN-603
Change-Id: I0d45c780505dd4d4c325c5da5651334d8dd44c39
Reviewed-on: https://gerrit.instructure.com/135878
Reviewed-by: James Williams <jamesw@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Fixes a bug where assignment group scores could get returned instead
of overall course scores.
closes GRADE-695
Test Plan:
1. Create a course with at least one assignment group and one student.
2. The course will need to be set up such that the following command
in a rails console returns the assignment group score:
enrollment = Enrollment.find(<the-enrollment-id>)
enrollment.scores.where(grading_period_id: nil).first
This may take some trial-and-error during setup to get this result.
My best guess would be that you need to do things in this order:
create the course, enroll the student, add the new assignment group,
delete the course score via a rails console, and then grade the
student in the gradebook to trigger recreation of the course score.
3. Hit the following endpoint and verify you get the scores for the
overall course score back, not the assignment group scores:
/api/v1/courses/:course_id/users/:user_id?include[]=enrollments
Change-Id: I947aefe5e9c76f20d470ae1d9471c62b8a0fa199
Reviewed-on: https://gerrit.instructure.com/135456
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
test plan:
* in the rails console, set a maximum limit for avatars
Setting.set('max_conversation_participant_count_for_avatars', '2')
* have a conversation with 2 recipients and
one with more than 2 recipients
* calling /api/v1/conversations.json?include[]=participant_avatars
should only include 'avatar_urls' for the conversation
with 2 recipients
closes #COMMS-565
Change-Id: I63dfafbee2c44d2e70f8e7f1ecc7d42bb1559a26
Reviewed-on: https://gerrit.instructure.com/134629
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Venk Natarajan <vnatarajan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
Discussion topics can be unread even without replies if the user hasn't
looked at the topic yet. This is why it was showing up in the
new_activity filter. This makes the new_activity flag consistent with
the filter.
fixes ADMIN-564
test plan:
* In the student planner, unread discussion topics with no replies
should have the blue dot for new activity and be consistent with the new
activity filter in the api.
Change-Id: Iba112043c8544c4bc73fac5ecd579187969e9a57
Reviewed-on: https://gerrit.instructure.com/134441
Tested-by: Jenkins
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
closes PLAT-2927
Test Plan:
- Under an assignment creation, select online
- Click only the Text Entry box
- The plagiarism Review section should appear
- Save the submission
- As a student, submit the assignment after entering text in the
field
- Submission should submit with the body to the TP
Change-Id: Ice010860a8bc89e0ead02c257baaad1bc4e91b23
Reviewed-on: https://gerrit.instructure.com/134430
Tested-by: Jenkins
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Karl Lloyd <karl@instructure.com>
fixes COMMS-525
test plan:
- create two students in a course
- create an assignment and assign it to everyone
- notice the assignment notification on the dashboard activity view
for each of the students
- edit the assignment by assigning it to only the first student
- check the first student's dashboard and notice the assignment
notification is still there
- check the second student's dashboard and notice that the assignment
notification is NOT still there
Change-Id: Id521e20ee3df91efe4b86b0a1677e791c4894dff
Reviewed-on: https://gerrit.instructure.com/133805
Reviewed-by: Venk Natarajan <vnatarajan@instructure.com>
Tested-by: Jenkins
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Felix Milea-Ciobanu <fmileaciobanu@instructure.com>
apparently some courses have hundreds of thousands of them
refs #OUT-1611
Change-Id: I1416a8e03de11e7adcc148269689afe809c88592
Reviewed-on: https://gerrit.instructure.com/134241
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
This patchset adds a call to DueDateCacher.recompute to
Assignment#run_if_overrides_changed! to avoid situations where either
cleanup callbacks are skipped or other due date changes that would
change the cached due date.
fixes GRADE-677
test plan:
- Create a course with at least 2 users
- Create an assignment and assign it to just 2 of the users
- Visit the gradebook and note both students are able to be graded
- Return to the assignment settings and remove one of those users
from the override
- Visit the gradebook and note only the still assigned student is
able to be graded
Change-Id: I3cedd13ecedcc1cb785e2a70589fd79bef48802d
Reviewed-on: https://gerrit.instructure.com/134028
Tested-by: Jenkins
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
- have files, quizzes, learning outcomes, outcome groups,
and modules in a blueprint course. no items should be
locked.
- ensure outcome group changes appear in the unsynced
changes list correctly
- sync to an associated course
- delete items in the associated course
- change the same items in the blueprint in some way
(i.e., rename them)
- re-sync
- the deleted items should not be undeleted in the
associated course
- non-deleted outcome groups should not gain a link
to a deleted outcome (that shows only in the left pane)
fixes ADMIN-559
Change-Id: Ibe8842353760260b050a6330cd27df986b17b5e7
Reviewed-on: https://gerrit.instructure.com/133374
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 ADMIN-105
Test plan
- Create a graded discussion
- As user 1 (probably a teacher), add a comment to the discussion
- As user 2 (probably a student), go to
/api/v1/planner/items?filter=new_activity
- Ensure the graded discussion shows up in the API
- Ensure it doesn't show up twice in /api/v1/planner/items (or
anywhere else it shouldn't)
Change-Id: I21a88a4e5181e2a43ce5d03cf92230d3107d5093
Reviewed-on: https://gerrit.instructure.com/132096
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Pert Eilers <peilers@instructure.com>
It used to have an api url, which is the wrong thing to do. We don't
currently have a real html url for planner notes, so just omit the
field.
fixes ADMIN-533
test plan:
* planner todo items should not be links in the todo list
Change-Id: I8d65bfcfaeeb9fe9f89b05f3520437c5f121d4a9
Reviewed-on: https://gerrit.instructure.com/132675
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
Product-Review: Pert Eilers <peilers@instructure.com>
fixes QO-281
test plan:
- have a quiz with a short time limit
- have a student start a quiz and not finish it
- as a teacher, go to the moderate page
- click on "Check on outstanding quiz submissions"
- it should show the users name correctly, and work if you submit
Change-Id: I40c36f41ca07536d700da9da9c9a7f9dd21b6b35
Reviewed-on: https://gerrit.instructure.com/132829
Tested-by: Jenkins
Reviewed-by: Davis Lynn McClellan <dmcclellan@instructure.com>
QA-Review: Michael Hanks <mhanks-c@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
In the groups index page for a course, we were not displaying
inactive users. This caused problems when a student tried to
sign up for a full group that had inactive users in it, since
we told them that the group had spaces.
This change now displays inactive as well as active users, so
the student is now told that the group is full. It is up to
the teacher to remove such students if they see fit.
Fixes COMMS-4
Test plan:
* Have a course with some self sign-up groups, with a limit.
* Fill the group up to the limit with active students, making
sure you have a student left that is not in the group.
* Now, deactivate one of the students in the group.
* With the student *not* in the group, act as that user.
* Go to the "people" page for the course and click on groups.
* Now the student will be told that the group is full.
* Become the teacher again.
* Go to the group in question, the inactive users in it should
be marked as such.
Change-Id: If54df1e22779a5c0a4a97ed79245e7d5a6d76713
Reviewed-on: https://gerrit.instructure.com/131728
Tested-by: Jenkins
Reviewed-by: Felix Milea-Ciobanu <fmileaciobanu@instructure.com>
QA-Review: KC Naegle <knaegle@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
closes CNVS-13382
test plan
- import terms through SIS
- create terms manually
- GET /api/v1/accounts/:account_id/terms
should have sis_import_id if you have
permissions to see it
- check that sis_import_id is in api docs
Change-Id: I86b11910149b43280698460fb2967b9e385c0ce3
Reviewed-on: https://gerrit.instructure.com/29946
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
refs CNVS-10408
test plan
- import courses through SIS
- create courses manually
- /api/v1/accounts/self/courses should have
sis_import_id if you have permissions to see it
- check that sis_import_id is in api docs
Change-Id: Ia4537fb8856dcbc831f707350bd8c6b762673d79
Reviewed-on: https://gerrit.instructure.com/29940
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
The required delayed post and lock at times for group topics aren't
filled in in the database, so this fetches them and sticks them
in the response.
This wasn't a problem for *graded* discussions because the frontend
logic checks the associated assignment first for a delayed posting
time.
Fixes COMMS-194
Test Plan:
* Have a course with groups.
* Make a group discussion not available until the future.
Make sure it is not graded.
* Go to the group discussions page and verify that it the
"not available until" phrase is now shown.
Change-Id: I8aa961ffb5590d5d31cea34ef1f9d959386d55af
Reviewed-on: https://gerrit.instructure.com/131539
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Felix Milea-Ciobanu <fmileaciobanu@instructure.com>
Product-Review: Venk Natarajan <vnatarajan@instructure.com>
Fixes: PFS-9067
Test Plan:
API ENDPOINT: api/v1/courses/[course_id]/assignments/[assignment_id]
1) Verify that legacy rubrics return correct default values.
- In an old rubric (created prior to September 2017) verify -
a) criterion_use_range is false.
b) rating.long_description is ""
2) Turn on criterion_use_range in account settings.
- Add a rubric with a criterion that uses ranges, and one that
does not.
- Verify criterion_use_range is correct in api for rubric.
3) Add a long description to a criterion.
- Verify long description shows up in the api endpoint.
Change-Id: I8d57a98a145f784f50c8d0bfbbabaed0cf90db8d
Reviewed-on: https://gerrit.instructure.com/131515
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
QA-Review: Aiona Hernandez <ahernandez@instructure.com>
QA-Review: Andrew Porter <hporter-c@instructure.com>
Product-Review: Sidharth Oberoi <soberoi@instructure.com>
test plan:
* create an object with html content
(e.g. a discussion topic)
* in the rce editor for the object
use the "create a link to a new page" to create a
link to a new wiki page with a title with a space
or another special character
* after saving, follow the link to create the new page
* use the api to view the html content for the object
(e.g. /api/v1/courses/X/discussion_topics/Y/)
* the "data-api-endpoint" added onto the wiki page
link should give a working api url to fetch
the wiki page data
closes #CNVS-39817
Change-Id: I79a035131c2f45560db96880056140f688b09dd0
Reviewed-on: https://gerrit.instructure.com/129956
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Tested-by: Jenkins
Product-Review: James Williams <jamesw@instructure.com>
test plan:
- render API docs
- test creating planner notes linked to learning objects
via linked_object_asset_string
- ensure you are not able to create more than one planner note
linked to a single learning object
- ensure the API results come back correctly
and the linked_object_url for each type works
(note: I (re)created wiki page links by id to avoid having
to instantiate the linked object in order to return a link,
for performance reasons which will become more important
once we start joining planner notes on index pages)
closes ADMIN-262
Change-Id: I1b5643cab75fb7fd5724d21837bcc6068ea5687f
Reviewed-on: https://gerrit.instructure.com/129557
Reviewed-by: Mysti Sadler <mysti@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Tested-by: Jenkins
Product-Review: Jeremy Stanley <jeremy@instructure.com>
fixes RECNVS-1
also, don't store the attachment.thumbnail_url in the
user.avatar_image_url; the former is potentially time-limited (and also
possibly too long to fit in the field), while the latter is intended for
deferred use.
test-plan:
- do not have inst-fs enabled
- have S3 storage configured, not local storage
- regression test uploads from:
- user and course files areas
- course image picker in course settings
- course content import
- user avatar image picker
- rich content editor
- conversations
- submissions
Change-Id: I0f194873977b621e1cab8413843ffe0345a34b1b
Reviewed-on: https://gerrit.instructure.com/129587
QA-Review: Collin Parrish <cparrish@instructure.com>
Tested-by: Jenkins
Reviewed-by: Andrew Huff <ahuff@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
Fixes: CNVS-37970
Test Plan:
- Enroll a user into a course across a shard boundary
- Add a calendar event (not assignment) for the course
- Log in on the user's home shard and view their calendar
- The event from the cross shard course should appear in the calendar
Change-Id: I3addb678c0504dfad885f11885da61b1a1d769ef
Reviewed-on: https://gerrit.instructure.com/126909
Reviewed-by: Rob Orton <rob@instructure.com>
Tested-by: Jenkins
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Tyler Pickett <tpickett@instructure.com>
Refs: CNVS-37970
Test Plan:
- Enroll a user in a course in a trusted shard that is not their home
- Create a dated assignment (NOT calendar event) in the cross-shard course
- Create an un-dated assignment (NOT calendar event) in the cross-shard
course
- View that user's calendar, the assignments should show up in the
calendar as well as the undated assignments area
Change-Id: I0c5eaa80fc78355e67a0150b760516997e66d0d9
Reviewed-on: https://gerrit.instructure.com/123495
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Tyler Pickett <tpickett@instructure.com>
test plan:
* have a blueprint course
* /api/v1/courses/X should return the blueprint restrictions
as documented in the courses api
closes #ADMIN-70
Change-Id: I89a7ebc7e6329d66fada5377517f91b28b443ccf
Reviewed-on: https://gerrit.instructure.com/129275
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
we need to subtract all the slots, not just the visible ones
test plan:
- have an appointment group that covers two courses
with 1 participant per slot
- in one of these courses, reserve a slot as a student
- ensure a student in the other course no longer sees that
slot as available
fixes CNVS-36241
Change-Id: I88fae0ab1e94d75b5a5c10093502e0221453ee36
Reviewed-on: https://gerrit.instructure.com/127973
Tested-by: Jenkins
Reviewed-by: Mysti Sadler <mysti@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
* enter student view in a course
* view the sections api index endpoint including
the 'total_students' parameter
i.e. /api/v1/courses/X/sections?include[]=total_students
* the count should not include the test student
closes #CNVS-39676
Change-Id: Iaabd4ad7fc7368bb720d10badd87aaaa96a13680
Reviewed-on: https://gerrit.instructure.com/128043
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
fixes CNVS-39375
test plan
- sis_login_id should not be returned
Change-Id: Icbb49d08052e1cb75c22d02ac0d9b52de14b60f6
Reviewed-on: https://gerrit.instructure.com/126378
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Tested-by: Jenkins
refactor rest api for submissions to use same logic and param names
closes CNVS-39777
test plan
- verify that `submissionStatus` and `gradingStatus` are
available on a submission type query in GraphQL
- verify that the fields `submission_status` and
`grading_status` are available on the REST enpoint for
submissions by using the params
`?include[]=submission_status&include[]=grading_status`
Change-Id: I6bcfdacc9e868b824d2c00082fdd52310c4869d0
Reviewed-on: https://gerrit.instructure.com/128714
Tested-by: Jenkins
Reviewed-by: Cameron Matheson <cameron@instructure.com>
QA-Review: Collin Parrish <cparrish@instructure.com>
Product-Review: Michael Jasper <mjasper@instructure.com>
fixes CNVS-39635
test plan
- sis import api should return user
Change-Id: If54a50a646c8b73ebf122885d53717572930dda7
Reviewed-on: https://gerrit.instructure.com/128018
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
fixes CNVS-39058, CNVS-39061
Canvas doesn't need to store any additional metadata about instfs
thumbnails; the only metadata it uses about its legacy generated
thumbnails is the url (whether local or s3). we can just generate
thumbnail urls direct to instfs and forgo the thumbnail model
altogether.
test-plan:
- enable instfs
- upload an image to Canvas
- the uploaded image should have a thumbnail in the UI same as a
non-instfs file before this commit, but the thumbnail should be being
read from instfs as well
- regression test thumbnails with instfs disabled
Change-Id: I03c21be89469238de7efa317753763834d41c86c
Reviewed-on: https://gerrit.instructure.com/128180
Reviewed-by: Jonathan Featherstone <jfeatherstone@instructure.com>
Tested-by: Jenkins
QA-Review: Collin Parrish <cparrish@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
This patchset cleans up a few N+1s related to grading periods and
scores when the courses API is called for a student with
include=current_grading_period_scores and include=total_scores
fixes GRADE-300
test plan:
- Have a few courses in an enrollment term with multiple grading
periods set up.
- Have a few courses in an enrollment term without MGP set up.
- Register a student in those courses
- As the student hit the courses API endpoint as:
/api/v1/courses?include%5B%5D=needs_grading_count&include%5B%5D=syllabus_body&include%5B%5D=total_scores&include%5B%5D=term&include%5B%5D=permissions&include%5B%5D=current_grading_period_scores&include%5B%5D=favorites&include%5B%5D=tabs&per_page=99
- Observe in the logs that grading period information and score
information is only loaded once and not once per course
Change-Id: I5c2caf23bb7f51274a0a482ac8b4f3135e887cd6
Reviewed-on: https://gerrit.instructure.com/127447
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
fixes CNVS-39065
vs. success_url for legacy path or body of S3 redirect. for parity with
those old responses, we need to have the Location returned from the
capture include the `enhanced_preview_url` when appropriate.
not sure why, but when S3 gives you a redirect after successful upload,
the XHR follows the redirect happily. when inst-fs does, Canvas gives a
CORS error (at least during local development with docker). rather than
try and tell the difference and fix, it, we really shouldn't be
redirecting anyways. use the appropriate REST status and let the client
know that it wants to fetch from the Location explicitly. this explicit
request is happy without any CORS mangling.
test-plan:
- have your local canvas connected to local inst-fs
- go to <canvas>/files
- upload a new file
- upload should succeed, including adding the new file to the UI
- repeat for any other place you can think of to upload a file in
canvas, including:
- avatars
- gradebook
- submissions
- conversations
- etc.
Change-Id: I312aaa17fd000843131c89023e827410cc5e13c6
Reviewed-on: https://gerrit.instructure.com/126012
Tested-by: Jenkins
Reviewed-by: Andrew Huff <ahuff@instructure.com>
QA-Review: Collin Parrish <cparrish@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
closes: GRADE-299
test plan:
- using the quiz submissions api, pass the following params:
- include[]=submission
- include[]=mobile_teacher_state
- include[]=mobile_student_label
- the api should respond with submission objects that include both
mobile_teacher_state and mobile_student_label
Change-Id: Ifd93cb84eee2ce142f17419eb06f4011026a22b7
Reviewed-on: https://gerrit.instructure.com/127416
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Taylor Wilson <twilson@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
closes GRADE-303
Test Plan:
1. Verify the migration succeeds, and verify you can also roll the
migration back successfully. The rest of the steps will assume the
migration has been run.
2. Create a course with an assignment. Submit to that assignment as a
student, and comment on the submission as the student.
3. Make an API call to get the submissions and their comments for the
assignment.
GET api/v1/courses/:course_id/assignments/:id/submissions?
include[]=submission_comments
Verify the submission comments that are returned have an 'edited_at'
key on them. The value of 'edited_at' should be nil for all comments.
4. Enter a rails console and update the 'comment' attribute on the
submission comment.
assignment = Assignment.find(<your-assignment-id>)
student = User.find(<your-student-id>)
submission = assignment.submissions.find_by(user_id: student)
comment = submission.submission_comments.first
comment.update!(comment: "i am updating the text on the comment!")
5. Make an API call to get the submissions and their comments for the
assignment.
GET api/v1/courses/:course_id/assignments/:id/submissions?
include[]=submission_comments
Verify the value of the 'edited_at' attribute for the comment you
adjusted in step 4 is a timestamp.
Change-Id: I4c91fdfd7a9cef194f08a2d086601fb827a50095
Reviewed-on: https://gerrit.instructure.com/127476
Tested-by: Jenkins
Reviewed-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
Closes PLAT-2819
Test Plan:
- Create a tool consumer profile associated with a
developer key that uses the newly added `vnd.Cavnas.User`
service.
- Install a plagiarism detection tool that uses the
new `vnd.Cavnas.User` service.
- Create an assignment in a course with students and
associate it with the tool.
- Make a request to `/api/lti/users/:user_id` with
the id of one of the students and no access token.
verify that you get a 401
- Make the same request but this time include an
access token. Verify the student details is returned.
- Make the same request but use the user's `lti_context_id`.
Verify that the user details is still returned.
- Remove the tool from the assignment and save the change.
- Make the same request and verify a 401 is returned.
- Verify the behaviors outlined above work when the tool
is installed in a course, account, and root account.
Change-Id: I81bd1446729d194f7f3910bca05638e57e5091d1
Reviewed-on: https://gerrit.instructure.com/126931
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
fixes CNVS-38591
when the inst-fs service is enabled, generate a preflight response
tailored for inst-fs instead of for S3. the service will then receive
the POSTed file data, generate it, and ping Canvas at the embedded
capture URL. compatible with existing Canvas UI.
along the way, some cleanup refactoring in api_attachment_preflight:
* instead of taking submission_context and inferring a folder from
that, have the submission API be responsible for determining the
folder and then just specify it. note that the folder inference was
the only use of submission_context, the submission API was the only
caller of api_preflight_json to specify submission_context, and the
folder option we took over was previously both broken and unused.
* simplify the remaining folder inference code. if a folder is
specified by the code (vs. the user in params), assume they have
necessary access (the :manage_contents permission would fail for a
student making a submission)
* correctly abort if params[:on_duplicate] is invalid. before, if the
UI provided an explicit but invalid value, it would cause a double
render error.
* inline process_attachment_params for update, and skip it on
preflight. the UI never provides any of the possible params but
display_name for preflight, which is then ignored from the
process_attachment_params result because it's treated separately
TODO: tests
* InstFS.upload_preflight_json
* api_attachment_preflight:
- uploading a file to a submission (submissions_api#create_file) when the
submissions_folder feature is enabled stores the file in the user's
submissions folder
- student uploading a file to a submission is not blocked by permissions
- user with :manage_contents permission on a folder is not blocked when
uploading to that folder
- user without :manage_contents permission on a folder is blocked when
attempting to upload to that folder
- no double render error on on_duplicate=invalid
- updates to lock_at, etc., on a file (via files#api_update) stick
* files#api_capture:
- reject if over quota and not flagged quota_exempt
- attachment.locked based on usage rights settings
- attachment.handle_duplicates
- content migration success callback triggered
* InstFS.authenticated_url:
- includes iat claim
- expiration is a timestamp
test-plan:
inst-fs upload happy path:
- have inst-fs service running, have canvas configured to be able to
find and share a secret with it, and enable the inst-fs plugin setting
- go to the files area, or a discussion, or a conversation, etc., and
upload a file.
- the file should be successfully uploaded
- NOTE: known issue, there seems to be a race condition in the service
responding 201 Created with a Location before Canvas is ready to
respond to that Location. This will make the upload appear to fail.
But if you refresh the page, the file should be present. This race
condition will be fixed in a later commit; it has already been filed
as a separate bug.
- attempt to download/preview the file
- download/preview should work, and should be served from inst-fs
quota enforcement:
- configure a course to have a quota
- select a file that should exceed that quota when uploaded
- bypassing the canvas UI, access the preflight endpoint directly
while providing the true size; preflight should fail
- access the preflight endpoint directly while providing a false size
that would fit inside the quota; preflight should succeed
- attempt to POST the file to the returned upload_url with the
returned upload_params; the upload should fail
locking pending usage rights:
- configure the account to lock files without usage rights
- upload a file
- the newly created file should be locked
- assign usage rights to the new file
- it should unlock
path collisions:
- upload a file to a folder
- upload a distinct file but with the same filename to the same folder
- should be prompted to rename or overwrite
- select rename; the newly uploaded file should have the filename
modified to avoid the collision
- repeat, but selecting overwrite; the filename should now refer to
the new file, and the old file should not be accessible in the UI
non-inst-fs unharmed:
- disable the inst-fs plugin setting
- do general regression tests on file uploads (whether S3 or local
storage)
Change-Id: I2bff1e3c31a3ed0955c29e677a422b7149253318
Reviewed-on: https://gerrit.instructure.com/124929
Tested-by: Jenkins
Reviewed-by: Andrew Huff <ahuff@instructure.com>
QA-Review: Collin Parrish <cparrish@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
Closes PLAT-2848
Test Plan:
- Enable the vericite plugin
- Create an assignment and associate it with a plag detection tool
- Set the visibility option to 'after grading'
- save the assignment
- edit the assigment and verify the visibility optoin is still
set to 'after grading'
Change-Id: Ic5a9f4ef8088661a1ff36d387c6496adaf4177be
Reviewed-on: https://gerrit.instructure.com/126816
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
fixes GRADE-174
Test Plan:
1. Create a course with at least one student
2. Create a new assignment with no overrides
- leave the due date blank
- press Save and Publish
3. Edit the assignment
- add an override for one student
- leave the due date blank
- press Save
4. Verify that the override is displayed correctly
on the assignment page
- first row titled "1 student"
- second row titled "Everyone Else"
Change-Id: I096f890cee807d1c62e8dd5785c123055b5a1b24
Reviewed-on: https://gerrit.instructure.com/126560
Tested-by: Jenkins
Reviewed-by: Neil Gupta <ngupta@instructure.com>
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: Pert Eilers <peilers@instructure.com>
Previoiusly, when viewing a section in the Gradebook as a teacher, if
the "Read SIS Data" permission wasn't enabled, there wasn't a
"Sync Grades" button. Now, the button is present in this scenario.
closes CNVS-39257
Test Plan:
1. Disable the "Read SIS Data" permission for teachers.
2. Create a course with a SIS ID.
3. Create two sections with SIS IDs.
4. Add a teacher to that course
5. Create an assignment.
6. Go to the assignments page and click the "sync to sis icon" next
to the assignment name.
7. As a teacher, go to the gradebook and notice the Sync Grades button.
8. Select an individual section, and notice there is still a Sync Grades
button.
Change-Id: I308e5b4eb23b18dc94cf8e5b6ea3f579e2ca9594
Reviewed-on: https://gerrit.instructure.com/126694
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
when deleting attachments permanently this will
now also delete the s3object. this also makes it
avoid FK error when there are children attachments
fixes CNVS-39122
test plan
- destroy_permanently_plus should work
- download submission zip and it should work
- download eportfolio export and it should work
Change-Id: Ie995b9b3fac739e8aa3e9554c819b263cb67026b
Reviewed-on: https://gerrit.instructure.com/125236
Tested-by: Jenkins
Reviewed-by: brian kirkby <bkirkby@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
test plan:
* file upload assignment submissions should work
and by default be copied to users'
"submissions" folder
closes #CNVS-39333
Change-Id: I747775150a8b03aa305b96cc840354045256430c
Reviewed-on: https://gerrit.instructure.com/126229
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: David Tan <dtan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
fixes OUT-518
test plan:
1. Select or create a course with three students.
2. Create an assignment.
3. Create an override for two of students.
4. Deactivate one of the students from the override.
5. Visit the Edit Assignment page for this assignment.
6. Change the date of the override.
7. Save the changes.
8. Verify the date was changed successfully.
Change-Id: Ibc3d07035c0a10ff0f3010909a149a722f762601
Reviewed-on: https://gerrit.instructure.com/125590
Tested-by: Jenkins
Reviewed-by: Matt Taylor <mtaylor@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Andrew Porter <hporter-c@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
also speed up some of the js_env data for sidebar
test plan:
* the api "Get blueprint information" endpoint
(e.g. /api/v1/courses/1/blueprint_templates/default)
for a blueprint template should
return an 'associated_course_count'
* also the blueprint sidebar should work as before
refs #CNVS-38933
Change-Id: Iea8d8cc6d67f0b53212f271afdcb6cc93cace3a8
Reviewed-on: https://gerrit.instructure.com/124442
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
refs CNVS-39375
test plan
- sis_login_id should not be returned
- it should be returned for the account if the
setting is set
Change-Id: I55c683d41ba7ff716de14df734b0b38f0877e7c5
Reviewed-on: https://gerrit.instructure.com/126052
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
fixes CNVS-39303
test plan
- set integration_id on user with no sis_id
- api should have sis_id attribute and
integration_id
Change-Id: Ia5da25bb9959dbc79aaadd31ea8e8aec36146a23
Reviewed-on: https://gerrit.instructure.com/126053
Tested-by: Jenkins
Reviewed-by: Tyler Pickett <tpickett@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
fixes OUT-996
test plan:
(I recommend having at least two browsers open, one logged in as a teacher
and one as a student, since you'll need to do a lot of switching)
- set up Canvas with CYOE, and ensure that the mastery paths
setting is enabled on the account
- create at least 4 quizzes that will be autograded (e.g. only multiple
choice or T/F questions)
- create some regular assignments that won't be autograded
- create some additional assignments. ensure that you don't assign the
assignment to everyone, only assign them to 'Mastery Paths'
- set up mastery paths on the quizzes and assignments with the additional
assignments, using at least three of each of the following setups for
each:
- single item in a path
- two or more items in a path
- add at least 2 of the quizzes to two modules, as well as the
assignments in their respective mastery paths
- add at least 2 more of the quizzes to other modules, and add assignments
that are NOT part of their respective mastery paths
- as a student, go to the show page of the various quizzes and original
assignments
- they should all indicate that the next mastery path is currently locked
- the 'Next' button should direct you to the course modules page
- as a teacher, go into course settings->Navigation and disable the
modules tab
- as the student, visit the show pages again. The 'Next' button
should be disabled, but the tooltip indicating that the path is locked
should still appear
- as a teacher, re-enable the modules tab
- The behaviors below should be observed in all quizzes unless otherwise
noted, regardless of whether or not the following items in the
respective module are in the quizzes mastery paths
- as a student, take a quiz with a single item in the path, on the
show/results page you should see one of two things, depending on
whether or not CYOE finishes assessing the item before the page is rendered
- it should state the next mastery path is currently processing, and
direct users to the course modules page when clicked
OR
- if the next item in the module was part of the quizzes mastery path,
it should show the newly unlocked item as being next. Otherwise, it
should simply show whatever is next in the module
- if you see the 'processing message above, refresh the page. by this point,
the 'Next' button should reflect the 2nd case mentioned above
- as a student, take the quiz that has a choice of one or another item set
- when you reach the results page, the 'Next' button should indicate that
the user needs to choose their next mastery path.
- clicking the button should take you to the path choose page
- select an item and return to the quiz show/results page.
- if the next item chosen was part of the module, the selected item should
now be shown on the 'Next' button. Otherwise, it should be whatever is next
in the module
- repeat the above steps for the originally created assignments. The only
different behavior that should be observed is that we should never have
to deal with a 'still processing' state, everything else should behave
the same as it did for the auto-graded quizzes
Change-Id: I8eb59cbbbbb4ccb65d3daa149c606c0168790509
Reviewed-on: https://gerrit.instructure.com/125409
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
QA-Review: Leo Abner <rabner@instructure.com>
Product-Review: Sidharth Oberoi <soberoi@instructure.com>
Tested-by: Jenkins
try to make sure that they're actually saving some data
but also don't explode on old invalid assessments
test plan:
* create an assignment with a rubric
* submit to the assignment
* use the assignment api show endpoint
(/api/v1/courses/X/assignments/Y)
and note the "rubric" object showing the criteria ids
* use the submissions api endpoint for
"Grade or comment on a submission"
and the "rubric_assessment" parameter
to save a rubric assessment, using the criteria ids
retrieved earlier
(e.g. "rubric_assessment[criteria_id][points]=5")
* try to use the same endpoint using
invalid criteria ids
* should receive a useful error instead of creating
a rubric assessment that can then break the
submissions api
closes #OUT-1416
Change-Id: Iedfdca8e8d871dcf49e3de1773fc7d74abc225d3
Reviewed-on: https://gerrit.instructure.com/125511
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Andrew Porter <hporter-c@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
* have a blueprint course with an associated course
* add an outcome to the blueprint course
* it should copy over to the associated course
closes #MC-290
Change-Id: I7baf402be34541db55bc7291b6ad8d1d5c85aae6
Reviewed-on: https://gerrit.instructure.com/125039
Tested-by: Jenkins
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
closes GRADE-157
this is currently hidden behind an environment variable until DocViewer
starts consuming this attribute and decides to expose it via a feature
flag
test plan:
* Setup the environment variable ANONYMOUS_INSTRUCTOR_ANNOTATIONS to
'true'
* Start Canvas
* Go to create an assignment and verify that it contains a checkbox to
anonymize instructor annotations for the new assignment
* Verify this checkbox works
* Edit the newly created assignment and verify the checkbox labelled
anonymize instructor annotations always accurately reflects the choice
made when saving the assignment
* Remove the ANONYMOUS_INSTRUCTOR_ANNOTATIONS environment variable
* Restart Canvas
* Go to create an assignment and verify it no longer contains a checkbox
to anonymize instructor annotations
* Edit the assignment you created earlier and verify it also no longer
contains a checkbox to anonymize instructor annotations
Change-Id: Ia43dee5c45ccd151319380e673d70dc509512ca8
Reviewed-on: https://gerrit.instructure.com/123646
Tested-by: Jenkins
Reviewed-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
Closes PLAT-2816
Test Plan
- Create a sub account
- In the sub account create a course and
install a plagiarism detection tool
- Create an assignment in that course and
verify the tool can be associated with
the assignment.
Change-Id: Ie4b6661c60f4832ba865658f28f8088fde00fa30
Reviewed-on: https://gerrit.instructure.com/125052
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
closes GRADE-172
Test Plan:
1. Verify the New Gradebook History page results includes a "Current"
grade column. The current grade should behave in the following ways:
a) The points possible should be shown if the assignment is currently
displaying grades as points and the current grade can be parsed as
a number.
b) If a current grade is not available (like if the submission has
been destroyed), the current grade should be displayed as "N/A".
Change-Id: Ie1b753962eec10933be8a3be3829c1e2419a643f
Reviewed-on: https://gerrit.instructure.com/124834
Tested-by: Jenkins
Reviewed-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Jeremy Neander <jneander@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
This currently does not expose a dropped mobile_teacher_state because
that concept isn't currently exposed in any meaningful way.
See also: GRADE-16
This API is undocumented by design.
closes: GRADE-168
Test Plan
=========
Base Case
---------
- Given an assignment with at least one submission
- When fetching the submissions API:
`/api/v1/courses/1/assignment/1/submissions`
- Then the fields `mobile_student_label` and `mobile_teacher_state`
are not present
Mobile Student Label Use Cases
---------------
Resubmitted:
- Given a submission that is resubmitted
- When fetching the submissions API with the string
'mobile_student_label' in the `include` query parameter:
/api/v1/courses/1/assignment/1/submissions?include[]=mobile_student_label
- Then the submission JSON includes a field 'mobile_student_label'
with the value 'resubmitted'
Missing:
- Given an assignment that is past due with no student submission
- When fetching the submissions API with the string
'mobile_student_label' in the `include` query parameter
- Then the submission JSON includes a field 'mobile_student_label'
with the value 'missing'
Late:
- Given an assignment that was submitted but was after the due date
- When fetching the submissions API with the string
'mobile_student_label' in the `include` query parameter
- Then the submission JSON includes a field 'mobile_student_label'
with the value 'late'
Submitted:
- Given an assignment that has as submission
- When fetching the submissions API with the string
'mobile_student_label' in the `include` query parameter
- Then the submission JSON includes a field 'mobile_student_label'
with the value 'submitted'
Unsubmitted:
- Given an assignment without a submission
- When fetching the submissions API with the string
'mobile_student_label' in the `include` query parameter
- Then the submission JSON includes a field 'mobile_student_label'
with the value 'unsubmitted'
Mobile Teacher State Use Cases
---------------
Excused:
- Given an assignment with an excused submission
- When fetching the submissions API with the string
'mobile_teacher_state' in the `include` query parameter:
/api/v1/courses/1/assignment/1/submissions?include[]=mobile_teacher_state
- Then the submission JSON includes a field 'mobile_teacher_state'
with the value 'excused'
Needs Review:
- Given a quiz with an essay question that needs review and student
submission for said quiz
- When fetching the submissions API with the string
'mobile_teacher_state' in the `include` query parameter
- Then the submission JSON includes a field 'mobile_teacher_state'
with the value 'needs_review'
Needs Grading:
- Given an assignment submission that hasn't yet been graded
- When fetching the submissions API with the string
'mobile_teacher_state' in the `include` query parameter
- Then the submission JSON includes a field 'mobile_teacher_state'
with the value 'needs_grading'
Graded:
- Given an assignment submission that has been graded
- When fetching the submissions API with the string
'mobile_teacher_state' in the `include` query parameter
- Then the submission JSON includes a field 'mobile_teacher_state'
with the value 'graded'
nil:
- Given an assignment submission that has been graded
- When fetching the submissions API with the string
'mobile_teacher_state' in the `include` query parameter
- Then the submission JSON includes a field 'mobile_teacher_state'
with the value null
Also test with quiz submission
Change-Id: Icbc784b47ecc3baecb770703a9515b52b326e347
Reviewed-on: https://gerrit.instructure.com/123007
Reviewed-by: Spencer Olson <solson@instructure.com>
Tested-by: Jenkins
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
QA-Review: Taylor Wilson <twilson@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
fixes CNVS-36185
test plan:
- record/upload video file through tinymce "Record/Upload Media" button
- before recording/uploading the the media, enter text into the Title field
- finish recording/uplading the media and the dialog will dismiss adding
your recording to tinymce
- switch view to HTML edit mode and verify that the alt tag has your title
- save the comment/page/whatevs
- refresh the page and inspect the thumbnail button
- verify the alt text is included on the anchor tag
- edit the page/comment/whatevs and verify the alt text carries into the edit
- rejoice!
Change-Id: I5ab76688315c668b3c0fe1d06f7ff642650fc4e0
Reviewed-on: https://gerrit.instructure.com/122074
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: brian kirkby <bkirkby@instructure.com>
Closes PLAT-2779
Test Plan:
- Create an assignment with a plagiarism detection tool
associated. Set the 'Show originality report to students'
to 'Never'.
- Create an originality report for a submission and
verify it is not visible to the student on the submission
details page or grades summary page. It should still be
visible to the teacher.
- Edit the assignment and change the visibility option to
'After the due date'. Also set the due date to a date/time
in the past.
- Verify the originality report is now visible to the student in
the submission details page and grade summary page (note that
you may need to flush redis).
- Create a new assignment associated with a plagiarism detection
tool and set the visibility option to 'After the assignment
is graded'.
- Create a submission and an originality report.
- Verify that the student cannot view the originality report
until the assignment has been graded by the teacher.
- Edit the assignment and change report visibility
to Immediately. Verify that the student can still
view the originality report.
Change-Id: I35a4e87275577b5b5d9cc0c1ce3501a5ae048a79
Reviewed-on: https://gerrit.instructure.com/123766
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Tested-by: Jenkins
Product-Review: Jesse Poulos <jpoulos@instructure.com>
so we don't constantly refetch the same data when running
progressions
test plan:
* module progressions with assignment overrides
should work as before
closes #CNVS-38735
Change-Id: If85cb5f6d736eaebdcd84a5e16fcf1b243ec42aa
Reviewed-on: https://gerrit.instructure.com/123268
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
closes GRADE-171
There are some edge cases where if the assignment went from points
based to non-points based and vice versa, grades will not show up
with points possible or they show up as the non-points based type
with a points possible. Examples are "100" alone and "A/100".
Test Plan
1. Grade some points based assignments.
2. Grade some non-points based assignments.
3. Check the history page; the points based assignments show a points
possible that the assignment was out of. The non-points based
assignments do not show points possible.
4. Change the points possible on a points based assignment.
5. Re-grade that assignment.
6. Check the history page; the new entries from Step 5 show up with
the new points possible. The old entries from before Step 4 show
with the old points possible.
Change-Id: Id7a4e20622daf021047e378815dea2f8ed6ace9c
Reviewed-on: https://gerrit.instructure.com/122817
Reviewed-by: Brian Park <bpark@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
Tested-by: Jenkins
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
Fixes: SIS-2912 and SIS-2915
Test plan:
- Enable SIS feature options
- Navigate to a course
- Confirm you can create an assignment with post_to_sis checked
- Confirm you can create an assignment without post_to_sis
checked
- Edit the assignment
- Check post_to_sis and add a due date for Everyone Else
- Confirm the assignment saves
Change-Id: I921343525713747e3a1fb7a0242ae62826c163f8
Reviewed-on: https://gerrit.instructure.com/122693
Reviewed-by: Michael Brewer-Davis <mbd@instructure.com>
Product-Review: Brad Humphrey <brad@instructure.com>
Tested-by: Jenkins
QA-Review: Mark McDermott <mmcdermott@instructure.com>
closes CNVS-38670
test plan:
- perform a search with the recipient search api
(/api/v1/search/recipients)
- result should include full_name for users
Change-Id: I1ac89ac35448bf3ca68b754ca5fefb794e97d4e3
Reviewed-on: https://gerrit.instructure.com/122709
Tested-by: Jenkins
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
fixes gh-1095
test plan
- api should have restrict_enrollments_to_section_dates
Change-Id: I4b3eb38bafefe09c1fbaccc95cd4450c425a821a
Reviewed-on: https://gerrit.instructure.com/122770
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
closes CNVS-38354
test plan:
- hit the CommMessages api
- it should return `from` and `from_name`
Change-Id: Ie06a09e778a3f0098a1ae80cd5bfc237014715bb
Reviewed-on: https://gerrit.instructure.com/120316
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
closes CNVS-38163
test plan:
- run Setting.set('content_migrations_expire_after_days', '1')
- create some content imports if you don't already have any
- ContentMigration.where(id: ContentMigration.last.id).
update_all(created_at: 2.days.ago)
- visit the course content import page
- it should show as unavailable
Change-Id: I0491a1f1e292c0d9ded2ca202bd2cd997839a4bf
Reviewed-on: https://gerrit.instructure.com/118714
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
there is a measurable cost associated to this step of api content
transformation, so only run it on types of url attributes that might
actually need to be rewritten (ignore mathml href's)
fixes CNVS-38442
test plan:
- create a submission with a lot of <p> tags
- request it from the API
- performance should be better
- now create a link/image to something root-relative in canvas
- request it from the api
- it should come back as absolute
Change-Id: I21fc42db25e84e70a0d19db7dc271cfd46801ecb
Reviewed-on: https://gerrit.instructure.com/122400
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
fixes GRADE-75
test plan:
* Create a Quizzes.Next quiz
* Complete the quiz as 2 different students
* As the teacher, access the quiz in speed grader
* Adjust the fudge points for the first student
* Navigate to the second student and then back to the first student
* The quiz should still be visible
Change-Id: I4cd9d743f8a2c0c5b511f8f5615c8ed0edc81991
Reviewed-on: https://gerrit.instructure.com/122041
Reviewed-by: Brian Park <brian@siimpl.io>
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Tested-by: Jenkins
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
closes: GRADE-133
Test Plan:
1. Navigate to gradezilla
2. Change some late policy values in settings cog menu
3. Observe that upon clicking 'Update' in the menu,
all late and missing assignments are updated to show
the new grades.
- Late submission deductions are applied when enabled
- Late submission deductions are updated when penalty
value is changed
- Late submission deductions persist when late
deductions are turned off
- Missing submission grades populated when policy set
- Does not affect existing grades!
- Missing submission grades unchanged when policy unset
- Submissions in closed grading periods are unaffected
by any late or missing policy changes
Change-Id: I6d0f759a1653ab58a749a9d7b0b95eff453a432c
Reviewed-on: https://gerrit.instructure.com/119148
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Tested-by: Jenkins
Reviewed-by: Neil Gupta <ngupta@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
refs FALCOR-544
refs FALCOR-539
Test plan
- Create some grading items and some discussions/announcements
- Ensure they are not showing up with the new_activity flag
- in the API yet
- Ensure they do not show new_activity for submissions
- Grade or add feedback to the grading items
- Reply to the discussion/announcements
- Ensure that the api now does show new_activity
Change-Id: I8cf448c3296c21057aba9a9006b8efd8044986bd
Reviewed-on: https://gerrit.instructure.com/120658
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: David Mirabile <dmirabile-c@instructure.com>
Product-Review: Christi Wruck
refs PLAT-2708
Test Plan:
- Create a developer key through the Canvas UI and
verify that a new vendor code text input is
available and optional.
- Verify each of the following:
* If a vendor is associated with a devloper key they
must use one of the associated developer keys
when registering.
* If a vendor is associated with a developer key
they may not register without using a
developer key.
* If a vendor is associated with a developer key
they may not use a developer key other than
one they are associated with to register.
* If a vendor is not associated with a developer key
they must register without a developer key.
Change-Id: I9c9974706f542c1442988634790656da1c407cb8
Reviewed-on: https://gerrit.instructure.com/118592
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Nathan Mills <nathanm@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Tested-by: Jenkins
Product-Review: Jesse Poulos <jpoulos@instructure.com>
fixes CNVS-38231
test plan
- delete an admin
- admin should be gone from every where
- admin should not have permissions to do stuff
Change-Id: I56c90a12b2be879c5d646c1ab6980693ff161673
Reviewed-on: https://gerrit.instructure.com/119220
Reviewed-by: Tyler Pickett <tpickett@instructure.com>
Tested-by: Rob Orton <rob@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
Change-Id: I2f4ca4a671a0e5bdcfbeb90b4714465ec34acc9f
Reviewed-on: https://gerrit.instructure.com/120891
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
adds sorting to the 'Courses' and 'SIS ID' columns of the Courses tab
and the 'Name' and 'Last Login' columns of the People tab
closes CNVS-33425
test plan:
- turn on Account Course and User Search feature flag
- go to /accounts/1/search/courses
- make sure Courses and SIS ID columns are clickable and sortable
- make sure that keyboard interaction and a11y looks good
- go to /accounts/1/search/people
- do the same for the Name and Last Login columns of the People tab
add sorting by Teacher column in courses
add sorting by first alphabetical teacher to
the 'Teacher' column of the Courses tab
test plan:
- turn on Account Course and User Search feature flag
- go to /accounts/1/search/courses
- make sure the Teacher column is clickable and sortable
- make sure that keyboard interaction and a11y look good
add sorting by Enrollments column in courses
add sorting by number of students enrolled to
the 'Enrollments' column of the courses tab
test plan:
- turn on Account Course and User Search feature flag
- go to /accounts/1/search/courses
- make sure the Enrollment column is clickable and sortable
- make sure that keyboard interaction and a11y look good
add sorting by Email and SIS ID columns in People
add sorting by 'Email' and 'SIS ID' columns of
'People' search tab
test plan:
- turn on Account Course and User Search feature flag
- go to /accounts/1/search/people
- make sure the Email column is clickable and sortable
- make sure the SIS ID column is clickable and sortable
- make sure that keyboard interaction and a11y look good
change UserPane to extend React.Component
change UserPane.js to be a class that extends React.Component
instead of using the old React.createClass
test plan:
- go to /accounts/1/search/people
- make sure the user search feature works the same as before
fix queries and lint warnings
fix SQL queries based on Tyler's suggestions
and fix some lint warnings throughout
test plan:
- go to /accounts/1/search/courses
- make sure sorts still work
- make sure queries are as correct and efficient
- go to /accounts/1/search/people
- do the same
- make sure Gergich is relatively happy
sort teachers in course and lint fixes
change course search so that teachers are sorted alphabetically
within a course (if it has multiple teachers). also a few lint
fixes here and there.
test plan:
- go /accounts/1/search/courses
- make sure that teachers are sorted within a course
Change-Id: I710878bd8ce98ba2fa4eb0c357721864df338939
add a sortable column for subaccounts to course search
add a new column to course search for subaccount
make it sortable like the other columns
test plan:
- turn on Account Course and User Search feature flag
- go to /accounts/1/search/courses
- make sure the correct subaccounts are showing
- make sure the subaccount column is clickable and sortable
- make sure that keyboard interaction and a11y look good
Change-Id: Ic8b8f258c27c16982a450286f6b715c9e04d425e
fix focus for keyboard navigation in Course Search sorting
prevent the CoursesList from rerendering sometimes on sorts
so that it doesn't lose focus
test plan:
- turn on Account Course and User Search feature flag
- go to /accounts/1/search/courses
- make sure keyboard interaction doesn't lose focus
Change-Id: I6236c92f6e71596d3dc38ef756e6ac808e9e99c2
fix invalid email sorting in User Search
fix the sorting of invalid emails in User Search
so that invalid emails (that don't show up) come last
test plan:
- turn on Account Course and User Search feature flag
- go to /accounts/1/search/courses
- make sure that invalid blank emails are sorted last
Change-Id: I56e6b1e57a1d494e7667c3cfc7b14a10976ec52e
fix invalid emails showing in User Search
fix User Search so that invalid emails don't display when
the "Load More..." button is pressed
test plan:
- turn on Account Course and User Search feature flag
- go to /accounts/1/search/courses
- have more than 10 users so "Load More..." is there
- click "Load More..." and make sure invalid emails don't display
for the newly-loaded users
Change-Id: I5bc23c616ae88da73f8632699c3bde1bffee994d
fix IE11 User Search sorting issue
fix User sorting in IE11 so that it doesn't go back to the
Courses tab when trying to sort
test plan:
- use IE11
- turn on Account Course and User Search feature flag
- go to /accounts/1/search/people
- make sure sorting works (doesn't take you to Courses tab)
Change-Id: I63491ca0b08812e21ed0ed2eb2f8a4bd1b791b89
fix add user in User Search bug where email doesn't show up
fix User Search so that when a user is added, their email
shows up without refreshing the page
test plan:
- turn on Account Course and User Search feature flag
- go to /accounts/1/search/people
- add a new user with a valid email
- make sure it displays before refreshing
Change-Id: Ib339bab3ea858c7c1ab18a6065ef4936941cb24b
remove debugger
Change-Id: Ibf88893ea35d795d8966c7580100ac135c8cfe93
Reviewed-on: https://gerrit.instructure.com/120294
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Andrew Katsanevas <akatsanevas@instructure.com>
closes CNVS-38022
test plan:
* regression test Gradezilla with grading periods, especially:
* filtering by grading periods
* sorting by grading periods
* grade locking (closed grading period grade protection)
Change-Id: Ic03e00cbe428e57bd0df7f29f1193deb1945d4a4
Reviewed-on: https://gerrit.instructure.com/119438
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Pert Eilers <peilers@instructure.com>
Fixes: SIS-2869, SIS-2768
Notes: This commit is also for Mastery Paths.
Repeat the first six steps for Mastery Paths.
However, instead of a section override create
a Mastery Path override. If you need help
setting up Mastery Paths ping me.
Test plan:
- Enable the new SIS integration settings
- Check the `Require due date` setting
- Navigate to a course with more than one section
- Navigate to the assignments tab
- Create an assignment with one section override and
add a due date
- Confirm the assignment saves
- Repeat the same steps with two section overrides
- Confirm the assignment saves
Change-Id: I4ce249f24e381fb14698a784b6cf80d4dc839c31
Reviewed-on: https://gerrit.instructure.com/115330
Reviewed-by: Brad Humphrey <brad@instructure.com>
Product-Review: Brad Humphrey <brad@instructure.com>
QA-Review: Mark McDermott <mmcdermott@instructure.com>
Tested-by: Jenkins
Change-Id: Ieef3d3447cfa2b22c9c9f6662688a40ae48a726c
Reviewed-on: https://gerrit.instructure.com/119730
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Replace crocodoc_ids with moderated_grading_ids
Both canvadocs and crocodoc can use the ids now
refs RD-4238
Test Plan:
With a course that has one teacher, 2 TAs, and a student
- Create an assignment, check the moderated grading check box
- as the student submit the assignment
- as a TA, pull up the submission in speed grader, annotate and grade it
- as the Other TA, open the submission in speed grader
- make sure you cant see the first TAs comments
Change-Id: I886af3e21f9276866ea4be8d5de6574b32e5f122
Reviewed-on: https://gerrit.instructure.com/117360
Tested-by: Jenkins
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Product-Review: Caleb Guanzon <cguanzon@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
Change-Id: I6beefb3ca636e1915e9cdd173c04d3aa4bac07bc
Reviewed-on: https://gerrit.instructure.com/118923
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Change-Id: I7ffe15c36ba0699d704f568590a6b6afe4916fd9
Reviewed-on: https://gerrit.instructure.com/118680
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
closes: CNVS-37839
Test Plan:
1. As a teacher, navigate to SpeedGrader for an
assignment with at least one late submission
2. Switch student to one that has a late, penalized submission
3. Observe that:
- Unpenalized grade is displayed in input field
- Penalty is displayed below input field
- Modified grade is displayed below input field
4. Repeat 1-3 for assignments of all `grading_type`s
- Known issue: 'pass_fail' assignments do not
display the points correctly if they have an
existing late deduction. To be addressed in
future ticket.
5. Repeat with provisional grading
- Observe thate late penalty stuff doesn't apply
to provisional grades
Change-Id: Ie0acc835d9565faa9226c6969c70b4e8c5d0220e
Reviewed-on: https://gerrit.instructure.com/117217
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Sheldon Leibole <sheldon@siimpl.io>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
refs FALCOR-453
Test plan
- Ensure that planner overrides can have dismissed
- attributes added both during update and create
- Ensure the dismissed attribute shows up in the
- planner items api
- Ensure the dismissed attribute shows up in the
- missing submissions api, if you include overrides
Change-Id: I28faa856b65ecf6b931761c89eb6ac337848e25c
Reviewed-on: https://gerrit.instructure.com/117965
Reviewed-by: Dan Minkevitch <dan@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Mysti Sadler <mysti@instructure.com>
test plan:
- in a course, create appointment groups with both
individual and group signup
- as a student, sign up for both
- ensure that, when you click the appointments as a student,
you don't see the "Group Options" and "Delete" buttons
- ensure that a teacher does see this in both places
fixes CNVS-37047
Change-Id: I5b31cfd4587db9365fd9a0ddafdb920035eade3f
Reviewed-on: https://gerrit.instructure.com/118180
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: David Tan <dtan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Remove documentation for accepted_at on submissions, because it is
going to get replaced by seconds_late. Also, no longer return the
accepted_at attribute in the submissions API. Finally, rename
duration_late to seconds_late, because in the change to replace
accepted_at with seconds_late, that method will no longer return
a Duration; it will return an integer number of seconds.
closes CNVS-38000
Test Plan:
1. Verify responses from the submissions API no longer return the
accepted_at field on submissions.
2. Verify responses from the submissions API now return a field named
seconds_late instead of duration_late
3. Verify the submissions API documentation no longer includes
information about the accepted_at field, and documentation for
duration_late has been renamed to seconds_late.
Change-Id: I903dedd45bcb822109d78ff815d6cecd2feb2a8d
Reviewed-on: https://gerrit.instructure.com/117657
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Tested-by: Jenkins
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: KC Naegle <knaegle@instructure.com>
Product-Review: Neil Gupta <ngupta@instructure.com>
fixes CNVS-37888
test plan
- run a sis import with more than 50 errors
- should have all the errors in the error file
and not just the first 50
Change-Id: Ib927b0aef1367ca7a7d21040d8eecdb80d341301
Reviewed-on: https://gerrit.instructure.com/117762
Tested-by: Jenkins
Reviewed-by: Tyler Pickett <tpickett@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
Fixes CNVS-37395
Test plan:
* Create a course with 2 students
* Create an assignment with a due date for everyone
* Create a differentiated assignment with a due date for only 1 student
* In rails console:
* Run `DueDateCacher.for_course(course_id)
* Make sure `Submission.count` is 3
* Make sure the first assignment has 2 placeholder submissions
* Make sure the second assignment only has one placeholder submission
Change-Id: I5c8084d4fb0138f65e4c117dcc97638cf8d4f49d
Reviewed-on: https://gerrit.instructure.com/114573
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Product-Review: Neil Gupta <ngupta@instructure.com>
QA-Review: Neil Gupta <ngupta@instructure.com>
Fixes FALCOR-422
Fixes FALCOR-426
Test Plan:
* As a student
* In a course with Student Planner enabled
* And existing Planner Notes
* GET, PUT, POST, and DELETE from the `api/v1/planner_notes`
endpoint
* The responses should all be JSON formatted correctly and
return string IDs when the `Accept:
application/json+canvas-string-ids` header is passed
* The `GET` index/list endpoint should not return deleted notes
Change-Id: I2435d62e8794aacbd4bb2d9484f9e89170187f4e
Reviewed-on: https://gerrit.instructure.com/116980
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
fixes CNVS-37717
test plan
- run sis import that would generate errors
- the json for the import api should have an
errors_attachment object
- the ui should have a download file option
Change-Id: I2c6f94b601be5777b8a57f4b5b56f9f2215869ec
Reviewed-on: https://gerrit.instructure.com/116523
Tested-by: Jenkins
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
Closes PLAT-2686
Test Plan:
- As a student create submissions for several assignments
- Retrieve gradebook history via the api for that student:
/api/v1/courses/<id>/gradebook_history/feed?user_id=<id>
- Verify that an n+1 query does not occure for originality
reports. (the repeating query we want to avoid look something like this:
SQL OriginalityReport Load (4.1ms) SELECT "originality_reports"
.* FROM "originality_reports" WHERE "originality_reports"
."submission_id" = 55487625)
Change-Id: Id5ba23772bc3eaa3b7ac253b4e6c61a8744ed6b3
Reviewed-on: https://gerrit.instructure.com/116270
Tested-by: Jenkins
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
refs FALCOR-333
Test plan
- Create a quiz planner override for a quiz/announcement in Canvas
- POST /api/v1/planner/overrides -d 'plannable_type=quiz'
- POST /api/v1/planner/overrides -d 'plannable_type=announcement'
- Call GET /api/v1/planner/items and ensure the override
- shows up for that quiz/announcement
- Create a overrides on discussion topics/wiki pages
- or other types of items that could be graded
- and ensure they show up in the planner items override
Change-Id: I1bc18b7d80199bdad0cb59f7f27ab44c08442e64
Reviewed-on: https://gerrit.instructure.com/116015
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Dan Sasaki <dsasaki@instructure.com>
Product-Review: Mysti Sadler <mysti@instructure.com>
Closes FALCOR-375
Test Plan:
* As a student
* In a course with Student Planner enabled
* With various learning objects with associated
todo_dates, due dates, posted dates, etc
* GET /api/v1/planner/items
* The response should contain a `plannable_date` for each
object, with the date reflecting (in order of presence)
todo_date, due_at, posted_at, or created_at
Change-Id: I3058f265cd91ef4e4f41b1266958a6cc049f213b
Reviewed-on: https://gerrit.instructure.com/116233
Tested-by: Jenkins
Reviewed-by: Mysti Sadler <mysti@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
Closes FALCOR-325
Fixes FALCOR-361
Test Plan
Date Range Testing:
* With "Student Planner" enabled
* As a student
* Make a GET request to /api/v1/planner/items
with ?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD&filter=new_activity
* The response should only contain results with new activity
between those time ranges (test with dates and dates with times)
Pagination Testing:
* With "Student Planner" enabled
* As a student
* Make a GET request to /api/v1/planner/items
with some combination of start_date, end_date, and filter
* Include a a `per_page` param
* The response should only contain only `per_page` number of
results
* The response should contain a `Link` header with links to the
current, next, and previous pages (you should see a URL with
a `page=bookmark:[bunch of characters]`)
* Copy the `page` param from the `Link` header for the next
page of results
* Make a request with the newly copied `page=bookmark:[stuff]`
parameter added to the request
* You should get the next page of results in the response
* The previous and next URLs in the `Link` response header should
return the previous and next page of results
Regression Testing:
* Full regression test of "New Student Planner"
Change-Id: Ie6352aec71f5de3c60981aaeee65119cc43ed6f7
Reviewed-on: https://gerrit.instructure.com/114848
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
test plan:
- set an account to default post_to_sis on
- create an assignment via the api with post_to_sis = false
- verify that the assignment was created with post_to_sis = false
fixes SIS-2871
Change-Id: I0eda67788445ad3899f80acf3e1a768dd3b63f3e
Reviewed-on: https://gerrit.instructure.com/115859
Reviewed-by: Nick Houle <nhoule@instructure.com>
QA-Review: Mark McDermott <mmcdermott@instructure.com>
Tested-by: Jenkins
Product-Review: Brad Humphrey <brad@instructure.com>
Closes FALCOR-361
Test Plan:
* With "Student Planner" enabled
* As a student
* Make a GET request to /api/v1/planner/items
with ?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD&filter=new_activity
* The response should only contain results with new activity
between those time ranges (test with dates and dates with times)
Change-Id: I575d99fba4128b695f38bb552c82ad9414137fca
Reviewed-on: https://gerrit.instructure.com/116101
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
fixes gh-1055
test plan
- Execute API call to get a list of external tools associated with a group:
GET /api/v1/groups/2921/external_tools?include_parents=true
- Examine the headers on the response. The Link header for retrieving more pages should point at:
/api/v1/groups/2921/external_tools?include_parents=true&page=2&per_page=10
Change-Id: Ied9bdb3ea36384faa2148f199047bebe87837aed
Reviewed-on: https://gerrit.instructure.com/115211
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
closes CNVS-31861
test plan:
* Create a course without any modules and ensure it has at least
two assignments and two students enrolled in it
* Create a course with two modules and at least two assignments
in each module and an additional two assignments outside of
any modules
* Go to Gradezilla for Course 1
* Verify that the "View > Arrange By" menu does not show any way
to sort by modules
* Go to Gradezilla for Course 2
* Verify that the "View > Arrange By" menu shows two new options
labelled
- "Modules - First to Last"
- "Modules - Last to First"
* Choose "View > Arrange By > Modules - First to Last"
* Verify that the assignment columns are arranged in the same
order as they are on the modules page
* Verify that all assignments not in any modules show up at the
end of the assignment columns
* Verify that all assignments not in any modules show up in the
same order as they are on the assignments page
* Choose "View > Arrange By > Modules - Last to First"
* Verify that the assignment columns are arranged in the reverse
order of the one they are in on the modules page
* Verify that all assignments not in any modules show up at the
front of the assignment columns
* Verify that all assignments not in any modules show up in the
same order as they are on the assignments page
* Go to the Modules page and drag/drop the assignments and
modules to different locations and verify those orders are
preserved when you go to Gradezilla and arrange assignment
columns by modules.
* Go to the Assignments page and drag/drop the assignments and
verify those orders are preserved when you go to Gradezilla
and arrange assignment columns by modules
Change-Id: I4a4b56f18c7a24272d6c11590bdc8a0d9d55c356
Reviewed-on: https://gerrit.instructure.com/114485
Tested-by: Jenkins
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: KC Naegle <knaegle@instructure.com>
Product-Review: Christi Wruck
Closes FALCOR-332
Test Plan:
* As a student
* In a course with the new Student Planner enabled
* With assignments that have submissions
with comments/feedback, as well as unread
discussion topics
* GET /api/v1/planner/items?filter=new_activity
* It should respond with only those items that have
unread/unviewed activity
* Additionally, the `submitted` key in the `submissions` object
should be `true` for items with submissions
Change-Id: I776ef9113e6c29f9958c8a22ff86227daf88239c
Reviewed-on: https://gerrit.instructure.com/114730
Tested-by: Jenkins
Reviewed-by: Mysti Sadler <mysti@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
Closes FALCOR-345
Test Plan:
* As a student
* In a course with "Student Planner" enabled
* With missing submissions for the current user
* And planner overrides created for at least one
of the missing assignments
* GET /api/v1/user/:user_id/missing_submissions
* The endpoint should return missing submissions
* Repeat the request with `?include[]=planner_overrides` passed
as a parameter/query string
* The response should be the same as above, but include a
`planner_override` key that contains the JSON data for the
associated planner override
Change-Id: Ibcd809a6344c5ceef7018fdf9027da1f4b1d784e
Reviewed-on: https://gerrit.instructure.com/115179
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
closes OUT-1317
Test plan:
1. Create a course in Canvas
2. Visit
domain.canvas/api/v1/courses/<course_id>
3. Verify that "uuid" field is present in JSON
response
Change-Id: I4a504061a0af55ce635be13e71fa873abd88748c
Reviewed-on: https://gerrit.instructure.com/114839
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
QA-Review: Leo Abner <rabner@instructure.com>
Product-Review: Michael Brewer-Davis <mbd@instructure.com>
Closes PLAT-2544
Test Plan:
- Create a course with a student and a tool that allows
the student to return an ltiLaunchUrl as an outcomes
service message.
- Submit to the assignment as the student
- Go to the gradebook and click the comment bubble to open a modal
- Verify the submission URL does the LTI launch
returned when the submission was created.
Change-Id: I61bf8d0cb9205d3bef864b64f0ebe392c118ded1
Reviewed-on: https://gerrit.instructure.com/114303
Tested-by: Jenkins
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
fixes CNVS-36193
test plan
- have enrollments in a course
- update the course or sections workflow_state to
‘deleted’ through a sis import
- hit the enrollments api for a user
- the enrollment_state should be ‘deleted’
GET /api/v1/users/:user_id/enrollments
Change-Id: I93c4be2be6851e8cbd986d405f544338b840f715
Reviewed-on: https://gerrit.instructure.com/112472
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
Closes FALCOR-297
Test Plan:
* As a student
* In a course with the new Student Planner enabled
* With assignments with various submission states
such as missing, late, graded, excused, etc
* GET /api/v1/planner/items
* The response should contain a "submissions" key
whose value is reflected by the current status of the
assignment, if it can be submitted, or `false` otherwise
Change-Id: I5c6703f930d7c5c13c77fdea8e01c6e31946ce43
Reviewed-on: https://gerrit.instructure.com/114007
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
test plan:
- render API documentation
- ensure links between blueprint and associated endpoints
work properly in API documentation
- ensure the link from "Set or remove restrictions" to the
"Course API Update" link works properly in API docs
- ensure teachers in associated courses who are not
enrolled in the blueprint and not account admins
can use the three endpoints in "Associated Course History"
and that these work as expected
- the notification links for teachers should be as follows:
#!/blueprint/blueprint_subscriptions/X/Y
where X is the BlueprintSubscription ID
and Y is the ContentMigration ID
- the notification links for admins should be as follows:
#!/blueprint/blueprint_templates/X/Y
where X is the MasterTemplate ID
and Y is the MasterMigration ID
(note that making these links work is MC-217)
closes MC-215
Change-Id: I3b0462faf888f8df91cfbd0acb1566da3d60bebc
Reviewed-on: https://gerrit.instructure.com/112840
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Closes FALCOR-261
Test Plan:
* With the student planner feature enabled
* As a student
* Create a Planner Note via the API
POST /api/v1/planner_notes
todo_date: today
* List the Planner Items via the API
GET /api/v1/planner/items
* Your newly created note should be included
in the returned list of planner items
Change-Id: I609f4e0cbd205a66e08215948bde183d1dc62202
Reviewed-on: https://gerrit.instructure.com/113504
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
Added the new field of points_deducted and duration_late as default
fields to the submission_json method. Also removes the unused late?
method from QuizSubmission
closes CNVS-32371
test plan:
- Have a course with a student and an assignment
- Hit the API endpoint of /api/v1/courses/{course_id}/assignments/{assignment_id}/submissions
- note the presense of the points_deducted and duration_late fields
Change-Id: I0047cf7d78973bd7602ca373ac5b7d11dd5f2ff4
Reviewed-on: https://gerrit.instructure.com/113039
Reviewed-by: Brian Park <brian@siimpl.io>
Tested-by: Jenkins
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
closes FALCOR-260
Test plan
- Set up some Wiki Pages with to do dates
- Call API /api/v1/planner/items as a student
- Ensure pages are shown if the student should
- see them
- Ensure the student doesn't see pages they shouldn't
- (ie, conditional release, or missing todo dates)
Change-Id: I6cf45e1c19f5a8314912814d9b0263857ce5edb5
Reviewed-on: https://gerrit.instructure.com/112482
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Dan Sasaki <dsasaki@instructure.com>
Product-Review: Mysti Sadler <mysti@instructure.com>
closes gh-979
test plan:
- basic regression of creating/editing assignments
- create api call should return 201, update should return 200
Change-Id: I8af9170c1432ff5124b09ace61fcb7b8bb5ae16d
Reviewed-on: https://gerrit.instructure.com/112570
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
Closes FALCOR-183
Closes FALCOR-185
Closes FALCOR-257
Test Plan:
* With new planner enabled
* As a student
* With assignments that have submissions
* Hit the `api/v1/planner/items` endpoint
* See that the submitted assignments are included
in the response
* Hit `api/v1/planner/items?due_after=YYYY-MM-DD`,
`api/v1/planner/items?due_before=YYYY-MM-DD`, &
`api/v1/planner/items?due_before=YYYY-MM-DD&due_after=YYYY-MM-DD`,
replacing YYYY-MM-DD with some date in that format
* The response should only contain objects within that range
* Hit any of the above URLs, appending `&per_page=X&page=Y`,
replacing `X` with a limit for number of items returned,
and `Y` with the page of items to return
* The response should contain `X` amount of objects, starting
from page `Y`
Change-Id: I63fc108107fda07f674ef7a5465125b185c0c510
Reviewed-on: https://gerrit.instructure.com/112386
Reviewed-by: Mysti Sadler <mysti@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
closes CNVS-37071
test plan:
- export course content, user content, and a folder
- tweak their created_at dates
- try different values of Setting.get('content_exports_expire_after_days', '30')
- the UI should show expired and api should not return an attachment url
Change-Id: I91923666752bc1e5d11f1e5319a83e040a363d41
Reviewed-on: https://gerrit.instructure.com/112720
Reviewed-by: Rob Orton <rob@instructure.com>
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-31858
test plan
- Given a gradezilla enabled gradebook
- Given submissions that are late, missing, resubmitted, dropped, and
excused
- When a submission is late
- Then the cell color is blue
- When a submission is missing
- Then the cell color is purple
- When a submission is resubmitted
- Then the cell color is green
- When a submission is dropped
- Then the cell color orange
- When a submission is excused
- Then the cell color is yellow
- Given multiple students in the course to verify zerbra striping of
state colors
- When on the gradebook page
- Then even rows are lighter
- Then odd rows are darker
Change-Id: I9231f454b6982e1c7dc9c95d5eaed11140d2d3bc
Reviewed-on: https://gerrit.instructure.com/110818
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Tested-by: Jenkins
QA-Review: KC Naegle <knaegle@instructure.com>
Product-Review: Christi Wruck
Fixes CNVS-32372
Test plan:
* Create a course
* Enroll a student
* Create an assignment
* As a teacher, hit the submissions update API endpoint
(PUT "/api/v1/courses/#{course.id}/assignments/#{assignment.id}/submissions/#{student.id}.json")
and pass:
submission: {
late_policy_status: 'missing'
}
* Make sure the json response includes the right late policy status.
* Load the submission in rails console and make sure its late policy
status is set.
You can pass 'missing', 'late', 'none', or null for late policy status
If status is 'late', then you can also include an `accepted_at`
timestamp that should also persist. If status is anything else,
accepted_at will be automatically cleared and fall back to submitted_at
Change-Id: I7f4032af520c44e5095da95ead03f0c0c987ef3f
Reviewed-on: https://gerrit.instructure.com/111439
Tested-by: Jenkins
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Matt Taylor <mtaylor@instructure.com>
QA-Review: KC Naegle <knaegle@instructure.com>
Product-Review: Neil Gupta <ngupta@instructure.com>
refs CNVS-35978
test plan
- run report
- it should have current_line
Change-Id: Ic60b1421e38a2b2d66604fbb14c1063925965dc6
Reviewed-on: https://gerrit.instructure.com/106951
Tested-by: Jenkins
Reviewed-by: Tyler Pickett <tpickett@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
closes FALCOR-223
Test plan
- As a teacher, edit a course discussion or
- a group discussion (account or course) and
- verify the checkbox shows up
- Verify that you can select the checkbox to
- make the date input field show up
- Verify that if you do not input a date, it
- gives you an error message on save
- Verify that if you do input a date and save
- that you can still see that date on reload
- Verify that you can remove the date by unchecking
- the box
- Verify that you can't set the assignment to graded
- and set a todo date (set the date and then check
- the graded checkbox and see if it saves)
- Verify that you can't see the checkbox as a student
- Verify that you can't use the API to set the date
- on either a new or updated discussion as a student
- Verify that you can use the API to set the date
- Verify that you can't use the API to have a graded
- discussion with a todo date
Change-Id: I5ee7a41244444ac4cc7ca54f8de37cdfbf39f722
Reviewed-on: https://gerrit.instructure.com/111172
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Dan Sasaki <dsasaki@instructure.com>
Product-Review: Christi Wruck
fixes OUT-1032
test plan:
- ensure you have at least 1 active group in course
- create and save an assignment
- return to the assignment edit page
- make the assignment a group assignment
- attach a set of override dates to the group
- you should be able to successfully save the assignment
Change-Id: I1b6747336d933a8144c1a4e50ef011345697066e
Reviewed-on: https://gerrit.instructure.com/111875
Tested-by: Jenkins
Reviewed-by: Michael Brewer-Davis <mbd@instructure.com>
QA-Review: Andrew Porter <hporter-c@instructure.com>
Product-Review: McCall Smith <mcsmith@instructure.com>
Since rails 4.2 and strong parameters the lock quiz feature via web UI
isn't working anymore
closes gh-1036
Test Plan:
- Create a new Quiz
- Click on menu item "Lock this Quiz Now" on show page
- After redirect a notification shows "Quiz successfully updated"
- The Quiz now should be locked and the previous menu item should be
labeled "Let Students Take this Quiz Now"
Change-Id: I60a456f0860c9d233304e3febe5ffb0a08953fa4
Reviewed-on: https://gerrit.instructure.com/111770
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
Closes FALCOR-183
Closes FALCOR-184
Closes FALCOR-255
Closes FALCOR-186
Closes FALCOR-187
Closes FALCOR-188
Closes FALCOR-189
Closes FALCOR-147
Closes FALCOR-148
Test Plan:
* As a student in an account with the Student Planner
feature flag enabled
* In a course with multiple upcoming due assignments
in the current and following weeks
* Test that the following API endpoints provide you
with the data described:
get '/api/v1/planner/items'
* Should return a list matching that of the todo
list endpoint, while adding an additional key
named `visible_in_planner`
get '/api/v1/planner/overrides'
* Should return a list of previously created
PlannerOverrides
get '/api/v1/planner/overrides/:override_id'
* Should return the specific override for the
passed in id
put '/api/v1/planner/overrides/:override_id'
* Should update an existing override's `visible`
value to match what was passed in the request. No
other values should be updated
post '/api/v1/planner/overrides'
* Should create a new PlannerOverride with the specified
`plannable_type`, `plannable_id`, and `visible` values.
`user_id` should match that of the user making the request
delete '/api/v1/planner/overrides/:override_id'
* Should set the PlannerOverride's `deleted_at` to when
the request was made, as well as updating the `workflow_state`
to `deleted`
Change-Id: I03890a525f8201a8df1d2f1290cdcd549ba548d7
Reviewed-on: https://gerrit.instructure.com/107495
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
fixes FALCOR-157
Test Plan:
- Go to Pages with the student planner FF on
- Notice the add to student todo checkbox
- add the todo date and save
- remove the todo date and save
- check validations with checkbox and not saving
- update the todo date and save
Change-Id: I30d3996549f3e6c780603f7668e707e3b3ba8ca0
Reviewed-on: https://gerrit.instructure.com/111303
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: David Mirabile <dmirabile-c@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
test plan:
* have a course with a student
* create an assignment and assign it only to the one student
with a given due date
* open the course calendar
* click on the assignment (the title should include
"1 student")
* edit the due date (while still on the calendar)
* save it
* the title on the calendar should still say
"1 student" and not "No students"
closes #CNVS-36813
Change-Id: I25a3179c4e9ab30452c2615d94115c6f3f61e987
Reviewed-on: https://gerrit.instructure.com/111335
Tested-by: Jenkins
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
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 course to show announcements on home page
* create an announcement with a link
* it should show the link in the announcements list
closes #CNVS-36278
Change-Id: I20296ab5f2d08d4cf30f296dab4b1957482b9e13
Reviewed-on: https://gerrit.instructure.com/110333
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Robert Lamb <rlamb@instructure.com>
Product-Review: Chris Ward <cward@instructure.com>
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:
- 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>
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>
test plan:
- when starting a blueprint migration via the API, you should be
able to add a comment via the `comment` parameter
- when listing blueprint migrations, the comment should be
included
closes MC-167
Change-Id: Ib91dc8917f736c217b2cc02d253c344fb1c14c3e
Reviewed-on: https://gerrit.instructure.com/109666
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
don't need to preload users that are already in the cache. not
functionality change, just performance
test-plan: N/A
Change-Id: I34aecd97a35619718a7c66c902974d3b2cec09ae
Reviewed-on: https://gerrit.instructure.com/109287
Reviewed-by: Jonathan Featherstone <jfeatherstone@instructure.com>
Tested-by: Jenkins
Product-Review: Jacob Fugal <jacob@instructure.com>
QA-Review: Jacob Fugal <jacob@instructure.com>
Closes PLAT-2484
Test Plan:
Exercise the account index and show endpoints. Verify that
a parameter named 'uuid' is included in the response and
is set to the correct account uuid.
Change-Id: I40a30c638fd424d6d9fecacaeeb93f684575fd30
Reviewed-on: https://gerrit.instructure.com/108815
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
don't forbid if there are no overrides
Change-Id: If64e4dc4fb717433f3f8f84a8ff49ad3515aac45
Reviewed-on: https://gerrit.instructure.com/107745
Tested-by: Jenkins
QA-Review: Heath Hales <hhales@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
This commit enhances the Developer Keys page in two ways:
Notes field:
A notes field is added on the `developer_keys` table. When creating a
key, there is sometimes a need to record more information (for example,
a ticket number for the request, information on how the key is to be
used, etc). The notes field is exposed in the developer key listing, in
the API response, and in the dialog for creating/editing a key.
Usage stats:
While adding the notes field, I found a `TODO` marker for "add some
better stats here, like token count, last usage, etc.". Mark that `TODO`
as `DONE`! This PR adds two methods to the `DeveloperKey` model:
`access_token_count` and `last_used_at`. These fields are returned in
the API response, and are displayed in the Stats column on the Developer
Key page.
Test Plan:
- Add a new developer key. There should be a notes field present in the
form and it should save the value of the field when creating the key.
- Edit the key; you should be able to update the notes field.
- Assign access tokens using the developer key. The usage information
should be reflected in the stats for that key.
test plan:
- have two appointment groups with upcoming time slots
- make one of these appointment groups sign up groups instead of
individual users
- edit time slots for each appointment group
- ensure the text at the bottom shows
"Limit this slot to [ ] groups" for the appointment group that
signs up students by group, and "users" for the other one
fixes CNVS-35745
Change-Id: I639d1f07d5e7e51dca37e15e89a0d76ea24f1602
Reviewed-on: https://gerrit.instructure.com/106599
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Refs CNVS-29501
Test Plan:
* In a course, create some content migrations by exporting/importing
course content
* GET /api/v1/courses/:course_id/content_migrations/:id
using site admin credentials
* The response should contain infomation within an `audit_info` key
* Hit the same endpoint with teacher, student, or other non-site-admin
credentials
* The API should not contain the extra information and should behave
as before
Change-Id: I3a5eb7c3ccd0165dc4e362909a42abb26bb96a02
Reviewed-on: https://gerrit.instructure.com/106182
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
QA-Review: Dan Minkevitch <dan@instructure.com>
ignores assignment overrides when updating on the backend
if date-restricted and deletes existing ones on import
when restrictions are added later
also some other stuff that snuck in
closes #MC-135
Change-Id: Iade3a64740ce04388bd5d97fc860fbcf7a6ca99f
Reviewed-on: https://gerrit.instructure.com/106848
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Fixes CNVS-35910
Test plan:
* Hit `@GET("/courses/{courseid}?include[]=term&include[]=permissions&include[]=license&include[]=is_public&include[]=needs_grading_count&include[]=total_scores&include[]=current_grading_period_scores")`
* Make sure it includes a `has_weighted_grading_periods` boolean attr
* Make sure the value reflects the weighted value of the course's
grading period set
* Remove `&include[]=current_grading_period_scores` from the get request
* Make sure `has_weighted_grading_periods` is not included anymore
Change-Id: I96ea26b568e3ba3a6bf6eb3f1a03c7c0df7dcf5c
Reviewed-on: https://gerrit.instructure.com/106439
Tested-by: Jenkins
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Jeremy Neander <jneander@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Neil Gupta <ngupta@instructure.com>
test plan:
* invite a student to a course
* the people page shouldn't show their login id or email
* accept the invitation
* now the login id should be shown
closes #CNVS-34920
Change-Id: I621ea2c6ceeae4de53b923bf51300aa9bba832de
Reviewed-on: https://gerrit.instructure.com/105942
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Chris Ward <cward@instructure.com>
closes #CNVS-35558
Change-Id: I4601d55603563bfc3f9383079528f8270935d636
Reviewed-on: https://gerrit.instructure.com/105949
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
also refactor some stuff to make the distinction clearer
between child-side restrictions and master-side restrictions
closes #MC-126
Change-Id: Ib630022ce7f1d4bfe2461221787b3b942c22da67
Reviewed-on: https://gerrit.instructure.com/105407
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
test plan:
* enable the recent announcements list on the course home
(when set to show the front page)
* an announcement with html content should only show text
(and not the html tags)
closes #CNVS-35565
Change-Id: I5162a32caa7da6fa88c5168c0b8791ae0ae38ed5
Reviewed-on: https://gerrit.instructure.com/105680
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Chris Ward <cward@instructure.com>
Stop using the grade calculator to get grading period scores and
instead fetch the values from the scores table.
closes CNVS-35213
test plan:
1. Verify the "Multiple Grading Periods" account report runs and
returns accurate student scores.
2. Verify the courses API returns accurate scores when you
request 'current_grading_period_scores' as a student. Create an API
key for a student and then make the following request:
api/v1/courses/:course_id/?include[]=enrollments&include[]=
current_grading_period_scores&include[]=total_scores
Change-Id: Ifdb8cd602935d1d0d97f301233a185024e6882a2
Reviewed-on: https://gerrit.instructure.com/104776
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Tested-by: Jenkins
Reviewed-by: Neil Gupta <ngupta@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
fixes PLAT-2069
Test plan:
* go through the repo steps in the ticket
* ensure that the data-api-endpoint url query param is not double url
encoded
Change-Id: I3d6144202f6ec613e3aa38908d7e2dfef87ba460
Reviewed-on: https://gerrit.instructure.com/105337
Tested-by: Jenkins
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
fixes CNVS-35100
test plan:
- create a graded survey quiz and assign a point value
- create at least one question for the survey that has
points
- the point total after saving should match the total
specified when creating the quiz, not the total point
value of the question(s)
Change-Id: I4394d400f77971081a09c20ecb64880a68f3e389
Reviewed-on: https://gerrit.instructure.com/104969
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
Reviewed-by: Davis Lynn McClellan <dmcclellan@instructure.com>
QA-Review: Indira Pai <ipai@instructure.com>
Product-Review: Jason Sparks <jsparks@instructure.com>
Tested-by: Jenkins
The feature flag "Display Totals for All Grading Periods"
is removed and now lives as an option on grading period
sets. All courses using a given grading period set will
display or hide 'All Grading Periods' totals according to
the set's configuration.
closes CNVS-26713
test plan:
1. Verify the feature flag for 'Display Totals for All Grading Periods'
is gone.
2. Verify the 'Display Totals for All Grading Periods' feature behaves
the same way it always has, except for the fact that the feature is
now a setting on grading period sets, meaning a course should show
or hide 'All Grading Periods' totals based on the setting of its
associated grading period set.
Change-Id: Ia445c4a66f98587b556fbdb8ce94b4b8b0d03187
Reviewed-on: https://gerrit.instructure.com/104191
Reviewed-by: Neil Gupta <ngupta@instructure.com>
Tested-by: Jenkins
QA-Review: KC Naegle <knaegle@instructure.com>
Product-Review: Neil Gupta <ngupta@instructure.com>
Fixes: CNVS-29738
Test Plan:
With an RCE view open, click the insert math equation button
Create a math equation and click insert equation
Ensure that the equation image alt attribute is prefixed by 'LaTeX: '
Change-Id: I6df61e83de9820f54757bbfdd3065275889df88c
Reviewed-on: https://gerrit.instructure.com/102708
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
mostly s/uniq/distinct/, and choosing a content type for render :text
Change-Id: I53a2e77d23ecc43162f70b4fd88303cc1539c20b
Reviewed-on: https://gerrit.instructure.com/104762
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
test plan
* create an assignment
* assign it to Mastery Paths with a due date
* the sis assignments api should show that the
assignment is due_at the mastery path due date
fixes SIS-2758
Change-Id: Ia61762863c46bfc75aad4760a1fd567aa6e1a8f5
Reviewed-on: https://gerrit.instructure.com/104156
Reviewed-by: Stewie aka Nicholas Stewart <nstewart@instructure.com>
QA-Review: Mark McDermott <mmcdermott@instructure.com>
Tested-by: Jenkins
Product-Review: Brad Humphrey <brad@instructure.com>
Test Plan:
- Verify the 'Canvas.placements.similarityDetection' capability
no longer appears on the default TCP.
- Verify adding the 'restricted_capabilities' to a custom TCP
allows you to see this placement.
- Install two LTI2 tools with the similarity detection
placement and a service offered with an endpoint specified
and an @id that ends with 'SubmissionEvent' (see
github.com/westonkd/lti-test-tool/blob/master/config/toolProxy.js
for an example.
- Create a new assignment using one of the two tools
as the associated plagiarism detection tool.
- Verify a subscription is created for the tool with
the following values set:
ContextType: 'assignment'
Format: 'live-event'
ContextId: <id of assignment>
EventTypes: ['submission_created']
TransportType: 'https'
TransportMetadata:{Url: <endpoint of the
submission event servce>}
- Edit the assignment just created and only change the name
- Verify another subscription is not created
- Edit the assignment and switch the plagiarism tool to the
second tool.
- Verify a subscription is created
- Create an assignment with no plagiarism tool
- Verify a subscription is not created
- Install a tool with the same 'SubmissionEvent' service in
the tool profile, but change the 'action' array to only
inlcude a 'GET'.
- Attempt to associate an assignment with this newly installed
tool and verify a error flash message is displayed
Closes PLAT-2287
Change-Id: Ic20afbdb52c6b70d341a7b987345b4768bd0ab45
Reviewed-on: https://gerrit.instructure.com/103851
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
closes CNVS-34830
Test Plan:
- Using similarity detection tools with assignments should
work as before
Change-Id: I0db913f9568c8983518921eb7a75f35aa0dab3ad
Reviewed-on: https://gerrit.instructure.com/101532
Tested-by: Jenkins
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
closes QUIZ-1211
Test plan:
- Set up the Quizzes 2 external tool (https://goo.gl/7LpFYh)
- Go to /courses/:id/assignments/new?quiz_lti
- Description textarea should not be present
- 'Moderated grading' checkbox should not be present
- 'Lock assignment properties' checkbox should not be present
- Submission type should be set to 'External Tool'
- It should not be possible to change the submission type
- The external tool URL should be set to the Quizzes 2 URL
- The 'load in new tab' option should not be present
- Click 'Save'
- You should see the new LTI quiz creator tool
Change-Id: I6208dfd39c672d989ae116f9b5d026883b621f6a
Reviewed-on: https://gerrit.instructure.com/102366
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Jason Sparks <jsparks@instructure.com>
Tested-by: Jenkins
This commit adds default values of false and not null constraints for
all boolean columns on the assignments, discussion_topics, and quizzes
tables. This commit also has a data fixup to backfill default values on
the boolean columns.
closes CNVS-34536
Test Plan:
* Do the following in a course with at least one closed grading period:
1. On the Assignments page, create an assignment with a due date in a
closed grading period using the "+" button on an assignment group.
2. As a teacher, try to toggle the "Post to SIS" setting for the
assignment from the Assignments page. Verify the setting changes.
3. Create a new assignment with a due date in a closed grading period
using the "+Assignment" button.
4. As a teacher, try to toggle the post to SIS setting for the
assignment from the Assignments page. Verify you can edit the
setting as you toggle the button.
Change-Id: I7c799bb3b194363836d900287be90ca13805508e
Reviewed-on: https://gerrit.instructure.com/101315
Reviewed-by: Neil Gupta <ngupta@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Tested-by: Jenkins
Product-Review: Keith T. Garner <kgarner@instructure.com>
When returning enrollments, the courses#user and courses#users
endpoints will use the current grading period scores for the grades
section when current_grading_period_scores is added as an include.
Additionally, grading_period_id will be included in the scores. If
grading_period_id is nil, its an indication that there is no current
grading period and the score is a total score.
closes CNVS-34972
test plan:
- Have a course with at least one student in a term that has a
grading period group, with at least 2 grading periods
- Create an assignment in each grading period with 10 points.
- In the gradebook, score the assignment in the first grading period
at 1 point, score the other at 6 points
- As the teacher, visit the API end point
/api/v1/courses/<:course_id>/users/?include[]=enrollments
- In the json returned, note that grades in the enrollment for
student match the expected final scores of 35.
- As the teacher, visit the API end point
/api/v1/courses/<:course_id>/users/?include[]=enrollments&include[]=current_grading_period_scores
- In the json returned, note that grades in the enrollment for
student match the expected grading period scores of 10.
- As the teacher, visit the API end point
/api/v1/courses/<:course_id>/users/<:student_id>?include[]=enrollments
- In the json returned, note that grades in the enrollment for
student match the expected final scores of 35.
- As the teacher, visit the API end point
/api/v1/courses/<:course_id>/users/<:student_id>?include[]=enrollments&include[]=current_grading_period_scores
- In the json returned, note that grades in the enrollment for
student match the expected grading period scores of 10.
Change-Id: Iaa74e7f5eec1b79af21c0b7fbb4f6e6f2b1e37c8
Reviewed-on: https://gerrit.instructure.com/102220
Reviewed-by: Neil Gupta <ngupta@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: KC Naegle <knaegle@instructure.com>
Tested-by: Jenkins
Product-Review: Keith T. Garner <kgarner@instructure.com>
test plan:
* use the API docs for the three new endpoints to
queue migrations for a blueprint course
and view migration information
closes #MC-95
Change-Id: Ie04baf7ac1623384413de19aa7d718c3419fdd1d
Reviewed-on: https://gerrit.instructure.com/102294
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
hide_results sometimes expects a hash instead of a scalar value
test plan:
* should be able to create/edit a quiz without
"Let Students See Their Quiz Responses" checked and save
the value correctly
closes #CNVS-35069
Change-Id: I29faaf0d3bec06fa8f05656cd83e0d617b5028b4
Reviewed-on: https://gerrit.instructure.com/102683
Reviewed-by: Marc Alan Phillips <mphillips@instructure.com>
QA-Review: Gentry Beckmann <gbeckmann@instructure.com>
Tested-by: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
Closes CNVS-29501
Test Plan:
* In a course, create some content migrations by exporting/importing
course content
* GET /api/v1/courses/:course_id/content_migrations/:id
using site admin credentials
* The response should contain infomation within an `audit_info` key
* Hit the same endpoint with teacher, student, or other non-site-admin
credentials
* The API should not contain the extra information and should behave
as before
Change-Id: Ia121b2ff72e9be553c1de74be2fd259038526dc5
Reviewed-on: https://gerrit.instructure.com/102193
Tested-by: Jenkins
Reviewed-by: Mysti Sadler <mysti@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
doesn't do anything yet but should make it easier when the
time comes to try to make our lock/unlock button component(s)
closes #MC-92
Change-Id: Iff72e2045f924afe64433a0e5686e077afdcb755
Reviewed-on: https://gerrit.instructure.com/102021
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
test plan:
* generate API documentation
* use the "Blueprint Templates" API documentation to test
the three new endpoints
(#show, #associated_courses, #update_associations)
closes #MC-69
Change-Id: I1ac7e0c385721a67d815ed1b8f7ee065248b2650
Reviewed-on: https://gerrit.instructure.com/101590
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
Merge branch 'dev/sis/sis-assignments-api'
Test Plan:
- Verify the api documentation has been updated
to show student overrides
(/doc/api/sis_integration.html#method.sis_api.sis_assignments)
- Create users with SIS IDs
- Create assignments with post_to_sis enabled
- Request the endpoint specified in the api docs without include[]=
* It should return assignments without student overrides
- Request the endpoint with include[]=student_overrides
* It should return assignments with student overrides and SIS IDs
- The API behavior should match the documentation
fixes SIS-2700
Change-Id: Ife4a68f6bf376cf7b4cf6e6a2800994b15bb951d
test plan:
sis_assignments_api should still work as expected
with and without the student_overrides include
refs SIS-2700
fixes SIS-2750
Change-Id: I1da6d75410578c78cf0ac4c8882317ae4a0b5ccd
Reviewed-on: https://gerrit.instructure.com/101928
Tested-by: Jenkins
Reviewed-by: Stewie aka Nicholas Stewart <nstewart@instructure.com>
Product-Review: Brad Humphrey <brad@instructure.com>
QA-Review: Brad Humphrey <brad@instructure.com>
fixes CNVS-34706
also alphabetizes allowed params
test plan:
- make a survey and go to edit page
- toggle "Keep Submissions Anonymous"
and hit save
- on page refresh this change is
persisted
- change it back
- this change persists as well
- when toggled to be anonymous the
survey is actually anonymous
- in the quiz submissions page
for this survey, you do not
see the name of a student
when they have taken the survey
Change-Id: If3595492eed91b46f6774b11706a206ad9207dda
Reviewed-on: https://gerrit.instructure.com/101759
Reviewed-by: Marc Alan Phillips <mphillips@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Jason Sparks <jsparks@instructure.com>
Tested-by: Jenkins
test plan:
set up a user with a sis_id
set up an assignment with user level overrides
verify that the sis_assignments_api can return sis_user_id
refs SIS-2700
fixes SIS-2749
Change-Id: I78a33f556cc1326fc5378cd3d92e71a113641f58
Reviewed-on: https://gerrit.instructure.com/101854
Tested-by: Jenkins
Reviewed-by: Nick Houle <nhoule@instructure.com>
Product-Review: Brad Humphrey <brad@instructure.com>
QA-Review: Brad Humphrey <brad@instructure.com>
test plan:
sis_assignments response should be the same
refs SIS-2700
fixes SIS-2744
Change-Id: I3cd38481f00ec8b52d959c25f947e6306e4046ff
Reviewed-on: https://gerrit.instructure.com/101515
Tested-by: Jenkins
Reviewed-by: Nick Houle <nhoule@instructure.com>
Product-Review: Brad Humphrey <brad@instructure.com>
QA-Review: Brad Humphrey <brad@instructure.com>
Check both account and course contexts in rubric spec
The link header returned with certain rubric API responses incorrectly
contains links to course assignment endpoints instead of additional
pages of rubrics. This commit corrects the pagination links and adds
logic for differentiating between course and account contexts.
Test Plan:
- Make API requests to the following endpoints for listing rubrics:
- /api/v1/accounts/:account_id/rubircs
- /api/v1/courses/:course_id/rubrics
- Ensure the results are fully paginated by choosing cases with at
least 10 associated rubrics or by lowering the per_page parameter.
- Ensure the URLs in the response "Link" header correctly point to
additional pages of rubrics for the requested context.
Refs: SIS-2692
Test plan:
- Using your preferred REST Client make a GET request to the
assignments api and verify that max_name_length is
included as an integer.
Change-Id: I0119bab3e840164bcc76fdd01d23bb94d1cce8f8
Reviewed-on: https://gerrit.instructure.com/100062
Tested-by: Jenkins
Reviewed-by: Stewie aka Nicholas Stewart <nstewart@instructure.com>
Product-Review: Brad Humphrey <brad@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
should not be able to delete a folder if it contains a
locked file (even nested within subfolders)
also should not get a prompt to overwrite a locked
file when uploading one with the same name
closes #MC-67
Change-Id: I7cc731377e35d27bb4e97550db8c1deb0b527cac
Reviewed-on: https://gerrit.instructure.com/100494
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Fixes PLAT-2072
Test Plan:
- Install and LTI1 and LTI2 tool in a course.
both should use the 'similarity_detection'
placement.
- Create an assignment in the course with type
online file uploads. Verify that both tools
appear in the "plagiarism Review" select
box.
- Select one of the tools and save the assignment.
- Edit the assignment and verify that the chosen tool
is still selected.
- Select the other tool, save, and edit again.
- Verify the other tool is still selected.
Change-Id: I775f126f4138a636d5f2a01c57e41a1535df087d
Reviewed-on: https://gerrit.instructure.com/99759
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
Fixes CNVS-27109
Test plan:
Regression test everything related to multiple grading periods.
In particular, make sure:
* there is no mention of the multiple grading periods feature flag on
the account or course features pages
* make sure grading periods UI always shows up on the account grading
standards page
* make sure the grading periods UI only shows on the course grading
standards page if legacy course grading periods exist for that course
(see below)
* grading period dropdowns only show up everywhere else if there are
grading periods to show. Otherwise, it should behave as if MGP is
"disabled"
* Grade calculation should work as expected with and without grading
periods
To create legacy course grading periods, you have to use rails console:
1. Find your course:
course = Course.find(<id>)
2. Create a grading period group:
group = course.grading_period_groups.create!(title: "2017")
2. Create a grading period:
group.grading_periods.create!(
weight: 1,
title: 'Fall',
start_date: 5.days.ago,
end_date: 10.days.from_now
)
Here's the list of known places grading periods can be seen in the UI:
Instructor Assignments page
(https://community.canvaslms.com/docs/DOC-2615)
Student Assignments page
(https://community.canvaslms.com/docs/DOC-3123)
Gradebook (https://community.canvaslms.com/docs/DOC-2785)
Gradebook Individual View
(https://community.canvaslms.com/docs/DOC-2788)
Course Settings grading schemes page
(https://community.canvaslms.com/docs/DOC-4042)
Student Grades page (https://community.canvaslms.com/docs/DOC-1291)
Dashboard global Grades page
(https://community.canvaslms.com/docs/DOC-5464)
Change-Id: Iefac4b08120bd1699d4ed98bcb418089eec9b3b8
Reviewed-on: https://gerrit.instructure.com/99744
Reviewed-by: Spencer Olson <solson@instructure.com>
Tested-by: Jenkins
QA-Review: KC Naegle <knaegle@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
Fixes MBL-7155
Test Plan:
- Create a course, change locale to Spanish.
- GET http://web.canvaslms.docker/api/v1/courses. Verify that the
course locale is included in the JSON body of the course.
Change-Id: Ifba9d409533ac4db6bb8d70ccc73c6f32e8414cb
Reviewed-on: https://gerrit.instructure.com/99991
Reviewed-by: Dan Minkevitch <dan@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
the API could actually set date overrides previously, but the
means to do so was not documented, and it could not retrieve them.
this commit fixes both.
test plan:
- render documentation
- use the enrollment terms API to create a term with dates
overridden for specific enrollment types
- ensure the only accepted enrollment types are those
in the UI and the documentation and that other strings
result in a 400 Bad Request error
- use the enrollment terms API to edit override dates for
existing terms (with and without changing the term name)
- use the list enrollment terms endpoint with include[]=overrides
and ensure override dates are returned properly
fixes CNVS-34227
fixes CNVS-34358
Change-Id: I012224b0cf5c7bdcf4cd0ae1a1e8d9d7965d42c1
Reviewed-on: https://gerrit.instructure.com/99563
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Chris Ward <cward@instructure.com>
closes TD-1738
arc, via oauth, wants to make requests to canvas to get info about a
user, including what their lti user id is. this is so we can look up a
user in our system by that lti user id to determine who it is when they
have logged in via canvas oauth.
test plan:
- make sure requesting a user’s profile via api is still working
- make sure that when you request your own user profile via api you get
the lti user id included
Change-Id: I4c42b833baa677b31f5cd79de95daa63b26fba40
Reviewed-on: https://gerrit.instructure.com/99880
Tested-by: Jenkins
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Ben Rinaca <brinaca@instructure.com>
should use the same migration_id + master/child content tags
so they'll be restricted/unlinked together
closes #MC-63
Change-Id: I815c76d79b7407ecbcb2bff88dea9c90188800eb
Reviewed-on: https://gerrit.instructure.com/99887
Reviewed-by: Dan Minkevitch <dan@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Tested-by: Jenkins
Refs: SIS-2636
Test Plan: Make a GET request to the assignments api and verify that
due_date_required is included as a boolean.
Example url:
http://canvas.docker/api/v1/courses/25/assignments/6
Change-Id: I517c9597be7f1f2833798556aadfd72cfb88b19e
Reviewed-on: https://gerrit.instructure.com/99609
Reviewed-by: Nick Houle <nhoule@instructure.com>
QA-Review: <mmcdermott@instructure.com>
Tested-by: Jenkins
Product-Review: Stewie aka Nicholas Stewart <nstewart@instructure.com>
Fixes MBL-7126
Test Plan:
- Enable the course image feature flags for a course
(must first allow or enable on the account feature
flags)
- Add a course image to a course
- Hit /api/v1/courses/<course_id>
with include[]=course_image
- It should return a field on the course called image_download_url
which will be a url to either the flicker image or user uploaded
image that they provided when adding their course image
- Remove the include and it shouldn't return the
image
- Turn the feature flag off but provide the include
parameter and it shouldn't return the image
- This should all also work on the list courses endpoint
the same include value
Change-Id: I6774201235dcd6806e870a4cddab6d63e06b8c42
Reviewed-on: https://gerrit.instructure.com/99664
Reviewed-by: Dan Minkevitch <dan@instructure.com>
Tested-by: Jenkins
QA-Review: David Tan <dtan@instructure.com>
Product-Review: Matthew Sessions <msessions@instructure.com>
closes #MC-62
Change-Id: I39f72492d622749d44fc6c29e96768b25f5b1a7a
Reviewed-on: https://gerrit.instructure.com/99812
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
closes CNVS-34252
test plan:
1. Create an assignment with a due date in a closed grading period
2. As a teacher, verify you are able to enable or disable the
"Post to SIS" setting and verify can save the assignment without
any errors.
Change-Id: Id827fcd9bce7947a9bf15b3e8e64c6c4ed5d9b7a
Reviewed-on: https://gerrit.instructure.com/99703
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Tested-by: Jenkins
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
QA-Review: KC Naegle <knaegle@instructure.com>
Product-Review: Christi Wruck
closes #MC-61
Change-Id: I14c237cfaa0304b6abf4b05377eac68047ee3f9a
Reviewed-on: https://gerrit.instructure.com/99702
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
closes #MC-60
Change-Id: I4bbe452b4688ecd7e56c31627d956a34235d1a68
Reviewed-on: https://gerrit.instructure.com/99665
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
closes #MC-59
Change-Id: Id9e244ad70baffc0073c5fcb569258e3d28b0081
Reviewed-on: https://gerrit.instructure.com/99644
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
refs #CNVS-32574
Change-Id: I4e255b989f8ad3fc6ec2f2699d4950dc0e5a419a
Reviewed-on: https://gerrit.instructure.com/99483
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Fixes CNVS-34215
Test Plan:
* Create an announcement
* As a student, see that the announcement is available to comments
* As an admin, enable the account setting to disable comments on announcements
* As a student, see that announcements have a locked icon and cannot have replies
* As an instructor, view the announcements page and click the settings icon for an announcement
* See that an "Open to Comments" option doesn't appear in the menu
* View (not edit) one specific announcement and click the settings icon
* See that an "Open for Comments" option doesn't appear in the menu
* As an admin, disable the account setting to disable comments on announcements
* As an instructor, view the announcements page and click the settings icon for an announcement
* See that an "Open to Comments" option appears in the menu and unlocks the announcement when clicked
* View (not edit) one specific announcement and click the settings icon
* See that an "Open for Comments" option appears in the menu
Change-Id: I99482c05a5d710095287108925cca969c76ec160
Reviewed-on: https://gerrit.instructure.com/99150
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
Product-Review: Chris Ward <cward@instructure.com>
Tested-by: Jenkins
refs #CNVS-32574
Change-Id: Ifd139bf1e8296370d1d793ceed7c8e2e50440059
Reviewed-on: https://gerrit.instructure.com/94684
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
refs #CNVS-32574
Change-Id: Ib1fc9c81dbfa4ece200a15a23105dbfa6f84d0c6
Reviewed-on: https://gerrit.instructure.com/94677
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
fixes CNVS-33258
group files are unpublished if they need usage rights and don't have
them, otherwise they are published
users can now see unpublished group files if they have file manage
permissions
test plan
- enable the usage rights feature flag
- upload a file to a group without setting a usage right
- ensure that the file is visible after a reload
- ensure the file has the "can't be published until usage rights are
set" warning icon
- ensure that the usage right dialog does not have publishing options.
check the dialog opened by:
- clicking the usage right warning icon
- clicking the cog menu usage right option
- clicking the usage right toolbar button
- ensure that course file publishing and usage rights works as it did
before this commit
Change-Id: I19df7aca01cc20996988be173e69097bd9774eba
Reviewed-on: https://gerrit.instructure.com/98454
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Chris Ward <cward@instructure.com>
Tested-by: Jenkins
proof of concept for first-pass all-or-nothing restrictions
closes #MC-50
Change-Id: I937aeb24892e4fca0b31d5cd2d05058e7ea01679
Reviewed-on: https://gerrit.instructure.com/98553
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Fixes CNVS-33938
Test Plan:
* Create an announcement
* As a student, see that the announcement is available to comments
* As an admin, enable the account setting to disable comments on announcements
* As a student, see that announcements have a locked icon and cannot have replies
* As an instructor, view the announcements page and click the settings icon for an announcement
* See that an "Open to Comments" option doesn't appear in the menu
* As an admin, disable the account setting to disable comments on announcements
* As an instructor, view the announcements page and click the settings icon for an announcement
* See that an "Open to Comments" option appears in the menu and unlocks the announcement when clicked
Change-Id: Ibc837d2f1d76ec85790a9f00e74b21e18971c738
Reviewed-on: https://gerrit.instructure.com/98418
Tested-by: Jenkins
Reviewed-by: Frederick Polgardy <fpolgardy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
Fixes CNVS-33974
Test plan:
* As an admin, setup a grading period that is closed
* Create 2 assignments:
1) a group assignment that is due in the closed period
2) a moderated assignment that is due in the closed period
* Masquerade as a teacher
* Try to edit each assignment:
1) For assignment (1), the "New Group Category" button should be
disabled.
2) For assignment (1), you should be able to enable peer reviews,
automatically assign them, and set reviews per user to any number
greater than 0. Save should work.
3) For assignment (2), clicking the moderated grading checkbox should
not enable the peer reviews checkbox in any browser.
Change-Id: I089e40be543531de711f816636f1fb8712b23ba8
Reviewed-on: https://gerrit.instructure.com/98348
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Tested-by: Jenkins
QA-Review: Nathan Rogowski <nathan@instructure.com>
Product-Review: Neil Gupta <ngupta@instructure.com>
Fixes: SIS-2665
Test Plan: Create an assignment group with integration data.
Then make an update call to it with different integration data.
Verify that the new integration data is merged into the old.
Change-Id: I7c3516dade23a2bdc3d38b793054872cb84d1b97
Reviewed-on: https://gerrit.instructure.com/98203
Reviewed-by: Nick Houle <nhoule@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Brad Humphrey <brad@instructure.com>
closes OFFW-44
test plan:
- start a web export (button on the modules page in the ui)
- go to api/v1/courses/:course_id/web_zip_exports and
ensure you can see the list of web zip exports
- go to api/v1/courses/:course_id/web_zip_exports/:id and
ensure you can see the one web zip export
Change-Id: Iede777011926dc01ad7f76d2a0b3c7f4183089fb
Reviewed-on: https://gerrit.instructure.com/97533
Tested-by: Jenkins
Reviewed-by: Cameron Sutter <csutter@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Product-Review: Mysti Sadler <mysti@instructure.com>
Fixes: SIS-2600
Test Plan:
- Run Migrations
- Use your favorite REST Client
- Create a new AssignmentGroup, confirm the integration_data
is populated
- Update that AssignmentGroup, confirm the integration_data
is populated
Change-Id: I2f91fd7153d0ab01e16af32b74b53cb2ef50553d
Reviewed-on: https://gerrit.instructure.com/94478
Reviewed-by: Nick Houle <nhoule@instructure.com>
Reviewed-by: Stewie aka Nicholas Stewart <nstewart@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Oxana
Fixes PLAT-1999
Test Plan
- Create an assignment with a valid submission,
attachment, and originality report. The originality
report should not have the 'origanality_report_url'
field set.
- Navigate to gradebook and verify the 'tunitin' speech
bubble icon appers next to the submission. Click on the
submission to open the details modal and verify that
an icon appears displaying the originality score.
Verify that the icon does not link to any page when
clicked.
- Set the 'originality_report_url' of the existing
OriginalityReport to a valid URL and save it.
- Navigate back to speedgrader and verify the same
'turnitin' speech bubble appears next to the submission.
Open the submission details modal and verify the same
icon appears displaying the originality score. Verify
that clicking on the icon navigates to the url set on
the OriginalityReport
- Create an assignment with speedgrader enabled. Create
a submission and attachment with valid turnitin_data.
- Navigate to gradebook and verify that the turnitin
submission behaves as it did before.
Change-Id: I9b3577ea55fe802753ffcd0b46bd4c5a4a2ea244
Reviewed-on: https://gerrit.instructure.com/97019
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>