mailhandler 1.0.53 → 1.0.54

Sign up to get free protection for your applications and to get access to all the features.
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.