jackal-mail 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de5e9fbcfb826c25866a65a8dc38f8c0c2244279
4
- data.tar.gz: 1ec43af44d16a3945b3cf50de7147b47d658c48e
3
+ metadata.gz: 8cf747d39ed920ee0b8acaa0a10d3851348a42c5
4
+ data.tar.gz: 35237c8e587f3b8ad9408803235873cf0162a5fe
5
5
  SHA512:
6
- metadata.gz: e0c87d2739ff43205f60736a7e43f0613b8845d69d5749a34407b50eac7f7573379870daf99e2aed1a3bb547271673c0fc165f9adc2eee68b222be2e35bd8253
7
- data.tar.gz: ba0d5461e9409cfc1f01c4bbe97ac663f223d40dc25e58cc15d05eed17a9a3bf3e3d621b4a704a418a938a443ce0b635c8e8f115f2ae802795437af230a1886d
6
+ metadata.gz: 769a2f4afee3d9c282e3907944da5b7f6ea6fd0f4ccfca8b22d1936475afbad794bfea02aed8ce99dddbcfccfd1769d1084293de23895ccfeb571c73378697a3
7
+ data.tar.gz: 24db5f06a2750bc065863e6a351809ea397ddfc4179d9ecc603ac43168c78c21aa06c6f4815406bc562fadccb4246204e1e4ec24b772fcd58d8f2f2bd3d50de9
@@ -1,2 +1,7 @@
1
- ## v0.1.0
1
+ # v0.1.2
2
+ * Remove mail data on complete
3
+ * Add basic testing coverage
4
+ * Add service registration
5
+
6
+ # v0.1.0
2
7
  * Initial release
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'minitest'
4
+ gem 'pry'
5
+
6
+ gemspec
data/README.md CHANGED
@@ -1,3 +1,40 @@
1
1
  # Jackal Mail
2
2
 
3
- Mailer handler
3
+ Simple handler for sending email
4
+
5
+ ## Configuration
6
+ Optional configuration
7
+
8
+ ```json
9
+ {
10
+ "jackal": {
11
+ "config": {
12
+ "mail": {
13
+ "bcc": "",
14
+ "via_options": {
15
+ ...
16
+ }
17
+ }
18
+ }
19
+ }
20
+ }
21
+ ```
22
+ See https://github.com/benprew/pony#transport for "via_options"
23
+
24
+ ## Payload structure
25
+
26
+ ```ruby
27
+ {
28
+ :destination => {
29
+ :email => '',
30
+ :name => ''
31
+ },
32
+ :origin => {
33
+ :email => '',
34
+ :name => ''
35
+ },
36
+ :subject => '',
37
+ :message => '',
38
+ :html => true/false
39
+ }
40
+ ```
@@ -12,5 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.require_path = 'lib'
13
13
  s.add_dependency 'jackal'
14
14
  s.add_dependency 'pony'
15
+ s.add_development_dependency 'carnivore-actor'
16
+
15
17
  s.files = Dir['**/*']
16
18
  end
@@ -6,3 +6,19 @@ module Jackal
6
6
  autoload :Smtp, 'jackal-mail/smtp'
7
7
  end
8
8
  end
9
+
10
+ Jackal.service(
11
+ :mail,
12
+ :description => 'Send mail notification',
13
+ :category => :notifier,
14
+ :configuration => {
15
+ :via_options => {
16
+ :type => :hash,
17
+ :description => 'SMTP configuration options'
18
+ },
19
+ :bcc => {
20
+ :type => :string,
21
+ :description => 'BCC address for all mail'
22
+ }
23
+ }
24
+ )
@@ -1,22 +1,5 @@
1
1
  require 'jackal-mail'
2
2
 
3
- =begin
4
- # In payload: notification_email
5
- {
6
- :destination => {
7
- :email => '',
8
- :name => ''
9
- },
10
- :origin => {
11
- :email => '',
12
- :name => ''
13
- },
14
- :subject => '',
15
- :message => '',
16
- :html => true/false
17
- }
18
- =end
19
-
20
3
  module Jackal
21
4
  # Mailer component
22
5
  module Mail
@@ -44,6 +27,7 @@ module Jackal
44
27
  def execute(message)
45
28
  failure_wrap(message) do |payload|
46
29
  deliver(payload)
30
+ payload[:data][:mail].delete(:result)
47
31
  job_completed(:mail, payload, message)
48
32
  end
49
33
  end
@@ -78,7 +62,7 @@ module Jackal
78
62
  if(bcc = config.get(:bcc))
79
63
  args[:bcc] = bcc
80
64
  end
81
- result = Pony.mail(args)
65
+ result = send_mail(payload, args)
82
66
  payload.set(:data, :mail, :result, result)
83
67
  debug "Pony delivery result: #{result.inspect}"
84
68
  rescue => e
@@ -87,6 +71,11 @@ module Jackal
87
71
  end
88
72
  end
89
73
 
74
+ # So we can stub out mail sending for tests...
75
+ def send_mail(payload, args)
76
+ Pony.mail(args)
77
+ end
78
+
90
79
  end
91
80
  end
92
81
  end
@@ -1,6 +1,6 @@
1
1
  module Jackal
2
2
  module Mail
3
3
  # Current library version
4
- VERSION = Gem::Version.new('0.1.0')
4
+ VERSION = Gem::Version.new('0.1.2')
5
5
  end
6
6
  end
@@ -0,0 +1,19 @@
1
+ Configuration.new do
2
+
3
+ jackal do
4
+ require ["carnivore-actor", "jackal-mail"]
5
+
6
+ mail do
7
+ config do
8
+ end
9
+
10
+ sources do
11
+ input { type 'actor' }
12
+ output { type 'spec' }
13
+ end
14
+
15
+ callbacks ['Jackal::Mail::Smtp']
16
+ end
17
+ end
18
+
19
+ end
@@ -0,0 +1,54 @@
1
+ require 'jackal-mail'
2
+ require 'pry'
3
+
4
+ SRC_ADDR = 'foo@example.com'
5
+ DST_ADDR = 'bar@example.com'
6
+ SUBJECT = 'test'
7
+ BODY = 'foo'
8
+
9
+ class Jackal::Mail::Smtp
10
+ def send_mail(payload, args)
11
+ payload.set(:smtp_args, args)
12
+ h = { :from => args[:from], :to => args[:to], :subject => args[:subject] }
13
+ Mail::Message.new(h)
14
+ end
15
+ end
16
+
17
+ describe Jackal::Mail::Smtp do
18
+
19
+ before do
20
+ @runner = run_setup(:test)
21
+ track_execution(Jackal::Mail::Smtp)
22
+ end
23
+
24
+ after do
25
+ @runner.terminate if @runner && @runner.alive?
26
+ end
27
+
28
+ let(:notification) { Carnivore::Supervisor.supervisor[:jackal_mail_input] }
29
+
30
+ describe 'execute' do
31
+ it 'passes correct data/format to slack-notifier' do
32
+ result = transmit_and_wait(notification, mail_payload)
33
+ callback_executed?(result).must_equal true
34
+ # ensure payload result was cleared to allow for multiple runs
35
+ result.get(:data, :mail, :result).must_be_nil
36
+
37
+ arr = [[:to, [DST_ADDR]], [:from, SRC_ADDR], [:subject, SUBJECT], [:body, BODY]]
38
+ arr.each { |key, value| result[:smtp_args][key].must_equal value }
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def mail_payload
45
+ h = { :notification_email => {
46
+ :destination => { :email => DST_ADDR },
47
+ :origin => { :email => SRC_ADDR },
48
+ :subject => SUBJECT,
49
+ :message => BODY,
50
+ :html => false }}
51
+ Jackal::Utils.new_payload(:test, h)
52
+ end
53
+
54
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jackal-mail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Roberts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-28 00:00:00.000000000 Z
11
+ date: 2015-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jackal
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: carnivore-actor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: Jackal Mail
42
56
  email: code@chrisroberts.org
43
57
  executables: []
@@ -45,11 +59,14 @@ extensions: []
45
59
  extra_rdoc_files: []
46
60
  files:
47
61
  - CHANGELOG.md
62
+ - Gemfile
48
63
  - README.md
49
64
  - jackal-mail.gemspec
50
65
  - lib/jackal-mail.rb
51
66
  - lib/jackal-mail/smtp.rb
52
67
  - lib/jackal-mail/version.rb
68
+ - test/specs/config/test.rb
69
+ - test/specs/smtp_spec.rb
53
70
  homepage: http://github.com/carnivore-rb/jackal-mail
54
71
  licenses:
55
72
  - Apache 2.0
@@ -75,4 +92,3 @@ signing_key:
75
92
  specification_version: 4
76
93
  summary: Jackal Mail
77
94
  test_files: []
78
- has_rdoc: