Index webhook subscription (LTI2 API)
Fixes PLAT-2130 Test Plan: - Create several valid subscriptions in the subscription service - Using a JWT access token in the authentication header, do a GET request to /api/lti/subscriptions (Note that the tool doing this request must use the same dev key as the one that created the subscriptions). - Verify the subscriptions are retrieved - Attempt to retrieve the subscriptions using the same endpoint without an authorization header. Verify 401 is returned Change-Id: I04396d41a4c3e9e97b45c66d8a700449f5a277df Reviewed-on: https://gerrit.instructure.com/103335 Reviewed-by: Nathan Mills <nathanm@instructure.com> QA-Review: August Thornton <august@instructure.com> Tested-by: Jenkins Product-Review: Weston Dransfield <wdransfield@instructure.com>
This commit is contained in:
parent
c4d6c55b12
commit
ec689e7fae
|
@ -105,6 +105,13 @@ module Lti
|
||||||
forward_service_response(service_response)
|
forward_service_response(service_response)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# @API List all Webhook Subscription for a tool proxy
|
||||||
|
def index
|
||||||
|
service_response = Services::LiveEventsSubscriptionService.tool_proxy_subscriptions(tool_proxy)
|
||||||
|
forward_service_response(service_response)
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def forward_service_response(service_response)
|
def forward_service_response(service_response)
|
||||||
|
|
|
@ -1952,6 +1952,7 @@ CanvasRails::Application.routes.draw do
|
||||||
delete "subscriptions/:id", action: :destroy
|
delete "subscriptions/:id", action: :destroy
|
||||||
get "subscriptions/:id", action: :show
|
get "subscriptions/:id", action: :show
|
||||||
put "subscriptions/:id", action: :update
|
put "subscriptions/:id", action: :update
|
||||||
|
get "subscriptions", action: :index
|
||||||
end
|
end
|
||||||
|
|
||||||
%w(course account).each do |context|
|
%w(course account).each do |context|
|
||||||
|
|
|
@ -12,6 +12,7 @@ module Lti
|
||||||
let(:delete_endpoint){ "/api/lti/subscriptions/#{subscription_id}" }
|
let(:delete_endpoint){ "/api/lti/subscriptions/#{subscription_id}" }
|
||||||
let(:update_endpoint){ "/api/lti/subscriptions/#{subscription_id}" }
|
let(:update_endpoint){ "/api/lti/subscriptions/#{subscription_id}" }
|
||||||
let(:create_endpoint){ "/api/lti/subscriptions" }
|
let(:create_endpoint){ "/api/lti/subscriptions" }
|
||||||
|
let(:index_endpoint){ "/api/lti/subscriptions" }
|
||||||
|
|
||||||
let(:ok_response){ double(code: 200, body: subscription.to_json) }
|
let(:ok_response){ double(code: 200, body: subscription.to_json) }
|
||||||
let(:not_found_response){ double(code: 404, body: "{}") }
|
let(:not_found_response){ double(code: 404, body: "{}") }
|
||||||
|
@ -223,5 +224,33 @@ module Lti
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#index' do
|
||||||
|
before(:each) do
|
||||||
|
allow_any_instance_of(Lti::ToolProxy).to receive(:active_in_context?).with(an_instance_of(Account)).and_return(true)
|
||||||
|
tool_proxy[:raw_data]['enabled_capability'] = %w(vnd.instructure.webhooks.assignment.attachment_created)
|
||||||
|
tool_proxy.save!
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'shows subscriptions for a tool proxy' do
|
||||||
|
allow(subscription_service).to receive_messages(tool_proxy_subscriptions: ok_response)
|
||||||
|
get index_endpoint, {}, request_headers
|
||||||
|
expect(response).to be_success
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'checks that the tool proxy has an active developer key' do
|
||||||
|
product_family.update_attributes(developer_key: nil)
|
||||||
|
allow(subscription_service).to receive_messages(tool_proxy_subscription: ok_response)
|
||||||
|
tool_proxy[:raw_data]['enabled_capability'] = %w(vnd.instructure.webhooks.assignment.attachment_created)
|
||||||
|
tool_proxy.save!
|
||||||
|
get index_endpoint, {}, request_headers
|
||||||
|
expect(response).to be_unauthorized
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'requires JWT Access token' do
|
||||||
|
get index_endpoint, {}
|
||||||
|
expect(response).to be_unauthorized
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue