postageapp 1.0.24 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +13 -12
- data/Gemfile +6 -1
- data/LICENSE +1 -1
- data/README.md +122 -70
- data/Rakefile +19 -4
- data/generators/postageapp/postageapp_generator.rb +5 -7
- data/lib/generators/postageapp/postageapp_generator.rb +15 -9
- data/lib/postageapp.rb +42 -36
- data/lib/postageapp/configuration.rb +34 -21
- data/lib/postageapp/failed_request.rb +60 -36
- data/lib/postageapp/logger.rb +6 -7
- data/lib/postageapp/mail.rb +3 -0
- data/lib/postageapp/mail/arguments.rb +75 -0
- data/lib/postageapp/mail/delivery_method.rb +32 -0
- data/lib/postageapp/mail/extensions.rb +21 -0
- data/lib/postageapp/mailer.rb +72 -20
- data/lib/postageapp/mailer/mailer_2.rb +65 -22
- data/lib/postageapp/mailer/mailer_3.rb +45 -28
- data/lib/postageapp/mailer/mailer_4.rb +72 -40
- data/lib/postageapp/rails/rails.rb +17 -7
- data/lib/postageapp/rails/railtie.rb +22 -7
- data/lib/postageapp/request.rb +67 -43
- data/lib/postageapp/response.rb +11 -8
- data/lib/postageapp/utils.rb +11 -3
- data/lib/postageapp/version.rb +2 -2
- data/postageapp.gemspec +13 -11
- data/rails/init.rb +1 -1
- data/test/configuration_test.rb +35 -38
- data/test/failed_request_test.rb +33 -18
- data/test/gemfiles/Gemfile.rails-2.3.x +4 -1
- data/test/gemfiles/Gemfile.rails-3.0.x +4 -1
- data/test/gemfiles/Gemfile.rails-3.1.x +4 -1
- data/test/gemfiles/Gemfile.rails-3.2.x +4 -1
- data/test/gemfiles/Gemfile.rails-4.0.x +4 -1
- data/test/gemfiles/Gemfile.rails-4.1.x +12 -0
- data/test/gemfiles/Gemfile.rails-4.2.x +12 -0
- data/test/gemfiles/Gemfile.ruby +11 -0
- data/test/helper.rb +52 -33
- data/test/live_test.rb +11 -8
- data/test/mail_delivery_method_test.rb +161 -0
- data/test/mailer/action_mailer_2/notifier.rb +37 -28
- data/test/mailer/action_mailer_3/notifier.rb +28 -22
- data/test/mailer_2_test.rb +20 -16
- data/test/mailer_3_test.rb +16 -22
- data/test/mailer_4_test.rb +28 -28
- data/test/mailer_helper_methods_test.rb +17 -14
- data/test/postageapp_test.rb +8 -9
- data/test/rails_initialization_test.rb +14 -14
- data/test/request_test.rb +35 -35
- data/test/response_test.rb +20 -19
- data/test/travis_test.rb +168 -0
- data/test/with_environment.rb +27 -0
- metadata +23 -17
@@ -1,22 +1,25 @@
|
|
1
|
-
require File.expand_path('
|
1
|
+
require File.expand_path('helper', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class MailerHelperMethodsTest <
|
4
|
-
|
3
|
+
class MailerHelperMethodsTest < MiniTest::Test
|
5
4
|
def test_mailer_helper_methods
|
6
|
-
request = PostageApp::Request.new(
|
7
|
-
:
|
8
|
-
|
5
|
+
request = PostageApp::Request.new(
|
6
|
+
:send_message,
|
7
|
+
:headers => {
|
8
|
+
'from' => 'sender@test.test',
|
9
|
+
'subject' => 'Test Message'
|
10
|
+
},
|
9
11
|
:recipients => 'test@test.test',
|
10
|
-
:content
|
11
|
-
'text/plain'
|
12
|
-
'text/html'
|
12
|
+
:content => {
|
13
|
+
'text/plain' => 'text content',
|
14
|
+
'text/html' => 'html content'
|
13
15
|
}
|
14
|
-
|
15
|
-
|
16
|
-
assert_equal ['
|
16
|
+
)
|
17
|
+
|
18
|
+
assert_equal [ 'test@test.test' ], request.to
|
19
|
+
assert_equal [ 'sender@test.test' ], request.from
|
17
20
|
assert_equal 'Test Message', request.subject
|
21
|
+
|
18
22
|
assert_match 'html content', request.body
|
19
23
|
assert_match 'text content', request.body
|
20
24
|
end
|
21
|
-
|
22
|
-
end
|
25
|
+
end
|
data/test/postageapp_test.rb
CHANGED
@@ -1,18 +1,17 @@
|
|
1
|
-
require File.expand_path('
|
1
|
+
require File.expand_path('helper', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class PostageAppTest <
|
4
|
-
|
3
|
+
class PostageAppTest < MiniTest::Test
|
5
4
|
def test_method_configure
|
6
5
|
PostageApp.configure do |config|
|
7
|
-
config.api_key
|
8
|
-
config.host
|
6
|
+
config.api_key = 'abcdefg12345'
|
7
|
+
config.host = 'test.test'
|
9
8
|
end
|
10
|
-
|
11
|
-
assert_equal '
|
9
|
+
|
10
|
+
assert_equal 'abcdefg12345', PostageApp.configuration.api_key
|
11
|
+
assert_equal 'test.test', PostageApp.configuration.host
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_logger
|
15
15
|
assert PostageApp.logger.is_a?(Logger)
|
16
16
|
end
|
17
|
-
|
18
|
-
end
|
17
|
+
end
|
@@ -1,29 +1,29 @@
|
|
1
|
-
require File.expand_path('
|
1
|
+
require File.expand_path('helper', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
require File.expand_path('
|
3
|
+
require File.expand_path('../lib/postageapp/rails/rails', File.dirname(__FILE__))
|
4
4
|
|
5
|
-
class RailsInitializationTest <
|
6
|
-
|
7
|
-
include ConstantDefinitions
|
8
|
-
|
5
|
+
class RailsInitializationTest < MiniTest::Test
|
9
6
|
def test_initialization
|
10
7
|
rails = Module.new do
|
11
8
|
def self.version
|
12
9
|
'9.9.9'
|
13
10
|
end
|
11
|
+
|
14
12
|
def self.root
|
15
13
|
'RAILS ROOT'
|
16
14
|
end
|
15
|
+
|
17
16
|
def self.env
|
18
17
|
"RAILS ENV"
|
19
18
|
end
|
20
19
|
end
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
|
21
|
+
const_replace(:Rails, rails) do
|
22
|
+
PostageApp::Rails.initialize
|
23
|
+
|
24
|
+
assert_equal 'Rails 9.9.9', PostageApp.configuration.framework
|
25
|
+
assert_equal 'RAILS ROOT', PostageApp.configuration.project_root
|
26
|
+
assert_equal 'RAILS ENV', PostageApp.configuration.environment
|
27
|
+
end
|
27
28
|
end
|
28
|
-
|
29
|
-
end
|
29
|
+
end
|
data/test/request_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require File.expand_path('
|
1
|
+
require File.expand_path('helper', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class RequestTest <
|
3
|
+
class RequestTest < MiniTest::Test
|
4
4
|
def test_method_uid
|
5
5
|
request = PostageApp::Request.new('test_method')
|
6
6
|
|
@@ -14,26 +14,23 @@ class RequestTest < Minitest::Test
|
|
14
14
|
def test_method_url
|
15
15
|
request = PostageApp::Request.new('test_method')
|
16
16
|
|
17
|
-
assert_equal 'api.postageapp.com',
|
18
|
-
assert_equal 443,
|
17
|
+
assert_equal 'api.postageapp.com', request.url.host
|
18
|
+
assert_equal 443, request.url.port
|
19
19
|
assert_equal '/v.1.0/test_method.json', request.url.path
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_method_arguments_to_send
|
23
|
-
request = PostageApp::Request.new('send_message',
|
24
|
-
'headers'
|
25
|
-
'from'
|
26
|
-
'subject'
|
23
|
+
request = PostageApp::Request.new('send_message',
|
24
|
+
'headers' => {
|
25
|
+
'from' => 'sender@test.test',
|
26
|
+
'subject' => 'Test Message'
|
27
27
|
},
|
28
|
-
'recipients'
|
29
|
-
'content'
|
30
|
-
'text/plain'
|
31
|
-
'text/html'
|
28
|
+
'recipients' => 'test@test.test',
|
29
|
+
'content' => {
|
30
|
+
'text/plain' => 'text content',
|
31
|
+
'text/html' => 'html content'
|
32
32
|
}
|
33
|
-
|
34
|
-
|
35
|
-
assert_equal 'text content', request.text_part
|
36
|
-
assert_equal 'html content', request.html_part
|
33
|
+
)
|
37
34
|
|
38
35
|
args = request.arguments_to_send
|
39
36
|
|
@@ -85,37 +82,40 @@ class RequestTest < Minitest::Test
|
|
85
82
|
def test_send
|
86
83
|
mock_successful_send
|
87
84
|
|
88
|
-
request = PostageApp::Request.new('send_message',
|
89
|
-
'headers'
|
90
|
-
'from'
|
91
|
-
'subject'
|
85
|
+
request = PostageApp::Request.new('send_message',
|
86
|
+
'headers' => {
|
87
|
+
'from' => 'sender@test.test',
|
88
|
+
'subject' => 'Test Message'
|
92
89
|
},
|
93
|
-
'recipients'
|
94
|
-
'content'
|
95
|
-
'text/plain'
|
96
|
-
'text/html'
|
90
|
+
'recipients' => 'test@test.test',
|
91
|
+
'content' => {
|
92
|
+
'text/plain' => 'text content',
|
93
|
+
'text/html' => 'html content'
|
97
94
|
}
|
98
|
-
|
95
|
+
)
|
96
|
+
|
99
97
|
response = request.send
|
98
|
+
|
100
99
|
assert_equal 'ok', response.status
|
101
100
|
assert_equal 'sha1hashuid23456789012345678901234567890', response.uid
|
102
|
-
assert_equal({'message' => { 'id' => 999 }}, response.data)
|
101
|
+
assert_equal({ 'message' => { 'id' => 999 } }, response.data)
|
103
102
|
end
|
104
103
|
|
105
104
|
def test_send_failure
|
106
105
|
mock_failed_send
|
107
106
|
|
108
|
-
request = PostageApp::Request.new(
|
109
|
-
'
|
110
|
-
|
111
|
-
'
|
107
|
+
request = PostageApp::Request.new(
|
108
|
+
'send_message',
|
109
|
+
'headers' => {
|
110
|
+
'from' => 'sender@test.test',
|
111
|
+
'subject' => 'Test Message'
|
112
112
|
},
|
113
|
-
'recipients'
|
114
|
-
'content'
|
115
|
-
'text/plain'
|
116
|
-
'text/html'
|
113
|
+
'recipients' => 'test@test.test',
|
114
|
+
'content' => {
|
115
|
+
'text/plain' => 'text content',
|
116
|
+
'text/html' => 'html content'
|
117
117
|
}
|
118
|
-
|
118
|
+
)
|
119
119
|
|
120
120
|
response = request.send
|
121
121
|
|
data/test/response_test.rb
CHANGED
@@ -1,24 +1,26 @@
|
|
1
|
-
require File.expand_path('
|
1
|
+
require File.expand_path('helper', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class ResponseTest <
|
4
|
-
|
3
|
+
class ResponseTest < MiniTest::Test
|
5
4
|
def test_initialization
|
6
|
-
object = stub(
|
7
|
-
|
8
|
-
'
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
'
|
14
|
-
|
15
|
-
|
5
|
+
object = stub(
|
6
|
+
:body => {
|
7
|
+
'response' => {
|
8
|
+
'uid' => 'md5_hash_uid',
|
9
|
+
'status' => 'ok',
|
10
|
+
'message' => 'api reply message'
|
11
|
+
},
|
12
|
+
'data' => {
|
13
|
+
'key' => 'value'
|
14
|
+
}
|
15
|
+
}.to_json
|
16
|
+
)
|
16
17
|
|
17
18
|
response = PostageApp::Response.new(object)
|
18
|
-
assert_equal 'md5_hash_uid',
|
19
|
-
assert_equal 'ok',
|
20
|
-
assert_equal 'api reply message',
|
21
|
-
assert_equal ({'key' => 'value'}),
|
19
|
+
assert_equal 'md5_hash_uid', response.uid
|
20
|
+
assert_equal 'ok', response.status
|
21
|
+
assert_equal 'api reply message', response.message
|
22
|
+
assert_equal ({'key' => 'value'}), response.data
|
23
|
+
|
22
24
|
assert response.ok?
|
23
25
|
end
|
24
26
|
|
@@ -36,5 +38,4 @@ class ResponseTest < Minitest::Test
|
|
36
38
|
assert true
|
37
39
|
end
|
38
40
|
end
|
39
|
-
|
40
|
-
end
|
41
|
+
end
|
data/test/travis_test.rb
ADDED
@@ -0,0 +1,168 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
require File.expand_path('with_environment', File.dirname(__FILE__))
|
6
|
+
|
7
|
+
class TravisTest
|
8
|
+
extend WithEnvironment
|
9
|
+
|
10
|
+
ENV_VARIABLE = {
|
11
|
+
:rvm => "RBENV_VERSION",
|
12
|
+
:gemfile => "BUNDLE_GEMFILE"
|
13
|
+
}
|
14
|
+
|
15
|
+
def self.bash_env(env)
|
16
|
+
env.collect do |key, value|
|
17
|
+
variable = ENV_VARIABLE[key]
|
18
|
+
|
19
|
+
variable ? '%s=%s' % [ variable, value ] : nil
|
20
|
+
end.compact.join(' ')
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.env_expanded(env)
|
24
|
+
Hash[
|
25
|
+
env.collect do |key, value|
|
26
|
+
[ ENV_VARIABLE[key], value ]
|
27
|
+
end
|
28
|
+
]
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.shell_command!(args, env)
|
32
|
+
commands = args.collect do |s|
|
33
|
+
s % env
|
34
|
+
end
|
35
|
+
|
36
|
+
env_expanded(env).each do |key, value|
|
37
|
+
puts 'export %s=%s' % [ key, value ]
|
38
|
+
end
|
39
|
+
puts(commands.join(' && '))
|
40
|
+
|
41
|
+
with_environment(env_expanded(env)) do
|
42
|
+
result = system(commands.join(' && '))
|
43
|
+
|
44
|
+
yield(result) if (block_given?)
|
45
|
+
|
46
|
+
result
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.install_versions!
|
51
|
+
travis_test = self.new
|
52
|
+
|
53
|
+
travis_test.matrix.collect do |entry|
|
54
|
+
{
|
55
|
+
:rvm => entry[:rvm]
|
56
|
+
}
|
57
|
+
end.uniq.each do |entry|
|
58
|
+
puts "Ruby %{rvm}" % entry
|
59
|
+
|
60
|
+
shell_command!(
|
61
|
+
[
|
62
|
+
"rbenv install %{version}",
|
63
|
+
"gem install bundler"
|
64
|
+
],
|
65
|
+
entry
|
66
|
+
)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.validate_ruby_versions!
|
71
|
+
travis_test = self.new
|
72
|
+
|
73
|
+
versions = { }
|
74
|
+
|
75
|
+
travis_test.matrix.each do |entry|
|
76
|
+
next if (versions[entry[:rvm]])
|
77
|
+
|
78
|
+
versions[entry[:rvm]] = true
|
79
|
+
|
80
|
+
shell_command!(
|
81
|
+
[
|
82
|
+
"ruby -e 'puts RUBY_VERSION'"
|
83
|
+
],
|
84
|
+
entry
|
85
|
+
)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.gemfile_lock_remove!(path)
|
90
|
+
path = path + '.lock'
|
91
|
+
|
92
|
+
if (File.exist?(path))
|
93
|
+
File.unlink(path)
|
94
|
+
end
|
95
|
+
|
96
|
+
rescue Errno::ENOENT
|
97
|
+
# Already removed for some reason? Ignore.
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.run!
|
101
|
+
travis_test = self.new
|
102
|
+
|
103
|
+
results = { }
|
104
|
+
|
105
|
+
travis_test.matrix.each do |entry|
|
106
|
+
puts "RBENV_VERSION=%{rvm} BUNDLE_GEMFILE=%{gemfile}" % entry
|
107
|
+
|
108
|
+
gemfile_lock_remove!(entry[:gemfile])
|
109
|
+
|
110
|
+
shell_command!(
|
111
|
+
[
|
112
|
+
"bundle install --quiet",
|
113
|
+
"rake test"
|
114
|
+
],
|
115
|
+
entry
|
116
|
+
) do |code|
|
117
|
+
results[entry] = code
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
puts '%-20s %-24s %-6s' % [ 'Ruby', 'Gemfile', 'Status' ]
|
122
|
+
puts '-' * 78
|
123
|
+
|
124
|
+
results.each do |entry, code|
|
125
|
+
puts '%-20s %-24s %-6s' % [
|
126
|
+
entry[:rvm],
|
127
|
+
File.basename(entry[:gemfile]).sub(/\AGemfile\./,''),
|
128
|
+
code
|
129
|
+
]
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def travis_config_path
|
134
|
+
@travis_config_path ||= File.expand_path('../.travis.yml', File.dirname(__FILE__))
|
135
|
+
end
|
136
|
+
|
137
|
+
def travis_config
|
138
|
+
@travis_config ||= YAML.load(File.open(travis_config_path))
|
139
|
+
end
|
140
|
+
|
141
|
+
def gemfiles
|
142
|
+
travis_config['gemfile']
|
143
|
+
end
|
144
|
+
|
145
|
+
def ruby_versions
|
146
|
+
travis_config['rvm']
|
147
|
+
end
|
148
|
+
|
149
|
+
def matrix_exclusions
|
150
|
+
travis_config['matrix']['exclude'].collect do |entry|
|
151
|
+
{
|
152
|
+
:rvm => entry['rvm'],
|
153
|
+
:gemfile => entry['gemfile']
|
154
|
+
}
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def matrix
|
159
|
+
ruby_versions.flat_map do |version|
|
160
|
+
gemfiles.collect do |gemfile|
|
161
|
+
{
|
162
|
+
:rvm => version,
|
163
|
+
:gemfile => gemfile
|
164
|
+
}
|
165
|
+
end
|
166
|
+
end - matrix_exclusions
|
167
|
+
end
|
168
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module WithEnvironment
|
2
|
+
def with_environment(env)
|
3
|
+
prev_env = {
|
4
|
+
'PATH' => ENV['PATH']
|
5
|
+
}
|
6
|
+
|
7
|
+
# Remove rbenv version specific paths to restore environment to normal,
|
8
|
+
# non-versioned state.
|
9
|
+
ENV['PATH'] = ENV['PATH'].split(/:/).reject do |path|
|
10
|
+
path.match(%r[/\.rbenv/versions/])
|
11
|
+
end.join(':')
|
12
|
+
|
13
|
+
env.each do |key, value|
|
14
|
+
key = key.to_s
|
15
|
+
|
16
|
+
prev_env[key] = ENV[key]
|
17
|
+
ENV[key] = value
|
18
|
+
end
|
19
|
+
|
20
|
+
yield
|
21
|
+
|
22
|
+
ensure
|
23
|
+
prev_env.each do |key, value|
|
24
|
+
ENV[key] = value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|