FIX: Don't display webhooks for inactive plugins (#9206)
* FIX: Don't display webhooks for inactive plugins This commit ensures that we don't show webhooks for plugins that are not installed or that are disabled. Bug report: https://meta.discourse.org/t/webhookeventtype-and-the-solved-and-assign-plugins/144180 * rename to just 'active', it's cleaner
This commit is contained in:
parent
e950471c0f
commit
919e405c48
|
@ -16,7 +16,7 @@ class Admin::WebHooksController < Admin::AdminController
|
|||
json = {
|
||||
web_hooks: serialize_data(web_hooks, AdminWebHookSerializer),
|
||||
extras: {
|
||||
event_types: WebHookEventType.all,
|
||||
event_types: WebHookEventType.active,
|
||||
default_event_types: WebHook.default_event_types,
|
||||
content_types: WebHook.content_types.map { |name, id| { id: id, name: name } },
|
||||
delivery_statuses: WebHook.last_delivery_statuses.map { |name, id| { id: id, name: name.to_s } },
|
||||
|
|
|
@ -19,6 +19,15 @@ class WebHookEventType < ActiveRecord::Base
|
|||
default_scope { order('id ASC') }
|
||||
|
||||
validates :name, presence: true, uniqueness: true
|
||||
|
||||
def self.active
|
||||
ids_to_exclude = []
|
||||
ids_to_exclude << SOLVED unless defined?(SiteSetting.solved_enabled) && SiteSetting.solved_enabled
|
||||
ids_to_exclude << ASSIGN unless defined?(SiteSetting.assign_enabled) && SiteSetting.assign_enabled
|
||||
|
||||
self.where.not(id: ids_to_exclude)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# == Schema Information
|
||||
|
|
|
@ -44,6 +44,22 @@ describe WebHook do
|
|||
expect(post_hook.payload_url).to eq("https://example.com")
|
||||
end
|
||||
|
||||
it "excludes disabled plugin web_hooks" do
|
||||
web_hook_event_types = WebHookEventType.active.find_by(name: 'solved')
|
||||
expect(web_hook_event_types).to eq(nil)
|
||||
end
|
||||
|
||||
it "includes non-plugin web_hooks" do
|
||||
web_hook_event_types = WebHookEventType.active.where(name: 'topic')
|
||||
expect(web_hook_event_types.count).to eq(1)
|
||||
end
|
||||
|
||||
it "includes enabled plugin web_hooks" do
|
||||
SiteSetting.stubs(:solved_enabled).returns(true)
|
||||
web_hook_event_types = WebHookEventType.active.where(name: 'solved')
|
||||
expect(web_hook_event_types.count).to eq(1)
|
||||
end
|
||||
|
||||
describe '#active_web_hooks' do
|
||||
it "returns unique hooks" do
|
||||
post_hook.web_hook_event_types << WebHookEventType.find_by(name: 'topic')
|
||||
|
|
Loading…
Reference in New Issue