diff --git a/app/models/anti_abuse/event.rb b/app/models/anti_abuse/event.rb index a0f4e79f491c76bdc0e2dffb6d3420660684e039..e2265048342979c6c221baf4bec276c9e1027a8d 100644 --- a/app/models/anti_abuse/event.rb +++ b/app/models/anti_abuse/event.rb @@ -7,10 +7,12 @@ class Event < ApplicationRecord validates :category, presence: true validates :source, presence: true validates :user, presence: true, on: :create + validates :organization_id, presence: true, on: :create validates :metadata, json_schema: { filename: 'abuse_event_metadata' }, allow_blank: true belongs_to :user, inverse_of: :abuse_events belongs_to :abuse_report, class_name: '::AbuseReport', inverse_of: :abuse_events + belongs_to :organization, class_name: 'Organizations::Organization' enum :category, Enums::Abuse::Category.categories enum :source, Enums::Abuse::Source.sources diff --git a/app/workers/anti_abuse/spam_abuse_events_worker.rb b/app/workers/anti_abuse/spam_abuse_events_worker.rb index 0a90840f09b620f7e38cb9322035ceabcd1e589a..6d9443acfeb966a0e9a8b712b626c9395251f40b 100644 --- a/app/workers/anti_abuse/spam_abuse_events_worker.rb +++ b/app/workers/anti_abuse/spam_abuse_events_worker.rb @@ -28,7 +28,6 @@ def perform(params) def report_user(params) category = 'spam' - reporter = Users::Internal.security_bot report_params = { user_id: params[:user_id], reporter: reporter, category: category, @@ -59,8 +58,13 @@ def create_abuse_event(abuse_report_id, params) user_agent: params[:user_agent], verdict: params[:verdict] }, source: :spamcheck, - user: user + user: user, + organization_id: reporter.organization_id ) end + + def reporter + @reporter ||= Users::Internal.security_bot + end end end diff --git a/spec/factories/anti_abuse/event.rb b/spec/factories/anti_abuse/event.rb index 877411769126f9cc771569acdc0db59d3397ded7..978b86f952587fda30e37d5f4c3b3afb1cd7fb00 100644 --- a/spec/factories/anti_abuse/event.rb +++ b/spec/factories/anti_abuse/event.rb @@ -9,5 +9,9 @@ trait(:with_abuse_report) do abuse_report end + + after(:build) do |event, evaluator| + event.organization ||= evaluator.user.organization + end end end diff --git a/spec/models/anti_abuse/event_spec.rb b/spec/models/anti_abuse/event_spec.rb index c310308e62845d499b528d57a6bd7a77556f1635..832c9b75a0367f1b477da3404159c38e57de0ccd 100644 --- a/spec/models/anti_abuse/event_spec.rb +++ b/spec/models/anti_abuse/event_spec.rb @@ -13,12 +13,14 @@ describe "associations" do it { is_expected.to belong_to(:user).class_name("User").inverse_of(:abuse_events) } it { is_expected.to belong_to(:abuse_report).inverse_of(:abuse_events) } + it { is_expected.to belong_to(:organization) } end describe "validations" do it { is_expected.to validate_presence_of(:source) } it { is_expected.to validate_presence_of(:category) } it { is_expected.to validate_presence_of(:user).on(:create) } + it { is_expected.to validate_presence_of(:organization_id).on(:create) } end describe 'enums' do diff --git a/spec/workers/anti_abuse/spam_abuse_events_worker_spec.rb b/spec/workers/anti_abuse/spam_abuse_events_worker_spec.rb index 76d1baf4b8772b11a53ffcdb8e78bbeed1329e7b..ba38f36dc0204fec60c8e19c45e4062cb4d433e4 100644 --- a/spec/workers/anti_abuse/spam_abuse_events_worker_spec.rb +++ b/spec/workers/anti_abuse/spam_abuse_events_worker_spec.rb @@ -26,7 +26,8 @@ category: "spam", metadata: params.except(:user_id), source: "spamcheck", - user_id: params[:user_id] + user_id: params[:user_id], + organization_id: Users::Internal.security_bot.organization_id }.deep_stringify_keys) end end