Commit Graph

104 Commits

Author SHA1 Message Date
Nathan Mills f27fa72c45 allow oauth to be up to 60 seconds in the future
fixes PLAT-1940

test plan:
create a grade passback with the timestamp between
0 and 60 seconds in the future.

it should not be rejected

create a grade passback with the timestamp more then 60 seconds in
the future

it should be rejected

Change-Id: Ica50c433efa0b7303a4031ab13f6edfebd5c73cd
Reviewed-on: https://gerrit.instructure.com/94251
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
Product-Review: Karl Lloyd <karl@instructure.com>
2016-11-02 21:34:17 +00:00
Jon Jensen 1e94130c60 ensure consistent ordering in membership_service endpoint
order was undefined, leading to a flaky spec and possibly inconsistent
data from one API call to the next

also reduce spec runtime 75% w/ a little :once-ing

test plan:
specs

Change-Id: I1b422e1a65d2ed9cec68617ab32e2e9c8c378d01
Reviewed-on: https://gerrit.instructure.com/92861
Reviewed-by: Landon Wilkins <lwilkins@instructure.com>
Tested-by: Jenkins
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
Product-Review: Jon Jensen <jon@instructure.com>
QA-Review: Jon Jensen <jon@instructure.com>
2016-10-14 16:25:40 +00:00
Nathan Mills c68be0c9ad have redis check and then write nonce
fixes PLAT-1349

test plan:
regression check grade passback
try using the same nonce twice for grade passback
try using an expired oauth signature

Change-Id: I76ca22568451823c0ed9ae03e815873dda843883
Reviewed-on: https://gerrit.instructure.com/90006
Tested-by: Jenkins
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2016-09-22 18:43:48 +00:00
Nathan Mills 3d925feb90 fix incorrect canvas.externaltool.url substitution
Fixes #880  Github issue

fixes PLAT-1770

test plan:
add a tool installed at the account level with the
"Canvas.externalTool.url" variable expansion

the substituted value should be the tools context not the launch
context i.e. if the tool is launched from a course below the
account it is installed on it should be a url for the account.

also the returned url should be the correct api endpoint for the
tool

Change-Id: Ibb166240c96fb01b31bc2d5055b67f16e107878c
Reviewed-on: https://gerrit.instructure.com/88539
Tested-by: Jenkins
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2016-08-25 17:58:48 +00:00
James Williams a814712b34 add more preloads for enrollment state
should improve state_based_on_date performance

refs #CNVS-29460

Change-Id: Iaffdefd5280b3d3c360cd96b99e171b9c2b3f63e
Reviewed-on: https://gerrit.instructure.com/86977
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2016-08-05 19:36:46 +00:00
Nathan Mills 2fd126d4e9 allow external tool nav to be opened in new tab
fixes PLAT-1203

test plan:

create navigation settings for user, course and account placements
include in those placements
"<lticm:property name="windowTarget">_blank</lticm:property>"
launch from each of those placments
it should open in a new tab or window depending on your browser settings

double check that you can embed an rce lti link using
Content-Item that open in a new tab

Change-Id: I987ebf1b5aa4c43f616b0a5fe2ed5e5d648c2d44
Reviewed-on: https://gerrit.instructure.com/86158
Tested-by: Jenkins
Reviewed-by: Matthew Wheeler <mwheeler@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2016-08-04 20:47:28 +00:00
Nathan Mills 1ff9e81d6d use the new ims lti message authenticator
the new gem created an lti message authenticator that fixes a bug
around content-item-selection message signature validation.

fixes PLAT-1639

test plan:

the test tool content item edit should still work
the o365 content-item edit should work with it

Change-Id: I5ebe868b31518861d32bf1b02244c21cceb55eb6
Reviewed-on: https://gerrit.instructure.com/84481
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2016-07-07 19:34:32 +00:00
James Williams d7d758302a fix performance regression on course users api endpoint
was performing an unnecessary added join for course contexts
that joined on _all_ user enrollments

closes #CNVS-30331

Change-Id: Ia0c40002aa8c963289bb00833d7719def0609d46
Reviewed-on: https://gerrit.instructure.com/84445
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2016-07-07 15:51:44 +00:00
Andrew Butterfield 7d94939784 Add variable substitution for collaboration members
fixes PLAT-1621

Test plan:
* Install a tool with collaboration placement and
  $Canvas.api.collaborationMembers.url custom variable
* Ensure that the variable is substituted for the collaboration update
  launch but not for collaboration create or show

Change-Id: I5826ed51d4d4a6a1099cb8077cd9748333e7417e
Reviewed-on: https://gerrit.instructure.com/83544
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
2016-06-24 19:32:41 +00:00
Ryan Taylor 6b57f5e76c Add documentation to LTI Assignment workflow state variable
Refs CNVS-30048

Test Plan:
 - Pretty much good

Change-Id: Ia3b93b987b84b233c33891011db7995cae07c8b5
Reviewed-on: https://gerrit.instructure.com/83140
Tested-by: Jenkins
Reviewed-by: Brad Humphrey <brad@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Chris Wang <cwang@instructure.com>
2016-06-23 21:06:25 +00:00
Ryan Taylor b0958b2321 Add workflow_state of assignment to LTI payload var options
Aids us in Quizzes 2.0 to make it easier to show context to teachers

Closes CNVS-30048

Change-Id: I8f551c98fff3bdc3c753d4e72bf91ad5971fcc63
Reviewed-on: https://gerrit.instructure.com/82740
Tested-by: Jenkins
Reviewed-by: Chris Wang <cwang@instructure.com>
Reviewed-by: Mike Nomitch <mnomitch@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Chris Wang <cwang@instructure.com>
2016-06-20 20:34:57 +00:00
Andrew Butterfield 602d502f5d Add variable substitution for user groups
fixes PLAT-1606

Test plan:
* Create some groups in a course and add a user to them
* Install a tool that has a collaboration and course navigation
  placement
* Include the following custom variable in the xml config
  user_group_ids=$Canvas.user.courseGroupOpaqueIds
* Ensure that on launches where the context is a course the variable is
  properly expanded to include a list of context ids for the groups the
  user launching is a part of in the course
* The variable substitution for membership service changed to
  $ToolProxyBinding.memberships.url
* Ensure that the membership service variable expansion still works in
  both the group and course context

Change-Id: I31a2a56e8d3b0c528f2cebe82c63148afdc80722
Reviewed-on: https://gerrit.instructure.com/82633
Tested-by: Jenkins
Reviewed-by: Brad Humphrey <brad@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
2016-06-17 16:58:49 +00:00
Nathan Mills e737bd9715 only send the tc profile url for lti2
refs PLAT-1571

test plan:
lti 1 launches shouldn't include the tool_consumer_profile_url
lti 2 launches should still include it
Change-Id: I72dd2d1eff13e015510c8c20bc73ab9ab961f561
Reviewed-on: https://gerrit.instructure.com/81862
Tested-by: Jenkins
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2016-06-15 15:28:49 +00:00
Nathan Mills 5e083a1bfa add a custom post/put body parser for custom params
refs PLAT-1571

test plan:

regression test api/and UI for create and update tools
specifically around custom parameters

create a tool using something complex like this:
Complex!@#$^*(){}[]KEY=Complex!@#$^*;(){}[]½Value
it should get stored and returned correctly, i.e.
name = Complex!@#$^*(){}[]KEY
value = Complex!@#$^*;(){}[]½Value

Change-Id: I4a44575bdec9b83925bbe21d78b5d06770b7768e
Reviewed-on: https://gerrit.instructure.com/81863
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2016-06-14 19:22:42 +00:00
Andrew Butterfield 3bf0e37069 Membership service returns correct roles for context
fixes PLAT-1563

Test plan:
* Previously the group endpoint for the membership service
  returned roles based on the course context
* Ensure that now the roles returned for the group endpoint of the
  membership service include only urns for Manager and/or Member.
* Ensure that the Manager urn is included for the student leader of the
  group

* Previously the course endpoint for the membership service returned
  roles for the user that applied to all courses that member was a part
  of in canvas.
* In one course enroll a user as a teacher. In another course enroll the
  same user as a student
* Ensure that for each course the membership service returns only the
  roles that apply to that user within the context of that course

Change-Id: I7527d3384c79c54efd5140bcae0c1b988a926410
Reviewed-on: https://gerrit.instructure.com/82279
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
2016-06-13 18:38:12 +00:00
Brad Horrocks b843de7adf Course Group Collator for MembershipService
Fixes PLAT-1448 PLAT-1449

Test plan:
* Create a user and generate an access token for the user
* Add a bunch of groups to a course
* Access the following endpoint for a course the user is enrolled in
  /api/lti/courses/:course_id/membership_service?role=urn%3Alti%3Acontext-type%3Aims%2Flis%2FGroup
* Ensure that course groups are returned

Change-Id: I793768ab7dc2e0cde8df72370fdbe6ea92e02b5e
Reviewed-on: https://gerrit.instructure.com/81022
Tested-by: Jenkins
Reviewed-by: Brad Horrocks <bhorrocks@instructure.com>
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
2016-06-09 17:06:33 +00:00
Nathan Mills ad2a091061 copy lti signing out into a seperate file
this is the first step in refactoring out the security code from
the lti_outband gem

refs PLAT-1570

test-plan
LTI launches should still work the same as they did before

Change-Id: I6d991ed3a18e9dfcfeb68f48c8b1490ff75c2370
Reviewed-on: https://gerrit.instructure.com/81448
Tested-by: Jenkins
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
QA-Review: Andrew Butterfield <abutterfield@instructure.com>
2016-06-07 16:30:35 +00:00
Simon Williams 70fd83f3c9 better validation and error handling for lti launches
fixes CNVS-28799

test plan:
- commons share links should still work
- try generating an invalid share link (with ids that don't exist)
- it should give an appropriate error
- basic lti launches and api lti launches should still work

Change-Id: I6731f4a578b3075507e4052874f7e5d38f470892
Reviewed-on: https://gerrit.instructure.com/77393
Reviewed-by: Nathan Mills <nathanm@instructure.com>
QA-Review: Benjamin Christian Nelson <bcnelson@instructure.com>
Tested-by: Jenkins
Product-Review: Simon Williams <simon@instructure.com>
2016-05-17 18:32:39 +00:00
Nathan Mills 0970d3b982 helper class for lti message validation
refs PLAT-1339

test-plan:
specs should pass
nothing uses this right now, just here for future use

Change-Id: Ie07227c5cdaa64201ff38208840d79668508dde8
Reviewed-on: https://gerrit.instructure.com/79137
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2016-05-11 22:16:17 +00:00
Matthew Wheeler d06cf7bc69 Round pointsPossible variable substitution if a whole number
Fixes PLAT-1498

Test Plan:

With the test tool, create a new assignment with
100 points possible. The value posted to the tool 
for the points_possible variable expansion should
be "100" not "100.0". A assignment with 100.5 points
possible should post as "100.5".

Change-Id: I5eaf29817a7a71626f1407cda4c75a3853c816d3
Reviewed-on: https://gerrit.instructure.com/79297
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Reviewed-by: Brad Humphrey <brad@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Karl Lloyd <karl@instructure.com>
2016-05-11 16:27:36 +00:00
James Williams 25a18a9b7f fix lti role substitution for backwards compatibility
"AccountAdmin" back to "Account Admin" (but untranslated now)

closes #CNVS-29273

Change-Id: I109c4cae82a8dbd06b2fac8f74863280d8dfbb1f
Reviewed-on: https://gerrit.instructure.com/79223
Reviewed-by: Brad Humphrey <brad@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Brad Humphrey <brad@instructure.com>
2016-05-10 22:56:31 +00:00
Andrew Butterfield bee6437f5a Adjust variable substitution for membership service
fixes PLAT-1450

Test plan:
* Using the test tool https://lti-tool-provider-example.herokuapp.com/
  set up some XML for a tool that has a 'collaboration' placement and
  custom variable with the following variable substitution
    $Canvas.api.membershipServiceUrl
* Ensure that on a course collaboration launch the membership service
  url is of the following form
    /api/lti/courses/:course_id/membership_service
* Ensure that on an account group collaboration or course group
  collaboration launch the membership service url is of the following
  form
    /api/lti/groups/:group_id/membership_service

Change-Id: I38ce63ba0d95a12963e99251c2abf660573e9c7b
Reviewed-on: https://gerrit.instructure.com/78276
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
2016-05-04 18:57:04 +00:00
Brad Horrocks f51cefcc67 Better LTI Variable Substitution Docs
Generate LTI Variable Substitution Docs from the code
Uses YARD's plugin hooks to generate the markdown.

I couldn't find a good way to do this with YARDs builtin generation
stuff. So I hacked together. No pretty, but gets the job done.

You can update the generated markdown by running this
```
script/generate_lti_variable_subustition_markdown
```

Our yard templates, dont process markdown files like YARD is supposed
to.i Not sure why? 🤷

Fixes https://github.com/instructure/canvas-lms/issues/592

Change-Id: If0728d357dc745d81381e818ed62d087d76f0e66
Reviewed-on: https://gerrit.instructure.com/74312
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Tested-by: Jenkins
Product-Review: Brad Horrocks <bhorrocks@instructure.com>
2016-05-02 19:15:46 +00:00
Andrew Butterfield d86f28783b Add groups context route for membership service
fixes PLAT-1447

Test plan:
* Create a course with some students
* Regression test
  /api/lti/courses/:course_id/membership_service
* Create a group with some students
* Ensure that
  /api/lti/groups/:group_id/membership_service
  returns a properly formatted list of group members

Change-Id: Idc03c11728847258d621d365d87238465f739672
Reviewed-on: https://gerrit.instructure.com/77595
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
2016-04-25 15:11:55 +00:00
James Williams 072f743883 don't translate roles in lti launches
closes #CNVS-28714

Change-Id: I9899f288f59850615230fdd15b254da5d5216f1b
Reviewed-on: https://gerrit.instructure.com/77140
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2016-04-18 15:56:36 +00:00
Andrew Butterfield 18cd426e0d Add membership collator factory to membership service
fixes PLAT-1446

Test plan:
* Smoke test membership service

Change-Id: Ifed723e517b2a41a40ce3f19dbb6841fb5f9b5b2
Reviewed-on: https://gerrit.instructure.com/76929
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
2016-04-14 19:50:31 +00:00
August Thornton d81f4381ce fix content item util parsing
refs PLAT-1336

test plan:
* collaborations should create successfully
* behavior shouldn't change

Change-Id: I7a2c684f5178adc7b84bb21167962745b280f4d2
Reviewed-on: https://gerrit.instructure.com/76821
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
QA-Review: Nathan Mills <nathanm@instructure.com>
2016-04-13 22:39:45 +00:00
Andrew Butterfield 6307574728 Rename collator in membership service
fixes PLAT-1445

Test plan:
* Smoke test membership service

Change-Id: I840a5b672b2f37e0e95d19929c8bd27fdc8f97a2
Reviewed-on: https://gerrit.instructure.com/76529
Tested-by: Jenkins
Reviewed-by: Brad Horrocks <bhorrocks@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
2016-04-07 21:15:35 +00:00
Andrew Butterfield 754c5d58f2 Add variable substitution for membership service url
fixes PLAT-1387

Test plan:
* Using the lti test tool create a tool that can launch from an account
  context and a course context
* Add a custom param with the following key: value pair

  $Canvas.api.membershipServiceUrl

* Ensure that in the course context the variable substitution occurs but
  that in the account context it does not.

Change-Id: If2bf3b2c1b91229021b8d0f8cf3e7b83366eafcf
Reviewed-on: https://gerrit.instructure.com/75907
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Tested-by: Jenkins
Reviewed-by: Matthew Wheeler <mwheeler@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
2016-04-01 19:17:31 +00:00
Andrew Butterfield 0ed94c5e7e Add presenter for membership service
fixes PLAT-1342

Test plan:
n/a

Implements a lib that doesn't have a user facing effect yet

Change-Id: Ifff8bbe804a13868f9ebaec46877f78f72b72631
Reviewed-on: https://gerrit.instructure.com/73338
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Tested-by: Jenkins
Product-Review: Andrew Butterfield <abutterfield@instructure.com>
2016-04-01 19:00:15 +00:00
Nathan Mills d8082412ca add support for success/failure callbacks in collaborations
fixes: PLAT-1336

test plan:
it should still create collaborations via content-item
we need to enhance the test tool to verify that callbacks happen

Change-Id: I2854c93adb0eec64f4dcae1c7a74b3cc72c94b90
Reviewed-on: https://gerrit.instructure.com/72610
Tested-by: Jenkins
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2016-03-07 16:49:23 +00:00
Cody Cutrer b7f00ab032 document and extend usage of integration_id for users
refs CNVS-26735

test plan:
 * create a user, pseudonym, and update a pseudonym via API
   setting integration_id
 * it should work
 * with a user with an integration id set, launch an LTI tool
   with the Canvas.user.sisIntegrationId variable being sent;
   ensure it gets sent

Change-Id: I549ba6e64e993c4867acfe33577722c1118b8988
Reviewed-on: https://gerrit.instructure.com/70874
Reviewed-by: Rob Orton <rob@instructure.com>
Tested-by: Jenkins
Reviewed-by: Brad Humphrey <brad@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2016-02-18 20:11:01 +00:00
James Williams b1f3daf044 rails 4.2: misc spec fixes
refs #CNVS-26056

Change-Id: Ia94ee2fcfded1ec66cb77a19085b005c81304800
Reviewed-on: https://gerrit.instructure.com/70251
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2016-01-18 21:45:39 +00:00
Brad Horrocks cf1adc2978 LTI Reregistration
add support for reregistration launches
Allow tool providers to send updated tool proxies

Saves the payload and acknowledgment url in the update_payload field
Show an update indicator, and options to update or dismiss the update
basic UI functionality

fixes: PLAT-1247
Fixes PLAT-1276
Fixes PLAT-1248

Test Plans:

using the test tool you should be able to install it,
then from the gear context menu you should be able to do a reregistration
launch the tool and canvas only support the launch right now, and not the
rest of the process

Populate update payload on a tool proxy (LTI2 tool)
make sure a badge is displayed indicating there is an update available
make sure you the options to update or dismiss are displayed
make sure when you update it actually updates, and no longer shows an
update is available
make sure when you dismiss it no longer show an update

Change-Id: I93e2db40f81523e9518e529460ea2b16f5de103a
Reviewed-on: https://gerrit.instructure.com/68004
Reviewed-by: Brad Horrocks <bhorrocks@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Tested-by: Jenkins
Product-Review: Brad Horrocks <bhorrocks@instructure.com>
2015-12-17 23:26:05 +00:00
James Williams 2135b25c14 fix substitutions_helper with observer roles
test plan:
* have a teacher who is also an observer for a course
* should be able to add external tools as modules

closes #CNVS-24785

Change-Id: I76f795593597fb50cb86b685d3bb04c50cc2c737
Reviewed-on: https://gerrit.instructure.com/66682
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Ryan Allen <rallen@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2015-11-10 20:08:04 +00:00
Mark Severson d8045897e4 fix post grades placement for lti 2
test plan:
 * install a post grades lti 2 tool
 * the post grades placement should be shown for the tool
 * the tool should be shown on the gradebook page for posting grades

fixes SKYW-106

Change-Id: I25f26c09017d8967799b3692a2aeb15986a4c322
Reviewed-on: https://gerrit.instructure.com/57576
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Mark Severson <markse@instructure.com>
2015-10-30 17:35:04 +00:00
Nathan Mills 2028f03b79 add feature flag for lti2 reregistartion
refs: PLAT-1247

test plan:
the feature flag for reregistration should only show for site admins
at the root account level

the api for api/v1/#{context}s/:#{context}_id/lti_apps should have
reregistraation equal true for lti2 tools when the feature flag is enabled

Change-Id: I6a4c2f1deaa4ef8a2448dde374b93b79289ab96c
Reviewed-on: https://gerrit.instructure.com/65739
Tested-by: Jenkins
Reviewed-by: Brad Horrocks <bhorrocks@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2015-10-27 19:10:05 +00:00
Nathan Mills 95569f5ef3 add variable expansion for user.global_id
fixes PLAT-1275

test plan:

request the `Canvas.user.globalId` custom variable expansion
you should get back a global id for the user

Change-Id: I5b34e0f266519b0cad9e5dbdf9ac206f9eab08ee
Reviewed-on: https://gerrit.instructure.com/65578
Tested-by: Jenkins
Reviewed-by: Brad Horrocks <bhorrocks@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2015-10-22 19:57:18 +00:00
Nathan Mills f4a2787ec1 handle missing assignment date values for variable subs
fixes PLAT-1272

test plan:

use the $Canvas.assignment.(dueAt|lockAt|unlockAt).iso8601 
varaible expansions

set up an assignment with blank values for all the dates

you should not get a 500 on an lti launch for the assignment

Change-Id: I7e4ffab74ea8b2aef6ba921c372ada9260805da0
Reviewed-on: https://gerrit.instructure.com/65354
Tested-by: Jenkins
Reviewed-by: Brad Horrocks <bhorrocks@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2015-10-22 19:15:02 +00:00
Nathan Mills 214cc361d5 Use global asset strings for generating lti_context_id
fixes PLAT-1189

test-plan:
Before you cherry pick do a bunch of launches and record the resource_link_id, and the context_id
cherry pick this commit
do the exact same launches and make sure the resource_link_id, and context_id did not change between this code change

Change-Id: I0852cf19e62fc4b662cd71e0497004bcf8e440d0
Reviewed-on: https://gerrit.instructure.com/63008
Tested-by: Jenkins
Reviewed-by: Brad Humphrey <brad@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2015-09-21 16:10:21 +00:00
Josh Orr f30e329d8c Add a variable expansions iso8601
Canvas.assignment.unlockAt.iso8601 Canvas.assignment.lockAt.iso8601 Canvas.assignment.dueAt.iso8601

fixes PLAT-1211

test-plan:
install the test tool with Canvas.assignment.unlockAt.iso8601 Canvas.assignment.lockAt.iso8601 Canvas.assignment.dueAt.iso8601 setup as a custom variable
launch the tool
it should return back the above date varibles in iso8601 format.

Change-Id: I6a816e8318cb70d50a0cf39f2138f4e395f39676
Reviewed-on: https://gerrit.instructure.com/61806
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Josh Orr <jgorr@instructure.com>
2015-08-31 15:57:11 +00:00
Weston Dransfield c93dac757a read and write resource_placements to/from message_handler
fixes PLAT-1174

Test Plan
~ make sure resource_handler_id from the lti_resource_placements table
~ make sure installing a tool via lti tool registration URL works correctly as
  well as any other task that uses the Lti::ResourcePlacement model.

Change-Id: I058ae01cb43366342754e3fa9cdabf1c408cce0e
Reviewed-on: https://gerrit.instructure.com/60494
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: August Thornton <august@instructure.com>
2015-08-17 16:47:43 +00:00
Weston Dransfield 284c502f6d Make membership.roles variable expansion available in the account context
Fixes PLAT-1184

Test Plan
 - Install the test tool at the account level with the account navigation and course navigation placements
 - Once installed edit the app and add the custom field 'role_test=$Canvas.membership.roles'
 - launch the app from the account navigation and make sure the variable was expanded
 - launch the app from the course navigation and make sure the variable was expanded

Change-Id: I840c537de5ec1fa8fc1f1f94d2b8beef1aed2abb
Reviewed-on: https://gerrit.instructure.com/59859
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2015-08-05 23:07:32 +00:00
Addison Higham 665c7f2127 Add root_account.global_id and shard LTI expansions
For the Canvas Data product, we have an LTI app that we use to give customers access
to a flat file download or manage credentials for accessing a Redshift
database.

Since this is basically a huge amount of access, we want to be double
extra sure that we are properly linking up accounts with the canvas data
portal and only giving authorized users access.

For the LTI app, we are currently using per account oauth keys/secrets
and user whitelisting to ensure that only authorized users can access
the data. However, we currently have a gap where if a shard_id (which we
need for driving the ETL process) is not entered correctly, we would
process data for the wrong customer. With the shard_id being passed
by the LTI app, we can at least ensure that this data can't be accessed
by not allowing authentication if we are passed a shard_id we don't
expect.

This commit adds an expansion for the globalized account_id (which we
may use later) and the shard_id.

Test Plan:
  - Create an LTI app that expands $Canvas.root_account.global_id and $Canvas.shard
  - Ensure that the globalized root_account_id and shard_id are passed

Change-Id: I5315320c4920e258032a08f424b9a83a6f7a8744
Reviewed-on: https://gerrit.instructure.com/59895
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Addison Higham <ahigham@instructure.com>
2015-08-05 22:38:28 +00:00
Weston Dransfield fdfadc6c7f Add ability ot view placements for Account Level tools at the course level
Fixes PLAT-1160

Test Plan:
 - Install a test tool at the account level and give it a variety placements.
 - Navigate to a course within the account you just installed the tool in.
 - go to settings -> apps and look at the app configurations.
 - make sure the account level tool has a button that allows a user to view placements.
 - make sure the list of placements given for the account level tool is correct.

Change-Id: I306290d593e59d80dcd34ff7550388508694c141
Reviewed-on: https://gerrit.instructure.com/59040
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Reviewed-by: Brad Horrocks <bhorrocks@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2015-08-04 21:33:21 +00:00
Weston Dransfield ea903c6b84 Update Content-Item LtiLink types to LtiLinkItem
Fixes PLAT-1125

Test Plan
 - Add the example test tool (https://github.com/rivernate/lti_tool_provider_example)
   to a course using Editor Button, Link Selection, and Module Menu placements.
 - Add the tool as a module item. While adding make sure to add a new content item by pressing the green '+' in the modal that pops up.
   This content-item should 'Lti Link' set as the type.
 - Click on the tool module item and make sure the link works.
 - Using similar steps add the tool in the RCE and make sure the link works as expected.

Change-Id: I91681d6b6937467ef1aadf3029ccbfd566ba3a71
Reviewed-on: https://gerrit.instructure.com/57296
Reviewed-by: Brad Horrocks <bhorrocks@instructure.com>
Tested-by: Jenkins
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2015-07-20 20:49:13 +00:00
Andrew Butterfield e6368a1828 Adds a custom param with css info for lti launch
fixes CNVS-21837

Test plan:
* Set up sis_app
  * If you don't have it already, clone sis_app from gerrit
  * Then pull down g/58166
  * Run bundle, rake db:migrate, grunt webpack:build
  * Start the server with rails s -p 9292
  * Create a Skyward Agent if you haven't already (there are a lot of
    steps with this so just ping me if you have trouble)
* Canvas
  * Delete any existing Skyward GPB LTI tool you have installed
  * Reinstall the Skyward GPB tool
* Verifications
  * Go to post grades
  * Open up the javascript console in the browser
  * Monitor network traffic
  * Click the Skyward LTI tool in the Post Grades
    drop down menu
  * In the network traffic look for /post_grades
  * Click on that request and look through the form data sent with the
    post request
  * Ensure that there is a url to the common.css stylesheet under the
    key: custom_common_css_url
  * Verify that the url listed under that key matches the url for the
    common.css stylesheet in the Canvas grades page

Change-Id: I48e0aa74d498770513bcfa08f95537b922096b05
Reviewed-on: https://gerrit.instructure.com/58167
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Mark Severson <markse@instructure.com>
Reviewed-by: Brad Humphrey <brad@instructure.com>
Product-Review: Brad Humphrey <brad@instructure.com>
QA-Review: Ben Bolton <bbolton@instructure.com>
Product-Review: Matthew Wheeler <mwheeler@instructure.com>
2015-07-17 15:58:06 +00:00
Weston Dransfield 25243983e8 Fix $Canvas.module.id and $Canvas.moduleItem.id not coming through on LTI launches from assignments
Fixes PLAT-1116

Test Plan
 - Add a tool to a course that has the 'Assignment Selection' placement enabled
 - Edit the tool and in the 'custom fields' area add 'module_id=$Canvas.module.id' and 'module_item_id=$Canvas.moduleItem.id'
 - Create a new assignment with 'Submission Type' set to 'External Tool' and select the tool you just installed.
 - Go to the course modules page and add the new assignment to a module.
 - note the id of the module and the moduleItem (The module item id is passed as a get param when you click on the link).
 - Make sure the custom fields (module_id and module_item_id) have the expected values

Change-Id: Ibc6c6342cf3493b8c81382f460c1af3a365130c0
Reviewed-on: https://gerrit.instructure.com/57235
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2015-07-16 19:37:50 +00:00
James Williams 7376ce89e5 rails4: fix lti specs missing ims/lti dependency
refs #CNVS-21596

Change-Id: I8c11fdfc52566e9a5286d4ac53c66a6ac4ced32c
Reviewed-on: https://gerrit.instructure.com/57950
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2015-07-13 15:22:30 +00:00
Weston Dransfield e866f1b95b Add support for localized LTI tool labels
Fixes PLAT-1117

Test Plan:
  - Check https://instructure.atlassian.net/browse/PLAT-1117 for details on how this change should work
  - Check to make sure each of the following placements works like the description of PLAT-1117 outines
   - user_navigation
   - course_navigation
   - account_navigation
   - course_home_sub_navigation
   - course_settings_sub_navigation
   - global_navigation
   - assignment_menu
   - file_menu
   - discussion_topic_menu
   - module_menu
   - quiz_menu
   - wiki_page_menu
   - migration_selection
   - link_selection
   - assignment_selectino
   - editor_button

Change-Id: Ib56d4c8c386975dcb86d79267cf2e69949146066
Reviewed-on: https://gerrit.instructure.com/56467
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2015-06-26 14:00:20 +00:00