mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: retry processing incoming emails on rate limit
This commit is contained in:
27
spec/components/email/processor_spec.rb
Normal file
27
spec/components/email/processor_spec.rb
Normal file
@@ -0,0 +1,27 @@
|
||||
require "rails_helper"
|
||||
require "email/processor"
|
||||
|
||||
describe Email::Processor do
|
||||
|
||||
describe "rate limits" do
|
||||
|
||||
let(:mail) { "From: foo@bar.com\nTo: bar@foo.com\nSubject: FOO BAR\n\nFoo foo bar bar?" }
|
||||
let(:limit_exceeded) { RateLimiter::LimitExceeded.new(10) }
|
||||
|
||||
before do
|
||||
Email::Receiver.any_instance.expects(:process!).raises(limit_exceeded)
|
||||
end
|
||||
|
||||
it "enqueues a background job by default" do
|
||||
Jobs.expects(:enqueue).with(:process_email, mail: mail)
|
||||
Email::Processor.process!(mail)
|
||||
end
|
||||
|
||||
it "doesn't enqueue a background job when retry is disabled" do
|
||||
Jobs.expects(:enqueue).with(:process_email, mail: mail).never
|
||||
expect { Email::Processor.process!(mail, false) }.to raise_error(limit_exceeded)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
12
spec/jobs/process_email_spec.rb
Normal file
12
spec/jobs/process_email_spec.rb
Normal file
@@ -0,0 +1,12 @@
|
||||
require "rails_helper"
|
||||
|
||||
describe Jobs::ProcessEmail do
|
||||
|
||||
let(:mail) { "From: foo@bar.com\nTo: bar@foo.com\nSubject: FOO BAR\n\nFoo foo bar bar?" }
|
||||
|
||||
it "process an email without retry" do
|
||||
Email::Processor.expects(:process!).with(mail, false)
|
||||
Jobs::ProcessEmail.new.execute(mail: mail)
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user