Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-69545

Update user sync task to support 1.3 messages

    XMLWordPrintable

    Details

    • Testing Instructions:
      Hide

      Note: Member sync is covered by unit tests, however, it's probably a good idea to test manually to verify the tests are making the right assertions.

      Prerequisites

      1. You'll need two Moodle sites running on localhost for this test - one designated 'platform', one 'tool'.
      2. A course called "Platform course 1", in the platform site with:
        • 5 Students: s1, s2, s3, s4, s5
        • 2 Teachers: t1 and t2
      3. A course called "Tool course 1" in the tool site with:
        • An assignment called "Assign 1" with a max grade of 80.
        • An assignment called "Assign 2" with default settings (max grade of 100)
        • A file resource (representing a non-graded activity)
        • A single teacher, t1, enrolled.
      4. A course called "Tool course 2" in the tool site with:
        • A single teacher t2 enrolled
      5. In the tool site admin settings:
        • Enable enrol_lti and auth_lti plugins
        • Enable "Allow frame embedding"

      Register the tool and platform

      Note: This is a shortened process of setting up the Moodle LTI Advantage Tool. If you've already set this up as part of another test, you can safely skip this section.

      1. On the tool site, go to Admin > Plugins > Enrolments > Publish as LTI tool > Tool registration
      2. Keep this page open, we'll need it shortly.
      3. On the platform site, go to 'Admin > Plugins > Activity modules > External tool > Manage tools'
      4. Click 'Configure a tool manually'
      5. Enter the following values:
        • In "Name" enter "Moodle LTI Advantage Tool"
        • Set 'LTI Version' to 1.3
        • Set public key type to 'Keyset URL'
        • In 'Tool URL', paste the value copied from "Tool URL" in the tool.
        • In 'Public keyset' paste the value copied from"JWKS URL" in the tool
        • In 'Initiate login URL', paste the value copied from "Initiate login URL" in the tool
        • In 'Redirection URI(s)' paste the value copied from BOTH "Tool URL" and "Deep linking URL" rows in the tool. Make sure each is on its own line.
        • Check 'Supports deep linking'
        • In 'Content selection URL', paste the value copied from "Deep linking URL" in the tool
        • Under "Services" set "IMS LTI Assignment and Grade Services" to "Use this service for grade sync and column management"
        • Under "Services" set "IMS LTI Names and Role Provisioning" to "Use this service to retrieve members' information as per privacy settings"
        • Set tools settings to "Do not use this service"
        • Set "Tool configuration usage" to "Show in activity chooser and as a preconfigured tool"
      6. Save the tool (you'll be taken to the manage tools page again)
      7. For the tool you just created, click "View configuration details"
      8. Copy these configuration details somewhere, or be ready to access them again.
      9. Now, switch back to the tool site
      10. Under "Registered platforms" click "Register a platform"
      11. Enter the following values:
        • Set "Platform name" to 'Moodle platform'
        • In "Platform Id (Issuer)" paste the value you copied from the "Platform ID" field in the configuration details
        • In "Client ID" paste the value you copied from the "Client ID" field in the configuration details
        • In "Authentication request URL" paste the value you copied from "Authentication request URL" in the configuration details
        • In "Public keyset URL" paste the value you copied from "Public keyset URL" in the configuration details
        • In "Access token URL" paste the value you copied from "Access token URL" in the configuration details
      12. Save changes
      13. Click "Manage deployments" next to the registration you just created
      14. Click "Add a deployment"
      15. Set the following values:
        • In "Name" enter "Site wide deployment"
        • In "Deployment Id" paste the value you copied from "Deployment Id" in the the configuration details
      16. Save the deployment
      17. Log out of both tool and platform.

      Publish activities and set up platform resource links

      1. Log in to the tool site as t1
      2. Click "Published as LTI Tools" in course setting
      3. Click "Add new"
      4. Publish the "Assign 1" resource, using all default settings (this ensures membersync is enabled)
      5. Repeat the process and publish the "Assign 2" resource
      6. Now log out of the tool.
      7. In the platform, log in as teacher t1
      8. Go to "Platform course 1"
      9. Add a label activity "Label 1" in section 1, setting completion to "students can manually mark this activity as complete"
      10. Click to add an activity/resource
      11. Select "Moodle LTI Advantage Tool"
      12. Click "Select content"
      13. Select all check boxes next to "Assign 1"
      14. Click "Add content"
      15. Make sure "Share emails with the tool" and "share names with the tool" is selected.
      16. Save
      17. Repeat the process to publish "Assign 2" the same way.
      18. Verify both activities are created.
      19. Launch each activity as the teacher (first launch allows the member sync to take place).
      20. On the course home, edit the "Assign 2" activity
      21. Add an access restriction based on activity completion "The activity Label 1 is marked complete"
      22. Save.
      23. Now, log out of the platform.

      Link level memberships check

      1. Log into the platform as student s1
      2. Go to the couse "Platform course 1"
      3. Verify you cannot access "Assign 2"
      4. Manually mark the label as complete.
      5. Verify you can now access "Assign 2"
      6. Launch "Assign 2"
      7. Verify you can view the assignment
      8. Now log out of the platform.
      9. Log in to the platform as user s2
      10. Go to the course "Platform course 1"
      11. Manually the label "Label 1" as complete but DO NOT launch the "Assign 1" resource.
      12. Log out of the platform.
      13. Log in to the tool as the user t1
      14. Go to the course "Tool course 1"
      15. Go to participants
      16. Verify you see entries for users t1 and s1 from the platform
      17. Stay on this page.
      18. Now, run the member sync task via cli.

        php admin/cli/scheduled_task.php --execute='\enrol_lti\local\ltiadvantage\task\sync_members'
        

      19. Verify the task runs without any errors.
      20. Go back to the tool participants page and reload.
      21. Verify you now see the following enrolments:
        • User s1 from the platform, with 2 enrolment methods "Assign 1" and "Assign 2"
        • User s2 from the platform, with 2 enrolment methods "Assign 1" and "Assign 2"
        • User s3 from the platform, with 1 enrolment methods "Assign 1"
        • User s4 from the platform, with 1 enrolment methods "Assign 1"
        • User s5 from the platform, with 1 enrolment methods "Assign 1"
        • User t1 from the platform, with 2 enrolment methods "Assign 1" and "Assign 2"

      Mode "enrol and unenrol" (the default)

      1. Continuing on from above..
      2. Now, login to the platform as teacher t1
      3. Go to the course "Platform course 1"
      4. Enrol the user s6 as a student
      5. Unenrol user s5
      6. Now, run the member sync task via cli.

        php admin/cli/scheduled_task.php --execute='\enrol_lti\local\ltiadvantage\task\sync_members'
        

      7. Verify the task runs without any errors.
      8. Go back to the tool participants page and reload.
      9. Verify:
        • You don't see the user s5 listed any more
        • You see user s6 listed with 1 enrolment method for "Assign 1".

      Mode "enrol new"

      1. Continuing on from above..
      2. Login to the tool site as the teacher t1
      3. Go to course "Tool course 1"
      4. Edit the published resource "Assign 1"
      5. Expand "Remote system" and set "user sync mode" to "Enrol new users"
      6. Save
      7. Now, login to the platform as teacher t1
      8. Go to the course "Platform course 1"
      9. Enrol the user s6 as a student
      10. Unenrol user s6
      11. Enrol user s7 as a student
      12. Now, run the member sync task via cli.

        php admin/cli/scheduled_task.php --execute='\enrol_lti\local\ltiadvantage\task\sync_members'
        

      13. Verify the task runs without any errors.
      14. Go back to the tool participants page and reload.
      15. Verify:
        • You still see the user s6 listed (i.e. they haven't been unenrolled)
        • You see user s7 listed with 1 enrolment method for "Assign 1".

      Mode "unenrol missing"

      1. Continuing on from above..
      2. Login to the tool site as the teacher t1
      3. Go to course "Tool course 1"
      4. Edit the published resource "Assign 1"
      5. Expand "Remote system" and set "user sync mode" to "Unenrol missing"
      6. Save
      7. Now, login to the platform as teacher t1
      8. Go to the course "Platform course 1"
      9. Enrol user s8 as a student
      10. Now, run the member sync task via cli.

        php admin/cli/scheduled_task.php --execute='\enrol_lti\local\ltiadvantage\task\sync_members'
        

      11. Verify the task runs without any errors.
      12. Go back to the tool participants page and reload.
      13. Verify:
        • You don't see user s6 listed (i.e. they have been unenrolled)
        • You don't see user s8 listed (i.e. they haven't been enrolled)

      Membership sync disabled

      1. Continuing on from above..
      2. Login to the tool site as the teacher t1
      3. Go to course "Tool course 1"
      4. Edit the published resource "Assign 1"
      5. Expand "Remote system" and set "User sync mode" to "Enrol and unenrol"
      6. Save
      7. Edit again and set "user synchronisation" to "No"
      8. Save again
      9. Now, run the member sync task via cli.

        php admin/cli/scheduled_task.php --execute='\enrol_lti\local\ltiadvantage\task\sync_members'
        

      10. Verify you don't see any task output mentioning syncing of memberships for resources.
      11. Go back to the tool participants page and reload.
      12. Verify:
        • You still don't see user s8 listed (i.e. they haven't been enrolled)
      Show
      Note: Member sync is covered by unit tests, however, it's probably a good idea to test manually to verify the tests are making the right assertions. Prerequisites You'll need two Moodle sites running on localhost for this test - one designated 'platform', one 'tool'. A course called "Platform course 1", in the platform site with: 5 Students: s1, s2, s3, s4, s5 2 Teachers: t1 and t2 A course called "Tool course 1" in the tool site with: An assignment called "Assign 1" with a max grade of 80. An assignment called "Assign 2" with default settings (max grade of 100) A file resource (representing a non-graded activity) A single teacher, t1, enrolled. A course called "Tool course 2" in the tool site with: A single teacher t2 enrolled In the tool site admin settings: Enable enrol_lti and auth_lti plugins Enable "Allow frame embedding" Register the tool and platform Note: This is a shortened process of setting up the Moodle LTI Advantage Tool. If you've already set this up as part of another test, you can safely skip this section. On the tool site, go to Admin > Plugins > Enrolments > Publish as LTI tool > Tool registration Keep this page open, we'll need it shortly. On the platform site, go to 'Admin > Plugins > Activity modules > External tool > Manage tools' Click 'Configure a tool manually' Enter the following values: In "Name" enter "Moodle LTI Advantage Tool" Set 'LTI Version' to 1.3 Set public key type to 'Keyset URL' In 'Tool URL', paste the value copied from "Tool URL" in the tool. In 'Public keyset' paste the value copied from"JWKS URL" in the tool In 'Initiate login URL', paste the value copied from "Initiate login URL" in the tool In 'Redirection URI(s)' paste the value copied from BOTH "Tool URL" and "Deep linking URL" rows in the tool. Make sure each is on its own line. Check 'Supports deep linking' In 'Content selection URL', paste the value copied from "Deep linking URL" in the tool Under "Services" set "IMS LTI Assignment and Grade Services" to "Use this service for grade sync and column management" Under "Services" set "IMS LTI Names and Role Provisioning" to "Use this service to retrieve members' information as per privacy settings" Set tools settings to "Do not use this service" Set "Tool configuration usage" to "Show in activity chooser and as a preconfigured tool" Save the tool (you'll be taken to the manage tools page again) For the tool you just created, click "View configuration details" Copy these configuration details somewhere, or be ready to access them again. Now, switch back to the tool site Under "Registered platforms" click "Register a platform" Enter the following values: Set "Platform name" to 'Moodle platform' In "Platform Id (Issuer)" paste the value you copied from the "Platform ID" field in the configuration details In "Client ID" paste the value you copied from the "Client ID" field in the configuration details In "Authentication request URL" paste the value you copied from "Authentication request URL" in the configuration details In "Public keyset URL" paste the value you copied from "Public keyset URL" in the configuration details In "Access token URL" paste the value you copied from "Access token URL" in the configuration details Save changes Click "Manage deployments" next to the registration you just created Click "Add a deployment" Set the following values: In "Name" enter "Site wide deployment" In "Deployment Id" paste the value you copied from "Deployment Id" in the the configuration details Save the deployment Log out of both tool and platform. Publish activities and set up platform resource links Log in to the tool site as t1 Click "Published as LTI Tools" in course setting Click "Add new" Publish the "Assign 1" resource, using all default settings (this ensures membersync is enabled) Repeat the process and publish the "Assign 2" resource Now log out of the tool. In the platform, log in as teacher t1 Go to "Platform course 1" Add a label activity "Label 1" in section 1, setting completion to "students can manually mark this activity as complete" Click to add an activity/resource Select "Moodle LTI Advantage Tool" Click "Select content" Select all check boxes next to "Assign 1" Click "Add content" Make sure "Share emails with the tool" and "share names with the tool" is selected. Save Repeat the process to publish "Assign 2" the same way. Verify both activities are created. Launch each activity as the teacher (first launch allows the member sync to take place). On the course home, edit the "Assign 2" activity Add an access restriction based on activity completion "The activity Label 1 is marked complete" Save. Now, log out of the platform. Link level memberships check Log into the platform as student s1 Go to the couse "Platform course 1" Verify you cannot access "Assign 2" Manually mark the label as complete. Verify you can now access "Assign 2" Launch "Assign 2" Verify you can view the assignment Now log out of the platform. Log in to the platform as user s2 Go to the course "Platform course 1" Manually the label "Label 1" as complete but DO NOT launch the "Assign 1" resource. Log out of the platform. Log in to the tool as the user t1 Go to the course "Tool course 1" Go to participants Verify you see entries for users t1 and s1 from the platform Stay on this page. Now, run the member sync task via cli. php admin/cli/scheduled_task.php --execute='\enrol_lti\local\ltiadvantage\task\sync_members' Verify the task runs without any errors. Go back to the tool participants page and reload. Verify you now see the following enrolments: User s1 from the platform, with 2 enrolment methods "Assign 1" and "Assign 2" User s2 from the platform, with 2 enrolment methods "Assign 1" and "Assign 2" User s3 from the platform, with 1 enrolment methods "Assign 1" User s4 from the platform, with 1 enrolment methods "Assign 1" User s5 from the platform, with 1 enrolment methods "Assign 1" User t1 from the platform, with 2 enrolment methods "Assign 1" and "Assign 2" Mode "enrol and unenrol" (the default) Continuing on from above.. Now, login to the platform as teacher t1 Go to the course "Platform course 1" Enrol the user s6 as a student Unenrol user s5 Now, run the member sync task via cli. php admin/cli/scheduled_task.php --execute='\enrol_lti\local\ltiadvantage\task\sync_members' Verify the task runs without any errors. Go back to the tool participants page and reload. Verify : You don't see the user s5 listed any more You see user s6 listed with 1 enrolment method for "Assign 1". Mode "enrol new" Continuing on from above.. Login to the tool site as the teacher t1 Go to course "Tool course 1" Edit the published resource "Assign 1" Expand "Remote system" and set "user sync mode" to "Enrol new users" Save Now, login to the platform as teacher t1 Go to the course "Platform course 1" Enrol the user s6 as a student Unenrol user s6 Enrol user s7 as a student Now, run the member sync task via cli. php admin/cli/scheduled_task.php --execute='\enrol_lti\local\ltiadvantage\task\sync_members' Verify the task runs without any errors. Go back to the tool participants page and reload. Verify : You still see the user s6 listed (i.e. they haven't been unenrolled) You see user s7 listed with 1 enrolment method for "Assign 1". Mode "unenrol missing" Continuing on from above.. Login to the tool site as the teacher t1 Go to course "Tool course 1" Edit the published resource "Assign 1" Expand "Remote system" and set "user sync mode" to "Unenrol missing" Save Now, login to the platform as teacher t1 Go to the course "Platform course 1" Enrol user s8 as a student Now, run the member sync task via cli. php admin/cli/scheduled_task.php --execute='\enrol_lti\local\ltiadvantage\task\sync_members' Verify the task runs without any errors. Go back to the tool participants page and reload. Verify : You don't see user s6 listed (i.e. they have been unenrolled) You don't see user s8 listed (i.e. they haven't been enrolled) Membership sync disabled Continuing on from above.. Login to the tool site as the teacher t1 Go to course "Tool course 1" Edit the published resource "Assign 1" Expand "Remote system" and set "User sync mode" to "Enrol and unenrol" Save Edit again and set "user synchronisation" to "No" Save again Now, run the member sync task via cli. php admin/cli/scheduled_task.php --execute='\enrol_lti\local\ltiadvantage\task\sync_members' Verify you don't see any task output mentioning syncing of memberships for resources. Go back to the tool participants page and reload. Verify : You still don't see user s8 listed (i.e. they haven't been enrolled)
    • Affected Branches:
      MOODLE_311_STABLE, MOODLE_400_STABLE
    • Pull from Repository:
    • Pull Master Branch:
      MDL-69545-master
    • Story Points:
      1
    • Sprint:
      4.0 Navigation blitz 3

      Description

      This issue deals with updating the user sync task in:
      enrol/lti/classes/task/sync_users.php

      User sync should use names and roles provisioning service 2:
      https://www.imsglobal.org/spec/lti-nrps/v2p0

      More detail will be added here as the project progresses

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              jaked Jake Dallimore
              Reporter:
              jaked Jake Dallimore
              Participants:
              Component watchers:
              Adrian Greeve, Jake Dallimore, Mathew May, Mihail Geshoski, Peter Dias, Sujith Haridasan
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 2 weeks
                  2w