module Aws::Rails::ActionMailbox::RSpec

it 'delivers an email notification' do
  action_mailbox_ses_deliver_email(mail: Mail.new(to: 'user@example.com'))
  expect(ActionMailbox::InboundEmail.last.mail.recipients).to eql ['user@example.com']
end

end

Public Instance Methods

action_mailbox_ses_deliver_email(options = {}) click to toggle source
# File lib/aws/rails/action_mailbox/rspec.rb, line 40
def action_mailbox_ses_deliver_email(options = {})
  email = Email.new(**options)
  stub_aws_sns_message_verifier(email)

  post email.url,
       params: email.params,
       headers: email.headers,
       as: :json
end
action_mailbox_ses_deliver_subscription_confirmation(options = {}) click to toggle source
# File lib/aws/rails/action_mailbox/rspec.rb, line 29
def action_mailbox_ses_deliver_subscription_confirmation(options = {})
  subscription_confirmation = SubscriptionConfirmation.new(**options)
  stub_aws_sns_message_verifier(subscription_confirmation)
  stub_aws_sns_subscription_request

  post subscription_confirmation.url,
       params: subscription_confirmation.params,
       headers: subscription_confirmation.headers,
       as: :json
end

Private Instance Methods

message_verifier(subscription_confirmation) click to toggle source
# File lib/aws/rails/action_mailbox/rspec.rb, line 52
def message_verifier(subscription_confirmation)
  instance_double(Aws::SNS::MessageVerifier, authentic?: subscription_confirmation.authentic?)
end
stub_aws_sns_message_verifier(notification) click to toggle source
# File lib/aws/rails/action_mailbox/rspec.rb, line 56
def stub_aws_sns_message_verifier(notification)
  allow(Aws::Rails::ActionMailbox::SnsMessageVerifier).to receive(:verifier) { message_verifier(notification) }
end
stub_aws_sns_subscription_request() click to toggle source
# File lib/aws/rails/action_mailbox/rspec.rb, line 60
def stub_aws_sns_subscription_request
  allow(Net::HTTP).to receive(:get_response).and_call_original
  allow(Net::HTTP)
    .to receive(:get_response)
      .with(URI('http://example.com/subscribe')) { double(code: '200') }
end