mirror of
https://github.com/discourse/discourse.git
synced 2024-11-28 19:53:53 -06:00
FIX: correctly deletes webhook_events with webhook (#23097)
Each time a message is created through a webhook, we create we webhook_event associated to this webhook. When destroying a webhook, we were not destroying the webhook_events which was causing orphans records and more importantly errors in the app expecting to find and associated webhook.
This commit is contained in:
parent
e722a14700
commit
2d782c7b00
@ -5,7 +5,10 @@ module Chat
|
||||
self.table_name = "incoming_chat_webhooks"
|
||||
|
||||
belongs_to :chat_channel, class_name: "Chat::Channel"
|
||||
has_many :chat_webhook_events, class_name: "Chat::WebhookEvent"
|
||||
has_many :chat_webhook_events,
|
||||
foreign_key: "incoming_chat_webhook_id",
|
||||
class_name: "Chat::WebhookEvent",
|
||||
dependent: :delete_all
|
||||
|
||||
before_create { self.key = SecureRandom.hex(12) }
|
||||
|
||||
|
10
plugins/chat/spec/models/chat/incoming_webhook_spec.rb
Normal file
10
plugins/chat/spec/models/chat/incoming_webhook_spec.rb
Normal file
@ -0,0 +1,10 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
RSpec.describe Chat::IncomingWebhook do
|
||||
it do
|
||||
is_expected.to have_many(:chat_webhook_events)
|
||||
.with_foreign_key("incoming_chat_webhook_id")
|
||||
.class_name("Chat::WebhookEvent")
|
||||
.dependent(:delete_all)
|
||||
end
|
||||
end
|
@ -132,5 +132,20 @@ RSpec.describe Chat::Admin::IncomingWebhooksController do
|
||||
Chat::IncomingWebhook.count
|
||||
}.by(-1)
|
||||
end
|
||||
|
||||
it "destroys webhook events records" do
|
||||
sign_in(admin)
|
||||
|
||||
Chat::MessageCreator.create(
|
||||
chat_channel: existing.chat_channel,
|
||||
user: Discourse.system_user,
|
||||
content: "foo",
|
||||
incoming_chat_webhook: existing,
|
||||
)
|
||||
|
||||
expect { delete "/admin/plugins/chat/hooks/#{existing.id}.json" }.to change {
|
||||
Chat::WebhookEvent.count
|
||||
}.by(-1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user