mailhandler 1.0.53 → 1.0.54

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ada1ede9480ecca3ccdd3e20a3cde4a572862fc4c92df3085d0e7ad3b4ee706b
4
- data.tar.gz: b5766d76b779a52c8f17ffe16af6aa85339079fa5ec2c62987436b7f3f78ff33
3
+ metadata.gz: 4931029d86f461767c4de3bee9b92000d121c3ffa45eb5f4094ae8a1ae2be40f
4
+ data.tar.gz: d227f24df3fba3267ca6182c9a0532fc99516de08e3bf67ca3de0c69b15f9eec
5
5
  SHA512:
6
- metadata.gz: ccf98235acb4d8e5006eeefc75bf79e0e503dca6ce642a7375ab65c343b61f78b8969f4a03c92dc44e8d0fdb3eed4ef081e5765f51c33cb6263e205d08e8d2b2
7
- data.tar.gz: 0e094b8e7a768a5c9696ff27d32d8d0a8fce5737da69708909c2724059d1d6eecdf9e5e1b6b9b84f4026ea30d1834515fa9208d4aac4cdca913cb5377a80b33a
6
+ metadata.gz: 0235d65396b68ea9884c30c7a8c0cb2b3c564fed5ab7dae96d3677e663bcca71e872608413e050636b395d227c1c605cd563c6d0150bee8d3906551da1c86fb4
7
+ data.tar.gz: 958adcb6a1085697c89707582c494caf02f0d8ae0d278d27093e8bb86d38a19d54927de1a74af5abb4a4132e9aba8ac49d5fae613660a7bad34507c78e274bee
@@ -8,6 +8,8 @@ module MailHandler
8
8
  end
9
9
  end
10
10
 
11
+ class SearchEmailError < Error; end
12
+ class SendEmailError < Error; end
11
13
  class UnknownError < Error; end
12
14
  class TypeError < Error; end
13
15
  class FileError < Error; end
@@ -4,6 +4,7 @@ require_relative 'receiving/folder'
4
4
  require_relative 'receiving/imap'
5
5
  require_relative 'extensions/mail/imap'
6
6
  require_relative 'receiving/observer'
7
+ require_relative 'errors'
7
8
 
8
9
  module MailHandler
9
10
  # handling receiving email
@@ -13,7 +14,8 @@ module MailHandler
13
14
  attr_accessor :checker,
14
15
  :search,
15
16
  :max_search_duration,
16
- :search_frequency
17
+ :search_frequency,
18
+ :validate_result
17
19
 
18
20
  module DEFAULTS
19
21
  MAX_SEARCH_DURATION = 240 # maximum time for search to last in [seconds]
@@ -36,6 +38,7 @@ module MailHandler
36
38
  @checker = checker
37
39
  @max_search_duration = DEFAULTS::MAX_SEARCH_DURATION
38
40
  @search_frequency = DEFAULTS::SEARCH_FREQUENCY
41
+ @validate_result = false
39
42
  end
40
43
 
41
44
  def find_email(options)
@@ -52,10 +55,18 @@ module MailHandler
52
55
  checker.search_result
53
56
  ensure
54
57
  checker.stop
58
+ check_result
55
59
  end
56
60
 
57
61
  private
58
62
 
63
+ def check_result
64
+ return unless validate_result
65
+ return if checker.search_result
66
+
67
+ raise SearchEmailError, "Email searched by #{@search.options} not found for #{@search.max_duration} seconds."
68
+ end
69
+
59
70
  def single_search(options)
60
71
  received = checker.find(options)
61
72
  update_search_details
@@ -3,6 +3,7 @@
3
3
  require_relative 'sending/smtp'
4
4
  require_relative 'sending/api'
5
5
  require_relative 'sending/api_batch'
6
+ require_relative 'errors'
6
7
 
7
8
  module MailHandler
8
9
  # Class for sending email, and storing details about the sending.
@@ -43,7 +44,7 @@ module MailHandler
43
44
  return unless validate_response
44
45
  return if dispatcher.valid_response?(response)
45
46
 
46
- raise "Invalid sending response: #{response}"
47
+ raise SendEmailError, "Invalid sending response: #{response}."
47
48
  end
48
49
 
49
50
  def init_sending_details(email)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MailHandler
4
- VERSION = '1.0.53'
4
+ VERSION = '1.0.54'
5
5
  end
@@ -59,6 +59,34 @@ describe MailHandler::Receiver do
59
59
  end
60
60
  end
61
61
 
62
+ describe '.search not found' do
63
+ let(:checker) do
64
+ checker = instance_double('Checker')
65
+
66
+ allow(checker).to receive(:find).and_return(false)
67
+ allow(checker).to receive(:search_result).and_return(false)
68
+ allow(checker).to receive(:found_emails).and_return([])
69
+ allow(checker).to receive(:reset_found_emails).and_return([])
70
+ allow(checker).to receive(:start).and_return(nil)
71
+ allow(checker).to receive(:stop).and_return(nil)
72
+ checker
73
+ end
74
+
75
+ it "raise error" do
76
+ receiver.max_search_duration = 3
77
+ receiver.validate_result=true
78
+ expect { receiver.find_email(default_search_option) }.
79
+ to raise_error(MailHandler::SearchEmailError,
80
+ "Email searched by {:by_subject=>\"test\"} not found for 3 seconds.")
81
+ end
82
+
83
+ it "do not raise error" do
84
+ receiver.max_search_duration = 3
85
+ receiver.validate_result=false
86
+ expect(receiver.find_email(default_search_option)).to be false
87
+ end
88
+ end
89
+
62
90
  describe '.search' do
63
91
  let(:checker) do
64
92
  checker = instance_double('Checker')
@@ -67,7 +95,7 @@ describe MailHandler::Receiver do
67
95
  sleep 1
68
96
  false
69
97
  end
70
- allow(checker).to receive(:search_result).and_return(false)
98
+ allow(checker).to receive(:search_result).and_return(true)
71
99
  allow(checker).to receive(:found_emails).and_return([])
72
100
  allow(checker).to receive(:reset_found_emails).and_return([])
73
101
  allow(checker).to receive(:start).and_return(nil)
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.53
4
+ version: 1.0.54
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Balos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-17 00:00:00.000000000 Z
11
+ date: 2020-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mail
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  - !ruby/object:Gem::Version
115
115
  version: 1.9.3
116
116
  requirements: []
117
- rubygems_version: 3.1.2
117
+ rubygems_version: 3.0.8
118
118
  signing_key:
119
119
  specification_version: 4
120
120
  summary: Postmark email receiving and sending handler.