jackal-mail 0.1.0 → 0.1.2

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
  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: