module Aws::Rails::ActionMailbox::RSpec

def action_mailbox_ses_deliver_email(options = {})

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

def action_mailbox_ses_deliver_subscription_confirmation(options = {})

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

def message_verifier(subscription_confirmation)

def message_verifier(subscription_confirmation)
  instance_double(Aws::SNS::MessageVerifier, authentic?: subscription_confirmation.authentic?)
end

def stub_aws_sns_message_verifier(notification)

def stub_aws_sns_message_verifier(notification)
  allow(Aws::Rails::ActionMailbox::SnsMessageVerifier).to receive(:verifier) { message_verifier(notification) }
end

def stub_aws_sns_subscription_request

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