mailhandler 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +7 -0
- data/Gemfile.lock +44 -0
- data/Rakefile +3 -0
- data/lib/mailhandler/receiving/checker.rb +1 -1
- data/lib/mailhandler/sending/sender_api.rb +5 -3
- data/lib/mailhandler/version.rb +1 -1
- data/mailhandler.gemspec +9 -0
- data/readme.md +25 -11
- data/spec/spec_helper.rb +16 -0
- data/spec/unit/mailhandler/receiver_spec.rb +41 -0
- data/spec/unit/mailhandler/receiving/notification/console_spec.rb +29 -0
- data/spec/unit/mailhandler/receiving/notification/email/content_spec.rb +105 -0
- data/spec/unit/mailhandler/receiving/notification/email_spec.rb +7 -0
- data/spec/unit/mailhandler/sender_spec.rb +61 -0
- data/spec/unit/mailhandler_spec.rb +64 -0
- data/travis.yml +9 -0
- metadata +16 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9d007dfe2c9742d1099adc9d58f156bb147c9350
         | 
| 4 | 
            +
              data.tar.gz: 5d6a258c2706b9718379cf5ec101723f686010bd
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ec4bee8fcdbcbc9444e9b12a0cc328128971836e6ec435f4309784d3c619afac4b250b9e9d71772a7cecef69993d2c0163be61f515a0d9de53f089831f3596ff
         | 
| 7 | 
            +
              data.tar.gz: 4b61c6b691b1c016ffd64c0411a91480f3fe5fa82744e6a6fd4a6d79ebea19c5cda1b2caa3ecff8b43bb04bc678926a6d41d0b08e052de4343d4420c6105e9ba
         | 
    
        data/Gemfile
    ADDED
    
    
    
        data/Gemfile.lock
    ADDED
    
    | @@ -0,0 +1,44 @@ | |
| 1 | 
            +
            GEM
         | 
| 2 | 
            +
              remote: https://rubygems.org/
         | 
| 3 | 
            +
              specs:
         | 
| 4 | 
            +
                coderay (1.1.0)
         | 
| 5 | 
            +
                diff-lcs (1.2.5)
         | 
| 6 | 
            +
                json (1.8.3)
         | 
| 7 | 
            +
                mail (2.6.3)
         | 
| 8 | 
            +
                  mime-types (>= 1.16, < 3)
         | 
| 9 | 
            +
                method_source (0.8.2)
         | 
| 10 | 
            +
                mime-types (2.6.2)
         | 
| 11 | 
            +
                postmark (1.7.0)
         | 
| 12 | 
            +
                  json
         | 
| 13 | 
            +
                  rake
         | 
| 14 | 
            +
                pry (0.10.2)
         | 
| 15 | 
            +
                  coderay (~> 1.1.0)
         | 
| 16 | 
            +
                  method_source (~> 0.8.1)
         | 
| 17 | 
            +
                  slop (~> 3.4)
         | 
| 18 | 
            +
                rake (10.4.2)
         | 
| 19 | 
            +
                rspec (3.3.0)
         | 
| 20 | 
            +
                  rspec-core (~> 3.3.0)
         | 
| 21 | 
            +
                  rspec-expectations (~> 3.3.0)
         | 
| 22 | 
            +
                  rspec-mocks (~> 3.3.0)
         | 
| 23 | 
            +
                rspec-core (3.3.2)
         | 
| 24 | 
            +
                  rspec-support (~> 3.3.0)
         | 
| 25 | 
            +
                rspec-expectations (3.3.1)
         | 
| 26 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 27 | 
            +
                  rspec-support (~> 3.3.0)
         | 
| 28 | 
            +
                rspec-mocks (3.3.2)
         | 
| 29 | 
            +
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 30 | 
            +
                  rspec-support (~> 3.3.0)
         | 
| 31 | 
            +
                rspec-support (3.3.0)
         | 
| 32 | 
            +
                slop (3.6.0)
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            PLATFORMS
         | 
| 35 | 
            +
              ruby
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            DEPENDENCIES
         | 
| 38 | 
            +
              mail
         | 
| 39 | 
            +
              postmark
         | 
| 40 | 
            +
              pry
         | 
| 41 | 
            +
              rspec
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            BUNDLED WITH
         | 
| 44 | 
            +
               1.10.6
         | 
    
        data/Rakefile
    ADDED
    
    
| @@ -12,12 +12,12 @@ module MailHandler | |
| 12 12 | 
             
                                :api_token,
         | 
| 13 13 | 
             
                                :use_ssl
         | 
| 14 14 |  | 
| 15 | 
            -
                  def initialize( | 
| 15 | 
            +
                  def initialize(api_token = nil)
         | 
| 16 16 |  | 
| 17 17 | 
             
                    @type = :postmark_api
         | 
| 18 | 
            -
                    @host =  | 
| 18 | 
            +
                    @host = DEFAULT_HOST
         | 
| 19 19 | 
             
                    @api_token = api_token
         | 
| 20 | 
            -
                    @use_ssl =  | 
| 20 | 
            +
                    @use_ssl = false
         | 
| 21 21 |  | 
| 22 22 | 
             
                  end
         | 
| 23 23 |  | 
| @@ -30,6 +30,8 @@ module MailHandler | |
| 30 30 |  | 
| 31 31 | 
             
                  protected
         | 
| 32 32 |  | 
| 33 | 
            +
                  DEFAULT_HOST = 'api.postmarkapp.com'
         | 
| 34 | 
            +
             | 
| 33 35 | 
             
                  def setup_sending_client
         | 
| 34 36 |  | 
| 35 37 | 
             
                    # clearing cache so valid host is accepted, and not the cached one
         | 
    
        data/lib/mailhandler/version.rb
    CHANGED
    
    
    
        data/mailhandler.gemspec
    CHANGED
    
    | @@ -18,8 +18,17 @@ Gem::Specification.new do |s| | |
| 18 18 |  | 
| 19 19 |  | 
| 20 20 | 
             
              s.files       = `git ls-files`.split($/)
         | 
| 21 | 
            +
              s.test_files  = `git ls-files -- {spec}/*`.split("\n")
         | 
| 21 22 | 
             
              s.homepage    = 'https://github.com/ibalosh'
         | 
| 22 23 | 
             
              s.require_paths = ["lib"]
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              s.post_install_message = %q{
         | 
| 26 | 
            +
                ==================
         | 
| 27 | 
            +
                Thanks for installing the mailhandler gem.
         | 
| 28 | 
            +
                Review the README.md for implementation details and examples.
         | 
| 29 | 
            +
                ==================
         | 
| 30 | 
            +
              }
         | 
| 31 | 
            +
             | 
| 23 32 | 
             
              s.required_rubygems_version = ">= 1.8.7"
         | 
| 24 33 |  | 
| 25 34 | 
             
              s.add_dependency "mail"
         | 
    
        data/readme.md
    CHANGED
    
    | @@ -1,8 +1,11 @@ | |
| 1 1 | 
             
            # MailHandler Gem
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 3 | 
            +
            [](https://travis-ci.org/ibalosh/MailHandler)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            MailHandler is a simple wrapper for [mail](https://github.com/mikel/mail) and [postmark](https://github.com/wildbit/postmark-gem) libraries which allows you to send and retrieve emails, 
         | 
| 6 | 
            +
            and get more details about email sending and delivery. Main purpose of the gem is easier email sending/delivery testing. 
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            The library supports sending by SMTP, Postmark API and checking email delivery by IMAP protocol, or by folder, if you have a local mailbox. 
         | 
| 6 9 |  | 
| 7 10 | 
             
            # Install the gem
         | 
| 8 11 |  | 
| @@ -22,6 +25,9 @@ gem install mailhandler | |
| 22 25 |  | 
| 23 26 | 
             
            ## Configure local mailbox email to check
         | 
| 24 27 |  | 
| 28 | 
            +
            Checking emails locally option can be used when you have emails stored in certain local path. In order to search for email, all you need to do is setup inbox and archive folder.
         | 
| 29 | 
            +
            They can be the same if you don't plan to archive checked files.
         | 
| 30 | 
            +
             | 
| 25 31 | 
             
            ``` ruby
         | 
| 26 32 | 
             
            email_receiver = MailHandler::Handler.receiver(:folder) do |checker|
         | 
| 27 33 | 
             
                checker.inbox_folder = folder_of_your_inbox
         | 
| @@ -30,6 +36,8 @@ end | |
| 30 36 | 
             
            ```  
         | 
| 31 37 |  | 
| 32 38 | 
             
            ## Configure imap mailbox email to check
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            If you plan to check for an email in your inbox which support IMAP, you can use mailhandler with provided IMAP settings. 
         | 
| 33 41 |  | 
| 34 42 | 
             
            ``` ruby
         | 
| 35 43 | 
             
            email_receiver = MailHandler::Handler.receiver(:imap) do |checker|
         | 
| @@ -79,7 +87,7 @@ Once email searching is finished, you can check search result by looking at: `em | |
| 79 87 | 
             
            # Email search notifications
         | 
| 80 88 |  | 
| 81 89 | 
             
            While searching for an email, there is a possibility to get notification if emails sending is taking too long. 
         | 
| 82 | 
            -
            You can get an notification in console, by email or both.
         | 
| 90 | 
            +
            You can get an notification in console, by email or both. Console output is good if you are testing email delivery, and want to see how long its taking for email to arrive in console.
         | 
| 83 91 |  | 
| 84 92 | 
             
            To add notifications to email searching all you need to do is:
         | 
| 85 93 |  | 
| @@ -88,7 +96,7 @@ email_receiver.add_observer(MailHandler::Receiving::Notification::Email.new(emai | |
| 88 96 | 
             
            email_receiver.add_observer(MailHandler::Receiving::Notification::Console.new)
         | 
| 89 97 | 
             
            ``` 
         | 
| 90 98 |  | 
| 91 | 
            -
            the parameters you need are:
         | 
| 99 | 
            +
            For email notifications, the parameters you need are:
         | 
| 92 100 |  | 
| 93 101 | 
             
            * `email_sender` - email sender you will use for sending an email (it should be one of senders described below)
         | 
| 94 102 | 
             
            * `contacts` - list of contacts to receive the notification (for example: `john@example.com, igor@example.com`
         | 
| @@ -103,20 +111,16 @@ To send email you can use SMTP protocol or Postmark. | |
| 103 111 |  | 
| 104 112 | 
             
            ### Send by Postmark API 
         | 
| 105 113 |  | 
| 106 | 
            -
            To send email with Postmark, you need to choose type of sending,  | 
| 114 | 
            +
            To send email with Postmark, you need to choose type of sending, api token options.
         | 
| 107 115 |  | 
| 108 116 | 
             
            ``` ruby
         | 
| 109 117 | 
             
            email_sender = MailHandler::Handler.sender(type) do |dispatcher|
         | 
| 110 | 
            -
                dispatcher.host = host
         | 
| 111 118 | 
             
                dispatcher.api_token = api_token
         | 
| 112 | 
            -
                dispatcher.use_ssl = use_ssl
         | 
| 113 119 | 
             
            end
         | 
| 114 120 | 
             
            ```
         | 
| 115 121 |  | 
| 116 122 | 
             
            * `:type` - type can be `:postmark_api` or `postmark_batch_api`
         | 
| 117 | 
            -
            * `:host` - host is `api.postmarkapp.com`
         | 
| 118 123 | 
             
            * `:api_token` - api token of one of your Postmark sending servers 
         | 
| 119 | 
            -
            * `:use_ssl` - can be true/false
         | 
| 120 124 |  | 
| 121 125 | 
             
            ### Sending email by SMTP
         | 
| 122 126 |  | 
| @@ -131,7 +135,17 @@ email_sender = MailHandler::Handler.sender(:smtp) do |dispatcher| | |
| 131 135 | 
             
                dispatcher.password = password
         | 
| 132 136 | 
             
                dispatcher.use_ssl = use_ssl
         | 
| 133 137 | 
             
            end
         | 
| 134 | 
            -
            ``` | 
| 138 | 
            +
            ```
         | 
| 139 | 
            +
             
         | 
| 140 | 
            +
            ### Sending email
         | 
| 141 | 
            +
             
         | 
| 142 | 
            +
            Once you have setup your email sender, all you need to do is to send an email:
         | 
| 143 | 
            +
             | 
| 144 | 
            +
            ``` ruby
         | 
| 145 | 
            +
            email_sender.send_email(email)
         | 
| 146 | 
            +
            ```
         | 
| 147 | 
            +
             | 
| 148 | 
            +
            email has to be an email created with Mail gem. In order to send emails by Postmark batch, you will need to provide an Array of emails.
         | 
| 135 149 |  | 
| 136 150 | 
             
            ## Sending results
         | 
| 137 151 |  | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            require 'rspec'
         | 
| 2 | 
            +
            require 'mail'
         | 
| 3 | 
            +
            require 'postmark'
         | 
| 4 | 
            +
            require 'pry'
         | 
| 5 | 
            +
            require 'mailhandler'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            $LOAD_PATH.unshift(File.dirname(__FILE__))
         | 
| 8 | 
            +
            $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            RSpec.configure do |c|
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              # Use the specified formatter, options are: # :documentation, :progress, :html, :textmate
         | 
| 13 | 
            +
              c.formatter = :documentation
         | 
| 14 | 
            +
              c.color = true
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,41 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe MailHandler::Receiver do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              subject { MailHandler::Receiver }
         | 
| 6 | 
            +
              let(:default_search_option) { {:by_subject => 'test'} }
         | 
| 7 | 
            +
              let(:receiving_duration) { 5 }
         | 
| 8 | 
            +
              let(:checker) {
         | 
| 9 | 
            +
                checker = double('Checker')
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                allow(checker).to receive(:find) { sleep receiving_duration ; true }
         | 
| 12 | 
            +
                allow(checker).to receive(:search_result) { true }
         | 
| 13 | 
            +
                allow(checker).to receive(:found_emails) { [] }
         | 
| 14 | 
            +
                checker
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              }
         | 
| 17 | 
            +
              
         | 
| 18 | 
            +
              it '.find_email' do
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                receiver = subject.new(checker)
         | 
| 21 | 
            +
                expect(receiver.find_email(default_search_option)).to be true
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              it '.search object' do
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                receiver = subject.new(checker)
         | 
| 28 | 
            +
                receiver.find_email(default_search_option)
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                aggregate_failures "search details" do
         | 
| 31 | 
            +
                  expect(receiver.search.options).to eq default_search_option
         | 
| 32 | 
            +
                  expect(receiver.search.started_at).to be_within(1).of(Time.now - receiving_duration)
         | 
| 33 | 
            +
                  expect(receiver.search.finished_at).to be_within(1).of(Time.now)
         | 
| 34 | 
            +
                  expect(receiver.search.duration).to be_within(0.5).of(receiving_duration)
         | 
| 35 | 
            +
                  expect(receiver.search.result).to be true
         | 
| 36 | 
            +
                  expect(receiver.search.emails).to eq []
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            end
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe MailHandler::Receiving::Notification::Console do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              subject { MailHandler::Receiving::Notification::Console  }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              context 'notify of a delay' do
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                it '.notify' do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  search = double('Search', :started_at => Time.now - 10)
         | 
| 12 | 
            +
                  expect{ subject.new.notify(search) }.to output(/.+email delay: 0(9|1)0 seconds/).to_stdout
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              context 'not notify of a delay' do
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                it '.notify' do
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  search = double('Search', :started_at => Time.now + 5)
         | 
| 23 | 
            +
                  expect{ subject.new.notify(search) }.to output('').to_stdout
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            end
         | 
| @@ -0,0 +1,105 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe MailHandler::Receiving::Notification::EmailContent do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              subject { MailHandler::Receiving::Notification::EmailContent }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              let(:to) { 'john@example.com' }
         | 
| 8 | 
            +
              let(:from) { 'igor@example.com' }
         | 
| 9 | 
            +
              let(:options) {{ :test => 'test' } }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              context '.email_received' do
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                it 'create email' do
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  expect(subject.email_received(options, 60, from, to)).to be_kind_of Mail::Message
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                context 'email content' do
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  it 'sender' do
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                    expect(subject.email_received(options, 60, from, to)[:from].to_s).to eq from
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  it 'single recipient' do
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    expect(subject.email_received(options, 60, from, to)[:to].to_s).to eq to
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  it 'multiple recipients' do
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    to = 'john1@example.com, john2@example.com'
         | 
| 36 | 
            +
                    expect(subject.email_received(options, 60, from, to)[:to].to_s).to eq to
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  it 'subject - 1 minute delay' do
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    expect(subject.email_received(options, 60, from, to).subject).to eq "Received - delay was 1.0 minutes"
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  it 'subject - 1.5 minute delay' do
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                    expect(subject.email_received(options, 90, from, to).subject).to eq "Received - delay was 1.5 minutes"
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  it 'body' do
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                    expect(subject.email_received(options, 90, from, to).body.to_s).
         | 
| 55 | 
            +
                        to eq "Received - delay was 1.5 minutes - search by #{options}"
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
              context '.email_delayed' do
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                it 'sender' do
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                  expect(subject.email_delayed(options, 60, from, to)[:from].to_s).to eq from
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                it 'single recipient' do
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                  expect(subject.email_delayed(options, 60, from, to)[:to].to_s).to eq to
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                it 'multiple recipients' do
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                  to = 'john1@example.com, john2@example.com'
         | 
| 80 | 
            +
                  expect(subject.email_delayed(options, 60, from, to)[:to].to_s).to eq to
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                it 'subject - 1 minute delay' do
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                  expect(subject.email_delayed(options, 60, from, to).subject).to eq "Over 1.0 minutes delay"
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                it 'subject - 1.5 minute delay' do
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                  expect(subject.email_delayed(options, 90, from, to).subject).to eq "Over 1.5 minutes delay"
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                it 'body' do
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                  expect(subject.email_delayed(options, 90, from, to).body.to_s).
         | 
| 99 | 
            +
                      to eq "Over 1.5 minutes delay - search by #{options}"
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                end
         | 
| 102 | 
            +
             | 
| 103 | 
            +
              end
         | 
| 104 | 
            +
             | 
| 105 | 
            +
            end
         | 
| @@ -0,0 +1,61 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe MailHandler::Sender do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              subject { MailHandler::Sender }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              let(:send_duration) { 3 }
         | 
| 8 | 
            +
              let(:dispatcher) {
         | 
| 9 | 
            +
                dispatcher = double('Dispatcher')
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                allow(dispatcher).to receive(:send) { sleep send_duration ; 'Sent' }
         | 
| 12 | 
            +
                dispatcher
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              }
         | 
| 15 | 
            +
              let(:mail) {
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                Mail.new do
         | 
| 18 | 
            +
                  from "sheldon@bigbangtheory.com"
         | 
| 19 | 
            +
                  to "lenard@bigbangtheory.com"
         | 
| 20 | 
            +
                  subject "Hello!"
         | 
| 21 | 
            +
                  body "Hello Sheldon!"
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              }
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              it '.sending' do
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                expect(subject.new(dispatcher)).not_to be nil
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              it '.sending init' do
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                sender = subject.new(dispatcher)
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                aggregate_failures "sending details" do
         | 
| 37 | 
            +
                  expect(sender.sending.started_at).to be nil
         | 
| 38 | 
            +
                  expect(sender.sending.finished_at).to be nil
         | 
| 39 | 
            +
                  expect(sender.sending.duration).to be nil
         | 
| 40 | 
            +
                  expect(sender.sending.response).to be nil
         | 
| 41 | 
            +
                  expect(sender.sending.email).to be nil
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              it '.send_email' do
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                sender = subject.new(dispatcher)
         | 
| 49 | 
            +
                sender.send_email(mail)
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                aggregate_failures "sending details" do
         | 
| 52 | 
            +
                  expect(sender.sending.started_at).to be_within(1).of(Time.now - send_duration)
         | 
| 53 | 
            +
                  expect(sender.sending.finished_at).to be_within(1).of(Time.now)
         | 
| 54 | 
            +
                  expect(sender.sending.duration).to be_within(0.5).of(send_duration)
         | 
| 55 | 
            +
                  expect(sender.sending.response).to eq 'Sent'
         | 
| 56 | 
            +
                  expect(sender.sending.email).to be mail
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            end
         | 
| @@ -0,0 +1,64 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe MailHandler::Handler do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              subject { MailHandler::Handler }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              context 'receiver' do
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                let(:receiver_folder) {
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  subject.receiver(:folder)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                it 'invalid type' do
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  expect{subject.receiver(:test)}.
         | 
| 18 | 
            +
                      to raise_error(StandardError, 'Unknown type - test, possible options: [:folder, :imap]')
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                context 'folder check' do
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  it 'object type' do
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                    expect(receiver_folder).to match MailHandler::Receiver
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
             | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              context 'sender' do
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                it 'invalid type' do
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  expect{subject.sender(:test)}.
         | 
| 40 | 
            +
                      to raise_error(StandardError, 'Unknown type - test, possible options: [:postmark_api, :postmark_batch_api, :smtp]')
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                it 'create sender - postmark api' do
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  expect(subject.sender(:postmark_api)).to match MailHandler::Sender
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                it 'create sender - postmark batch api' do
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  expect(subject.sender(:postmark_batch_api)).to match MailHandler::Sender
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                it 'create sender - smtp' do
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  expect(subject.sender(:smtp)).to match MailHandler::Sender
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            end
         | 
    
        data/travis.yml
    ADDED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mailhandler
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Igor Balos
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-10- | 
| 11 | 
            +
            date: 2015-10-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: mail
         | 
| @@ -52,6 +52,9 @@ extensions: [] | |
| 52 52 | 
             
            extra_rdoc_files: []
         | 
| 53 53 | 
             
            files:
         | 
| 54 54 | 
             
            - ".gitignore"
         | 
| 55 | 
            +
            - Gemfile
         | 
| 56 | 
            +
            - Gemfile.lock
         | 
| 57 | 
            +
            - Rakefile
         | 
| 55 58 | 
             
            - lib/mailhandler.rb
         | 
| 56 59 | 
             
            - lib/mailhandler/receiver.rb
         | 
| 57 60 | 
             
            - lib/mailhandler/receiving/checker.rb
         | 
| @@ -71,11 +74,21 @@ files: | |
| 71 74 | 
             
            - lib/mailhandler/version.rb
         | 
| 72 75 | 
             
            - mailhandler.gemspec
         | 
| 73 76 | 
             
            - readme.md
         | 
| 77 | 
            +
            - spec/spec_helper.rb
         | 
| 78 | 
            +
            - spec/unit/mailhandler/receiver_spec.rb
         | 
| 79 | 
            +
            - spec/unit/mailhandler/receiving/notification/console_spec.rb
         | 
| 80 | 
            +
            - spec/unit/mailhandler/receiving/notification/email/content_spec.rb
         | 
| 81 | 
            +
            - spec/unit/mailhandler/receiving/notification/email_spec.rb
         | 
| 82 | 
            +
            - spec/unit/mailhandler/sender_spec.rb
         | 
| 83 | 
            +
            - spec/unit/mailhandler_spec.rb
         | 
| 84 | 
            +
            - travis.yml
         | 
| 74 85 | 
             
            homepage: https://github.com/ibalosh
         | 
| 75 86 | 
             
            licenses:
         | 
| 76 87 | 
             
            - MIT
         | 
| 77 88 | 
             
            metadata: {}
         | 
| 78 | 
            -
            post_install_message: 
         | 
| 89 | 
            +
            post_install_message: "\n    ==================\n    Thanks for installing the mailhandler
         | 
| 90 | 
            +
              gem.\n    Review the README.md for implementation details and examples.\n    ==================\n
         | 
| 91 | 
            +
              \ "
         | 
| 79 92 | 
             
            rdoc_options: []
         | 
| 80 93 | 
             
            require_paths:
         | 
| 81 94 | 
             
            - lib
         |