From 4f5b16107226d51871896d63243190b7ed1d600c Mon Sep 17 00:00:00 2001 From: Dan McCallum Date: Tue, 9 Oct 2018 12:38:07 -0700 Subject: [PATCH] Change NRPS service_version sub-claim to service_versions - Per recent NRPS vs spec change, the `service_version` LTI 1.3 launch sub-claim is renamed to `service_versions` and its type changed from a string to an array of strings. (The expressed version itself is still the same, i.e. it just appears as ["2.0"] instead of an unwrapped "2.0".) Closes LTIA-35 WIP Test Plan: - Verify LTI 1.3 launches to the IMS Reference Implementation include a https://purl.imsglobal.org/spec/lti-nrps/claim/namesroleservice claim with a `"service_versions": ["2.0"]` sub-claim Change-Id: I53801d633166a07c571e106cc60256729059fdcf Reviewed-on: https://gerrit.instructure.com/167714 QA-Review: Samuel Barney Tested-by: Jenkins Product-Review: Karl Lloyd Reviewed-by: Marc Phillips --- .../claims/names_and_roles_service.rb | 4 +-- lib/lti/messages/jwt_message.rb | 2 +- spec/lib/lti/messages/jwt_message_spec.rb | 26 +++++++++---------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/gems/lti-advantage/lib/lti_advantage/claims/names_and_roles_service.rb b/gems/lti-advantage/lib/lti_advantage/claims/names_and_roles_service.rb index 297189003e8..88a386496ee 100644 --- a/gems/lti-advantage/lib/lti_advantage/claims/names_and_roles_service.rb +++ b/gems/lti-advantage/lib/lti_advantage/claims/names_and_roles_service.rb @@ -7,8 +7,8 @@ module LtiAdvantage::Claims include ActiveModel::Model attr_accessor :context_memberships_url, - :service_version + :service_versions - validates_presence_of :context_memberships_url, :service_version + validates_presence_of :context_memberships_url, :service_versions end end diff --git a/lib/lti/messages/jwt_message.rb b/lib/lti/messages/jwt_message.rb index 92f75d6659a..9c0c6acabe6 100644 --- a/lib/lti/messages/jwt_message.rb +++ b/lib/lti/messages/jwt_message.rb @@ -137,7 +137,7 @@ module Lti::Messages def add_names_and_roles_service_claims! @message.names_and_roles_service.context_memberships_url = @expander.controller.polymorphic_url([@context, :names_and_roles]) - @message.names_and_roles_service.service_version = '2.0' + @message.names_and_roles_service.service_versions = ['2.0'] end def expand_variable(variable) diff --git a/spec/lib/lti/messages/jwt_message_spec.rb b/spec/lib/lti/messages/jwt_message_spec.rb index 2e7ee9ca869..a779576889a 100644 --- a/spec/lib/lti/messages/jwt_message_spec.rb +++ b/spec/lib/lti/messages/jwt_message_spec.rb @@ -248,6 +248,16 @@ describe Lti::Messages::JwtMessage do end end + shared_examples 'names and roles claim check' do + it 'sets the NRPS url' do + expect(message_names_and_roles_service['context_memberships_url']).to eq 'polymorphic_url' + end + + it 'sets the NRPS version' do + expect(message_names_and_roles_service['service_versions']).to eq ['2.0'] + end + end + describe 'names and roles' do let(:message_names_and_roles_service) { decoded_jwt['https://purl.imsglobal.org/spec/lti-nrps/claim/namesroleservice'] } @@ -285,12 +295,8 @@ describe Lti::Messages::JwtMessage do course.root_account.save! end - it 'sets the NRPS url' do - expect(message_names_and_roles_service['context_memberships_url']).to eq 'polymorphic_url' - end - - it 'sets the NRPS version' do - expect(message_names_and_roles_service['service_version']).to eq '2.0' + context 'when context is a course' do + it_behaves_like 'names and roles claim check' end context 'when context is an account' do @@ -330,13 +336,7 @@ describe Lti::Messages::JwtMessage do ) end - it 'sets the NRPS url' do - expect(message_names_and_roles_service['context_memberships_url']).to eq 'polymorphic_url' - end - - it 'sets the NRPS version' do - expect(message_names_and_roles_service['service_version']).to eq '2.0' - end + it_behaves_like 'names and roles claim check' end end end