Merge pull request #10980 from colinux/helpscout-more-validation
ETQ tech, réduit le bruit Helpscout sur Sentry
This commit is contained in:
commit
c56aa67297
2 changed files with 24 additions and 0 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue