Merge pull request #10980 from colinux/helpscout-more-validation

ETQ tech, réduit le bruit Helpscout sur Sentry
This commit is contained in:
Paul Chavard 2024-10-24 09:31:51 +00:00 committed by GitHub
commit c56aa67297
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 0 deletions

View file

@ -2,6 +2,9 @@
class HelpscoutCreateConversationJob < ApplicationJob class HelpscoutCreateConversationJob < ApplicationJob
queue_as :critical # user feedback is critical queue_as :critical # user feedback is critical
def max_attempts = 15 # ~10h
class FileNotScannedYetError < StandardError class FileNotScannedYetError < StandardError
end end
@ -22,6 +25,10 @@ class HelpscoutCreateConversationJob < ApplicationJob
create_conversation create_conversation
contact_form.delete contact_form.delete
rescue StandardError
contact_form.delete if executions >= max_attempts
raise
end end
private private
@ -49,6 +56,7 @@ class HelpscoutCreateConversationJob < ApplicationJob
def safe_blob def safe_blob
return if !contact_form.piece_jointe.virus_scanner&.safe? return if !contact_form.piece_jointe.virus_scanner&.safe?
return if contact_form.piece_jointe.byte_size.zero? # HS don't support empty attachment
contact_form.piece_jointe contact_form.piece_jointe
end end

View file

@ -110,5 +110,21 @@ RSpec.describe HelpscoutCreateConversationJob, type: :job do
end end
end end
end end
context 'when max attempts are reached' do
before do
allow(api).to receive(:create_conversation).and_raise(StandardError)
allow_any_instance_of(described_class).to receive(:executions).and_return(described_class.new.max_attempts)
end
it 'deletes the contact form' do
expect { subject }.to raise_error(StandardError)
expect(contact_form).to be_destroyed
end
it 'does not enqueue the job again' do
expect { subject rescue nil }.not_to have_enqueued_job(described_class)
end
end
end end
end end