How to run the LTI Validation test

Running the test requires hopping back and forth between the IMS site, and the Open edX instance you are testing (devstack, sandbox, etc). Read the table left column then right column downward.

IMS Global

Open edX

IMS Global

Open edX

 

If testing on devstack:

  1. Start ngrok: “ngrok http 18000”. Note the host name it assigns you. For example, “01878d6ccf1c.ngrok.io”

  2. Update some settings:

    1. LMS_ROOT_URL should match the hostname ngrok assigned you. I do this by setting it in lms/envs/private.py:
      LMS_ROOT_URL = “https://01878d6ccf1c.ngrok.io”
      The setting should not have a trailing slash.

    2. DCS_SESSION_COOKIE_SAMESITE = "None"
      This is the usual production setting. Devstacks have “Lax” to make it easier to run under http. Since we are running under https, we can use None, which is required for the iframe to get the session cookie.

    3. In /edx/etc/lms.yml and /edx/etc/studio.yml:

      1. set FEATURES.LTI_1P3_ENABLED: true

      2. set FEATURES.LTI_DEEP_LINKING_ENABLED: true

      3. set FEATURES.LTI_NRPS_ENABLED: true

    4. Enable this waffle flag for your course:
      lti_consumer.lti_nrps_transmit_pii

  3. Start devstack

Start here: https://ltiadvantagevalidator.imsglobal.org/ltiadv/certification.html

 

 

 

 

Make an LTI component in Studio, using the values from the IMS page.

  1. In Studio:

    1. In the course’s Advanced Settings, make sure "lti_consumer" is in the Advanced Module List.

    2. Add New Component

    3. Advanced - LTI Consumer

    4. Edit the component

      1. LTI Version: LTI 1.3

      2. LTI 1.3 Tool Launch URL: copy from IMS “Tool OIDC Launch Redirect URL”

      3. LTI 1.3 OIDC URL: copy from IMS “OIDC Login Initiation URL”

      4. LTI 1.3 Tool Public Key: we’ll come back to this.

      5. Enable LTI NRPS: set to True

      6. Deep linking: set to True.

      7. LTI Advantage Deep Linking Launch URL: copy from IMS “Tool OIDC Redirect Deep Linking URL”.

      8. LTI Assignment and Grades Service: set to “programmatic”.

      9. Set Scored to True.

      10. Save the component

Copy values from the info displayed in Studio to the IMS form.

Make sure the hostnames are correct for your ngrok configuration, you may need to edit them. The input fields are short for our long URLs, make sure the full URL is pasted in each.

  1. Testing iss Value: should be exactly the same as your LMS_ROOT_URL setting.

  2. OIDC Auth URL: copy from the “OIDC Callback URL” in the Studio display.

  3. Platform Well-Known/JWKS URL: copy from the “Keyset URL” in the Studio display.

  4. OAuth2 Access Token URL: copy from the “OAuth Token URL” in the Studio display.

 

More configuration:

  1. Client ID: copy from the “Client” value in the Studio display

  2. Select We Accept Tool Public Keys.

Edit the LTI component again.

Copy “The Tool’s Public Key” from IMS and paste it in LTI 1.3 Tool Public Key

Save the component.

 

Enter the Deployment ID from the Studio display. (It’s always “1”):

 

 

 

Publish the whole course.

View Live Version to open the LTI component in the LMS. Be sure you are logged in to the ngrok host name as a student (verified@example.com), and launch the component under that host name.

The LMS will display:

{ "status" : "Payload Received" }

Click “Continue” in the IMS window.

Now will have a series of screens that look like this:

Click “Test Options” to display the options. Leave user as Student.

Click “Submit Test”

You should get a passing test that looks like this:

Click “Confirm Results” to record the success.

Use the “Next Test” link in the header to move to the next test if it doesn’t advance automatically. There are nine different screens to get through.

The JWT will expire in 5 minutes. If you get a message about the token expiring, it probably means you took longer than 5 minutes to get through the tests.

 

 

Launch the LTI component again.

Run through the nine test screens again.

 

 

Sign out of the LMS, and log in as an instructor (staff@example.com).

Launch the LTI component.

Run through the nine test screens again.

 

 

Launch the LTI component as an instructor again.

Run through the nine test screens again.

You will be asked to do a Deep Linking launch: “Acquiring Deep Linking Payload for Testing”.

 

 

In Studio as staff, visit the component and click “Deep Linking Launch - Configure tool” to do a deep linking launch.

A new browser tab will open, and will flash through some pages, ending at:

 

Run through the Deep Linking tests, until you get to “Acquiring Instructor Payload For Names and Roles Service”.

In Studio, edit the component to turn off Deep Linking. Save the component and publish the course.

In the LMS as staff, open the component.

 

Run through the Names and Roles Service tests.

Until you get to Assign Grades

In LMS as “verified@example.com”, open the component.

Run through the Assign Grades tests, until you get to “Acquiring Different Context Student Payload for Assignment and Grades”

In LMS as “honor@example.com”, open the component.

Run through the Assign Grades tests, until you get to “Platform - Confirming Gradebook Entries”:

In Django admin, you can see the grades reported:

https://nedx.ngrok.io/admin/lti_consumer/ltiagsscore/

This is the last test. There is no clear indication that it is the last, except that “Next Test” doesn’t move you along from this page. Click “Results” in the upper right to see the results.