Sha256: f25f69fc26c842deed6c05bb91b1e21ab6df3f785dce691580eb3259d497d1cf

Contents?: true

Size: 1.91 KB

Versions: 19

Compression:

Stored size: 1.91 KB

Contents

require 'spec_helper'

describe 'Accessing server resources using the API' do
  let(:api_client) {Postmark::ApiClient.new(ENV['POSTMARK_API_KEY'], :http_open_timeout => 15)}
  let(:recipient) {ENV['POSTMARK_CI_RECIPIENT']}
  let(:message) {
    {
        :from => ENV['POSTMARK_CI_SENDER'],
        :to => recipient,
        :subject => "Mail::Message object",
        :text_body => "Lorem ipsum dolor sit amet, consectetur adipisicing elit, " \
                    "sed do eiusmod tempor incididunt ut labore et dolore " \
                    "magna aliqua."
    }
  }

  context 'Messages API' do
    def with_retries(max_retries = 20, wait_seconds = 3)
      yield
    rescue => e
      retries = retries ? retries + 1 : 1
      if retries < max_retries
        sleep wait_seconds
        retry
      else
        raise e
      end
    end

    it 'is possible to send a message and access its details via the Messages API' do
      response = api_client.deliver(message)
      message = with_retries {api_client.get_message(response[:message_id])}
      expect(message[:recipients]).to include(recipient)
    end

    it 'is possible to send a message and dump it via the Messages API' do
      response = api_client.deliver(message)
      dump = with_retries {api_client.dump_message(response[:message_id])}
      expect(dump[:body]).to include('Mail::Message object')
    end

    it 'is possible to send a message and find it via the Messages API' do
      response = api_client.deliver(message)
      expect {
        with_retries {
          messages = api_client.get_messages(:recipient => recipient,
                                             :fromemail => message[:from],
                                             :subject => message[:subject])
          unless messages.map {|m| m[:message_id]}.include?(response[:message_id])
            raise 'Message not found'
          end
        }
      }.not_to raise_error
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
postmark-1.25.1 spec/integration/api_client_resources_spec.rb
postmark-1.25.0 spec/integration/api_client_resources_spec.rb
postmark-1.24.1 spec/integration/api_client_resources_spec.rb
postmark-1.24.0 spec/integration/api_client_resources_spec.rb
postmark-1.23.0 spec/integration/api_client_resources_spec.rb
postmark-1.22.3 spec/integration/api_client_resources_spec.rb
postmark-1.22.2 spec/integration/api_client_resources_spec.rb
postmark-1.22.1 spec/integration/api_client_resources_spec.rb
postmark-1.22.0 spec/integration/api_client_resources_spec.rb
postmark-1.21.8 spec/integration/api_client_resources_spec.rb
postmark-1.21.7 spec/integration/api_client_resources_spec.rb
postmark-1.21.6 spec/integration/api_client_resources_spec.rb
postmark-1.21.5 spec/integration/api_client_resources_spec.rb
postmark-1.21.4 spec/integration/api_client_resources_spec.rb
postmark-1.21.3 spec/integration/api_client_resources_spec.rb
postmark-1.21.2 spec/integration/api_client_resources_spec.rb
postmark-1.21.1 spec/integration/api_client_resources_spec.rb
postmark-1.21.0 spec/integration/api_client_resources_spec.rb
postmark-1.20.0 spec/integration/api_client_resources_spec.rb