feat(LTI): Add LTI API show endpoint for external tools

flag = none
refs: CAL-23

Test Plan:
  - Specs pass

Change-Id: Ia90f71640693fb6202ba62540d15be00717896bb
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/236650
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Alex Slaughter <aslaughter@instructure.com>
Product-Review: Alex Slaughter <aslaughter@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
This commit is contained in:
Alex Slaughter 2020-05-07 21:07:10 -07:00
parent b0e406cdbb
commit 889c336b9b
3 changed files with 20 additions and 4 deletions

View File

@ -47,12 +47,13 @@ module Lti
end
def show
# Will add in seperate PS
tool = tools.active.find(params['external_tool_id'])
render json: external_tool_json(tool, context, @current_user, session), content_type: MIME_TYPE
end
def index
@tools = Api.paginate(ContextExternalTool.all_tools_for(context), self, account_external_tools_index_path(params[:account_id]))
render json: external_tools_json(@tools, context, @current_user, session), content_type: MIME_TYPE
api = Api.paginate(tools, self, account_external_tools_index_path(params[:account_id]))
render json: external_tools_json(api, context, @current_user, session), content_type: MIME_TYPE
end
def destroy
@ -65,6 +66,10 @@ module Lti
ACTION_SCOPE_MATCHERS.fetch(action_name, self.class.none)
end
def tools
@tools ||= ContextExternalTool.all_tools_for(context)
end
def context
@context ||= Account.active.find_by(lti_context_id: params[:account_id])
end

View File

@ -59,7 +59,7 @@ class TokenScopes
}.freeze
LTI_AGS_SCOPES = [ LTI_AGS_LINE_ITEM_SCOPE, LTI_AGS_LINE_ITEM_READ_ONLY_SCOPE, LTI_AGS_RESULT_READ_ONLY_SCOPE, LTI_AGS_SCORE_SCOPE ].freeze
LTI_HIDDEN_SCOPES = {
LTI_CREATE_ACCOUNT_EXTERNAL_TOOLS_SCOPE => I18n.t("Can create extneral tools."),
LTI_CREATE_ACCOUNT_EXTERNAL_TOOLS_SCOPE => I18n.t("Can create external tools."),
LTI_DESTROY_ACCOUNT_EXTERNAL_TOOLS_SCOPE => I18n.t("Can destroy external tools."),
LTI_LIST_ACCOUNT_EXTERNAL_TOOLS_SCOPE => I18n.t("Can list external tools."),
LTI_SHOW_ACCOUNT_EXTERNAL_TOOLS_SCOPE => I18n.t("Can show external tools."),

View File

@ -31,6 +31,17 @@ describe Lti::AccountExternalToolsController do
root_account.save
end
describe '#show' do
it_behaves_like 'lti services' do
let(:action) { :show }
let(:expected_mime_type) { described_class::MIME_TYPE }
let(:scope_to_remove) { "https://canvas.instructure.com/lti/account_external_tools/scope/show"}
let(:params_overrides) do
{ account_id: root_account.lti_context_id, external_tool_id: tool.id }
end
end
end
describe '#index' do
it_behaves_like 'lti services' do
let(:action) { :index }