postageapp 0.0.0 → 1.0.0
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.
- data/.gitignore +3 -0
- data/LICENSE +1 -1
- data/README.md +176 -0
- data/Rakefile +14 -12
- data/VERSION +1 -1
- data/generators/postageapp/postageapp_generator.rb +34 -0
- data/generators/postageapp/templates/initializer.rb +3 -0
- data/generators/postageapp/templates/postageapp_tasks.rake +78 -0
- data/lib/generators/postageapp/postageapp_generator.rb +27 -0
- data/lib/postageapp.rb +56 -0
- data/lib/postageapp/configuration.rb +91 -0
- data/lib/postageapp/failed_request.rb +64 -0
- data/lib/postageapp/logger.rb +16 -0
- data/lib/postageapp/mailer.rb +48 -0
- data/lib/postageapp/mailer/mailer_2.rb +92 -0
- data/lib/postageapp/mailer/mailer_3.rb +192 -0
- data/lib/postageapp/rails.rb +14 -0
- data/lib/postageapp/request.rb +87 -0
- data/lib/postageapp/response.rb +39 -0
- data/lib/postageapp/utils.rb +30 -0
- data/lib/postageapp/version.rb +7 -0
- data/postageapp.gemspec +61 -7
- data/test/configuration_test.rb +66 -0
- data/test/failed_request_test.rb +79 -0
- data/test/helper.rb +66 -0
- data/test/mailer/action_mailer_2/notifier.rb +64 -0
- data/test/mailer/action_mailer_2/notifier/with_body_and_attachment.erb +1 -0
- data/test/mailer/action_mailer_2/notifier/with_html_and_text_views.text.html.erb +1 -0
- data/test/mailer/action_mailer_2/notifier/with_html_and_text_views.text.plain.erb +1 -0
- data/test/mailer/action_mailer_2/notifier/with_simple_view.erb +1 -0
- data/test/mailer/action_mailer_2/notifier/with_text_only_view.text.plain.erb +1 -0
- data/test/mailer/action_mailer_3/notifier.rb +98 -0
- data/test/mailer/action_mailer_3/notifier/with_html_and_text_views.html.erb +1 -0
- data/test/mailer/action_mailer_3/notifier/with_html_and_text_views.text.erb +1 -0
- data/test/mailer/action_mailer_3/notifier/with_old_api.html.erb +1 -0
- data/test/mailer/action_mailer_3/notifier/with_old_api.text.erb +1 -0
- data/test/mailer/action_mailer_3/notifier/with_simple_view.erb +1 -0
- data/test/mailer/action_mailer_3/notifier/with_text_only_view.text.erb +1 -0
- data/test/mailer_2_test.rb +87 -0
- data/test/mailer_3_test.rb +104 -0
- data/test/mailer_helper_methods_test.rb +24 -0
- data/test/postageapp_test.rb +18 -0
- data/test/rails_initialization_test.rb +29 -0
- data/test/request_integration_test.rb +78 -0
- data/test/request_test.rb +81 -0
- data/test/response_test.rb +40 -0
- metadata +84 -9
- data/README.rdoc +0 -17
- data/test/test_postageapp.rb +0 -7
@@ -0,0 +1,78 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class RequestIntegrationTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
# Note: Need access to a live PostageApp.com account
|
6
|
+
# See helper.rb to set host / api key
|
7
|
+
unless false # set to +true+ to run tests
|
8
|
+
puts "\e[0m\e[31mSkipping #{File.basename(__FILE__)}\e[0m"
|
9
|
+
def test_nothing ; end
|
10
|
+
else
|
11
|
+
|
12
|
+
def setup
|
13
|
+
super
|
14
|
+
PostageApp.configure do |config|
|
15
|
+
config.secure = false
|
16
|
+
config.host = 'api.postageapp.local'
|
17
|
+
config.api_key = 'PROJECT_API_KEY'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_request_get_method_list
|
22
|
+
request = PostageApp::Request.new(:get_method_list)
|
23
|
+
response = request.send
|
24
|
+
assert_equal 'PostageApp::Response', response.class.name
|
25
|
+
assert_equal 'ok', response.status
|
26
|
+
assert_match /^\w{40}$/, response.uid
|
27
|
+
assert_equal nil, response.message
|
28
|
+
assert_equal ({
|
29
|
+
'methods' => 'get_account_info, get_message_receipt, get_method_list, get_project_info, send_message'
|
30
|
+
}), response.data
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_request_send_message
|
34
|
+
request = PostageApp::Request.new(:send_message, {
|
35
|
+
:headers => { 'from' => 'sender@test.test',
|
36
|
+
'subject' => 'Test Message'},
|
37
|
+
:recipients => 'test@test.test',
|
38
|
+
:content => {
|
39
|
+
'text/plain' => 'text content',
|
40
|
+
'text/html' => 'html content'
|
41
|
+
}
|
42
|
+
})
|
43
|
+
response = request.send
|
44
|
+
assert_equal 'PostageApp::Response', response.class.name
|
45
|
+
assert_equal 'ok', response.status
|
46
|
+
assert_match /^\w{40}$/, response.uid
|
47
|
+
assert_equal nil, response.message
|
48
|
+
assert_match /\d+/, response.data['message']['id'].to_s
|
49
|
+
|
50
|
+
receipt = PostageApp::Request.new(:get_message_receipt, :uid => response.uid).send
|
51
|
+
assert receipt.ok?
|
52
|
+
|
53
|
+
receipt = PostageApp::Request.new(:get_message_receipt, :uid => 'bogus').send
|
54
|
+
assert receipt.not_found?
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_request_non_existant_method
|
58
|
+
request = PostageApp::Request.new(:non_existant)
|
59
|
+
response = request.send
|
60
|
+
assert_equal 'PostageApp::Response', response.class.name
|
61
|
+
assert_equal 'internal_server_error', response.status
|
62
|
+
assert_match /^\w{40}$/, response.uid
|
63
|
+
assert_equal 'No action responded to non_existant. Actions: get_account_info, get_message_receipt, get_method_list, get_project_info, and send_message', response.message
|
64
|
+
assert_equal nil, response.data
|
65
|
+
end
|
66
|
+
|
67
|
+
# Testable under ruby 1.9.2 Probably OK in production too... Probably
|
68
|
+
# Lunchtime reading: http://ph7spot.com/musings/system-timer
|
69
|
+
def test_request_timeout
|
70
|
+
PostageApp.configuration.host = 'dead.postageapp.local'
|
71
|
+
request = PostageApp::Request.new(:get_method_list)
|
72
|
+
response = request.send
|
73
|
+
assert_equal 'PostageApp::Response', response.class.name
|
74
|
+
assert_equal 'fail', response.status
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class RequestTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_method_uid
|
6
|
+
request = PostageApp::Request.new(:test_method)
|
7
|
+
uid = request.uid
|
8
|
+
assert_match /^\w{40}$/, uid
|
9
|
+
assert_equal uid, request.uid
|
10
|
+
assert_not_equal uid, request.uid(true)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_method_url
|
14
|
+
request = PostageApp::Request.new(:test_method)
|
15
|
+
assert_equal 'api.postageapp.com', request.url.host
|
16
|
+
assert_equal 443, request.url.port
|
17
|
+
assert_equal '/v.1.0/test_method.json', request.url.path
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_method_arguments_to_send
|
21
|
+
request = PostageApp::Request.new(:test_method)
|
22
|
+
args = request.arguments_to_send
|
23
|
+
assert_equal '1234567890abcdef', args['api_key']
|
24
|
+
assert_match /^\w{40}$/, args['uid']
|
25
|
+
|
26
|
+
request.arguments = { 'data' => 'content' }
|
27
|
+
args = request.arguments_to_send
|
28
|
+
assert_equal '1234567890abcdef', args['api_key']
|
29
|
+
assert_match /^\w{40}$/, args['uid']
|
30
|
+
assert_equal 'content', args['arguments']['data']
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_uid_is_enforceable
|
34
|
+
request = PostageApp::Request.new(:test_method)
|
35
|
+
assert_match /^\w{40}$/, request.arguments_to_send['uid']
|
36
|
+
|
37
|
+
request.uid = 'my_uid'
|
38
|
+
assert_equal 'my_uid', request.arguments_to_send['uid']
|
39
|
+
|
40
|
+
request = PostageApp::Request.new(:test_method, :uid => 'new_uid', :data => 'value')
|
41
|
+
assert_equal 'new_uid', request.uid
|
42
|
+
assert_equal ({:data => 'value'}), request.arguments
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_send
|
46
|
+
mock_successful_send
|
47
|
+
|
48
|
+
request = PostageApp::Request.new(:send_message, {
|
49
|
+
:headers => { 'from' => 'sender@test.test',
|
50
|
+
'subject' => 'Test Message'},
|
51
|
+
:recipients => 'test@test.test',
|
52
|
+
:content => {
|
53
|
+
'text/plain' => 'text content',
|
54
|
+
'text/html' => 'html content'
|
55
|
+
}
|
56
|
+
})
|
57
|
+
response = request.send
|
58
|
+
assert_equal 'ok', response.status
|
59
|
+
assert_equal 'sha1hashuid23456789012345678901234567890', response.uid
|
60
|
+
assert_equal ({'message' => { 'id' => 999 }}), response.data
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_send_failure
|
64
|
+
mock_failed_send
|
65
|
+
|
66
|
+
request = PostageApp::Request.new(:send_message, {
|
67
|
+
:headers => { 'from' => 'sender@test.test',
|
68
|
+
'subject' => 'Test Message'},
|
69
|
+
:recipients => 'test@test.test',
|
70
|
+
:content => {
|
71
|
+
'text/plain' => 'text content',
|
72
|
+
'text/html' => 'html content'
|
73
|
+
}
|
74
|
+
})
|
75
|
+
response = request.send
|
76
|
+
assert_equal 'fail', response.status
|
77
|
+
assert_equal nil, response.uid
|
78
|
+
assert_equal nil, response.data
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class ResponseTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_initialization
|
6
|
+
object = stub(: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
|
+
|
17
|
+
response = PostageApp::Response.new(object)
|
18
|
+
assert_equal 'md5_hash_uid', response.uid
|
19
|
+
assert_equal 'ok', response.status
|
20
|
+
assert_equal 'api reply message', response.message
|
21
|
+
assert_equal ({'key' => 'value'}), response.data
|
22
|
+
assert response.ok?
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_status_check
|
26
|
+
response = PostageApp::Response.new(nil)
|
27
|
+
assert_equal 'fail', response.status
|
28
|
+
assert response.fail?
|
29
|
+
assert !response.ok?
|
30
|
+
assert !response.really?
|
31
|
+
|
32
|
+
begin
|
33
|
+
response.bad_method
|
34
|
+
assert false
|
35
|
+
rescue NoMethodError
|
36
|
+
assert true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
metadata
CHANGED
@@ -3,10 +3,10 @@ name: postageapp
|
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
|
+
- 1
|
6
7
|
- 0
|
7
8
|
- 0
|
8
|
-
|
9
|
-
version: 0.0.0
|
9
|
+
version: 1.0.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Oleg Khabarov, The Working Group Inc
|
@@ -14,10 +14,37 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-07-23 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
|
-
dependencies:
|
20
|
-
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: json
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 2
|
30
|
+
- 4
|
31
|
+
version: 1.2.4
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: mocha
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
- 9
|
44
|
+
- 8
|
45
|
+
version: 0.9.8
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id002
|
21
48
|
description: Gem that interfaces with PostageApp.com service to send emails from web apps
|
22
49
|
email: oleg@twg.ca
|
23
50
|
executables: []
|
@@ -26,18 +53,55 @@ extensions: []
|
|
26
53
|
|
27
54
|
extra_rdoc_files:
|
28
55
|
- LICENSE
|
29
|
-
- README.
|
56
|
+
- README.md
|
30
57
|
files:
|
31
58
|
- .document
|
32
59
|
- .gitignore
|
33
60
|
- LICENSE
|
34
|
-
- README.
|
61
|
+
- README.md
|
35
62
|
- Rakefile
|
36
63
|
- VERSION
|
64
|
+
- generators/postageapp/postageapp_generator.rb
|
65
|
+
- generators/postageapp/templates/initializer.rb
|
66
|
+
- generators/postageapp/templates/postageapp_tasks.rake
|
67
|
+
- lib/generators/postageapp/postageapp_generator.rb
|
37
68
|
- lib/postageapp.rb
|
69
|
+
- lib/postageapp/configuration.rb
|
70
|
+
- lib/postageapp/failed_request.rb
|
71
|
+
- lib/postageapp/logger.rb
|
72
|
+
- lib/postageapp/mailer.rb
|
73
|
+
- lib/postageapp/mailer/mailer_2.rb
|
74
|
+
- lib/postageapp/mailer/mailer_3.rb
|
75
|
+
- lib/postageapp/rails.rb
|
76
|
+
- lib/postageapp/request.rb
|
77
|
+
- lib/postageapp/response.rb
|
78
|
+
- lib/postageapp/utils.rb
|
79
|
+
- lib/postageapp/version.rb
|
38
80
|
- postageapp.gemspec
|
81
|
+
- test/configuration_test.rb
|
82
|
+
- test/failed_request_test.rb
|
39
83
|
- test/helper.rb
|
40
|
-
- test/
|
84
|
+
- test/mailer/action_mailer_2/notifier.rb
|
85
|
+
- test/mailer/action_mailer_2/notifier/with_body_and_attachment.erb
|
86
|
+
- test/mailer/action_mailer_2/notifier/with_html_and_text_views.text.html.erb
|
87
|
+
- test/mailer/action_mailer_2/notifier/with_html_and_text_views.text.plain.erb
|
88
|
+
- test/mailer/action_mailer_2/notifier/with_simple_view.erb
|
89
|
+
- test/mailer/action_mailer_2/notifier/with_text_only_view.text.plain.erb
|
90
|
+
- test/mailer/action_mailer_3/notifier.rb
|
91
|
+
- test/mailer/action_mailer_3/notifier/with_html_and_text_views.html.erb
|
92
|
+
- test/mailer/action_mailer_3/notifier/with_html_and_text_views.text.erb
|
93
|
+
- test/mailer/action_mailer_3/notifier/with_old_api.html.erb
|
94
|
+
- test/mailer/action_mailer_3/notifier/with_old_api.text.erb
|
95
|
+
- test/mailer/action_mailer_3/notifier/with_simple_view.erb
|
96
|
+
- test/mailer/action_mailer_3/notifier/with_text_only_view.text.erb
|
97
|
+
- test/mailer_2_test.rb
|
98
|
+
- test/mailer_3_test.rb
|
99
|
+
- test/mailer_helper_methods_test.rb
|
100
|
+
- test/postageapp_test.rb
|
101
|
+
- test/rails_initialization_test.rb
|
102
|
+
- test/request_integration_test.rb
|
103
|
+
- test/request_test.rb
|
104
|
+
- test/response_test.rb
|
41
105
|
has_rdoc: true
|
42
106
|
homepage: http://github.com/theworkinggroup/postageapp-gem
|
43
107
|
licenses: []
|
@@ -69,5 +133,16 @@ signing_key:
|
|
69
133
|
specification_version: 3
|
70
134
|
summary: Easier way to send email from web apps
|
71
135
|
test_files:
|
136
|
+
- test/configuration_test.rb
|
137
|
+
- test/failed_request_test.rb
|
72
138
|
- test/helper.rb
|
73
|
-
- test/
|
139
|
+
- test/mailer/action_mailer_2/notifier.rb
|
140
|
+
- test/mailer/action_mailer_3/notifier.rb
|
141
|
+
- test/mailer_2_test.rb
|
142
|
+
- test/mailer_3_test.rb
|
143
|
+
- test/mailer_helper_methods_test.rb
|
144
|
+
- test/postageapp_test.rb
|
145
|
+
- test/rails_initialization_test.rb
|
146
|
+
- test/request_integration_test.rb
|
147
|
+
- test/request_test.rb
|
148
|
+
- test/response_test.rb
|
data/README.rdoc
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
= postageapp
|
2
|
-
|
3
|
-
Description goes here.
|
4
|
-
|
5
|
-
== Note on Patches/Pull Requests
|
6
|
-
|
7
|
-
* Fork the project.
|
8
|
-
* Make your feature addition or bug fix.
|
9
|
-
* Add tests for it. This is important so I don't break it in a
|
10
|
-
future version unintentionally.
|
11
|
-
* Commit, do not mess with rakefile, version, or history.
|
12
|
-
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
13
|
-
* Send me a pull request. Bonus points for topic branches.
|
14
|
-
|
15
|
-
== Copyright
|
16
|
-
|
17
|
-
Copyright (c) 2010 Oleg. See LICENSE for details.
|