postful 0.1.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/doc/classes/Postful/AuthorizationException.html +111 -0
- data/doc/classes/Postful/Base.html +255 -0
- data/doc/classes/Postful/Base.src/M000001.html +21 -0
- data/doc/classes/Postful/Base.src/M000002.html +23 -0
- data/doc/classes/Postful/Base.src/M000003.html +22 -0
- data/doc/classes/Postful/Base.src/M000004.html +22 -0
- data/doc/classes/Postful/Base.src/M000005.html +20 -0
- data/doc/classes/Postful/Base.src/M000006.html +18 -0
- data/doc/classes/Postful/InternalServerError.html +111 -0
- data/doc/classes/Postful/Letter.html +347 -0
- data/doc/classes/Postful/Letter.src/M000015.html +18 -0
- data/doc/classes/Postful/Letter.src/M000016.html +18 -0
- data/doc/classes/Postful/Letter.src/M000017.html +18 -0
- data/doc/classes/Postful/Letter.src/M000018.html +18 -0
- data/doc/classes/Postful/Letter.src/M000019.html +18 -0
- data/doc/classes/Postful/Letter.src/M000020.html +18 -0
- data/doc/classes/Postful/Letter.src/M000021.html +18 -0
- data/doc/classes/Postful/Letter.src/M000022.html +18 -0
- data/doc/classes/Postful/Letter.src/M000023.html +18 -0
- data/doc/classes/Postful/Letter.src/M000024.html +18 -0
- data/doc/classes/Postful/Letter.src/M000025.html +18 -0
- data/doc/classes/Postful/Letter.src/M000026.html +18 -0
- data/doc/classes/Postful/NotFoundException.html +111 -0
- data/doc/classes/Postful/Order.html +276 -0
- data/doc/classes/Postful/Order.src/M000007.html +19 -0
- data/doc/classes/Postful/Order.src/M000008.html +24 -0
- data/doc/classes/Postful/Order.src/M000009.html +26 -0
- data/doc/classes/Postful/Order.src/M000010.html +18 -0
- data/doc/classes/Postful/Service.html +191 -0
- data/doc/classes/Postful/Service.src/M000011.html +19 -0
- data/doc/classes/Postful/Service.src/M000012.html +24 -0
- data/doc/classes/Postful/Service.src/M000013.html +19 -0
- data/doc/classes/Postful/Service.src/M000014.html +24 -0
- data/doc/classes/Postful/UnknownResponseException.html +111 -0
- data/doc/classes/Postful/ValidationException.html +111 -0
- data/doc/created.rid +1 -0
- data/doc/files/MIT-LICENSE.html +129 -0
- data/doc/files/README.html +164 -0
- data/doc/files/lib/postful/base_rb.html +108 -0
- data/doc/files/lib/postful/instance_exec_module_rb.html +101 -0
- data/doc/files/lib/postful/letter_rb.html +109 -0
- data/doc/files/lib/postful/order_rb.html +110 -0
- data/doc/files/lib/postful/service_rb.html +109 -0
- data/doc/files/lib/postful/util_rb.html +101 -0
- data/doc/files/lib/postful_rb.html +110 -0
- data/doc/fr_class_index.html +35 -0
- data/doc/fr_file_index.html +35 -0
- data/doc/fr_method_index.html +52 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/postful.rb +3 -0
- data/lib/postful/base.rb +163 -0
- data/lib/postful/instance_exec_module.rb +25 -0
- data/lib/postful/letter.rb +134 -0
- data/lib/postful/order.rb +130 -0
- data/lib/postful/service.rb +40 -0
- data/lib/postful/util.rb +69 -0
- data/test/suite.rb +5 -0
- data/test/test_base.rb +131 -0
- data/test/test_letter.rb +115 -0
- data/test/test_order.rb +49 -0
- data/test/test_postcard.rb +12 -0
- data/test/test_service.rb +52 -0
- metadata +128 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require "net/https"
|
3
|
+
require File.join(File.dirname(__FILE__), 'order')
|
4
|
+
require File.join(File.dirname(__FILE__), 'util')
|
5
|
+
|
6
|
+
module Postful
|
7
|
+
class Service
|
8
|
+
include Util
|
9
|
+
|
10
|
+
def initialize(email, password)
|
11
|
+
@email = email
|
12
|
+
@password = password
|
13
|
+
end
|
14
|
+
|
15
|
+
def find_order_by_id(id)
|
16
|
+
response = get_request_on_path("/service/mail/#{id}", @email, @password)
|
17
|
+
case response.code
|
18
|
+
when "200" then
|
19
|
+
Postful::Order.build_from_response(response.body, @email, @password)
|
20
|
+
else
|
21
|
+
process_standard_responses(response)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def cancel_order_by_id(id)
|
26
|
+
order = Postful::Order.new { @id = id }
|
27
|
+
order.cancel
|
28
|
+
end
|
29
|
+
|
30
|
+
def find_all_orders
|
31
|
+
response = get_request_on_path("/service/mail", @email, @password)
|
32
|
+
case response.code
|
33
|
+
when "200" then
|
34
|
+
Postful::Order.build_all_from_response(response.body, @email, @password)
|
35
|
+
else
|
36
|
+
process_standard_responses(response)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/postful/util.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
module Postful
|
2
|
+
module Util #:nodoc:
|
3
|
+
protected
|
4
|
+
|
5
|
+
def build_error_message_from_response(response)
|
6
|
+
document = REXML::Document.new response
|
7
|
+
errors = []
|
8
|
+
document.elements.each("errors/error") do |element|
|
9
|
+
errors << element.text
|
10
|
+
end
|
11
|
+
errors.join("\n")
|
12
|
+
end
|
13
|
+
|
14
|
+
def authorization_header(email, password)
|
15
|
+
'Basic ' + ["#{email}:#{password}"].pack('m').delete("\r\n")
|
16
|
+
end
|
17
|
+
|
18
|
+
def process_standard_responses(response)
|
19
|
+
case response.code
|
20
|
+
when "500" then
|
21
|
+
raise Postful::InternalServerError
|
22
|
+
when "401" then
|
23
|
+
raise Postful::AuthorizationException
|
24
|
+
when "404" then
|
25
|
+
raise Postful::NotFoundException
|
26
|
+
else
|
27
|
+
raise Postful::UnknownResponseException, response.code
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete_request_on_path(path, email, password)
|
32
|
+
http = Net::HTTP.new('www.postful.com', 443)
|
33
|
+
http.use_ssl = true
|
34
|
+
silence_warnings do
|
35
|
+
http.start() {|http|
|
36
|
+
request = Net::HTTP::Delete.new(path)
|
37
|
+
request.basic_auth email, password
|
38
|
+
http.request(request)
|
39
|
+
}
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def get_request_on_path(path, email, password)
|
44
|
+
http = Net::HTTP.new('www.postful.com', 443)
|
45
|
+
http.use_ssl = true
|
46
|
+
silence_warnings do
|
47
|
+
http.start() {|http|
|
48
|
+
request = Net::HTTP::Get.new(path)
|
49
|
+
request.basic_auth email, password
|
50
|
+
http.request(request)
|
51
|
+
}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def post_request_on_path(path, post, email, password, headers = {})
|
56
|
+
http = Net::HTTP.new('www.postful.com', 443)
|
57
|
+
http.use_ssl = true
|
58
|
+
headers.merge!({ 'Authorization' => authorization_header(email, password) })
|
59
|
+
silence_warnings { http.post(path, post, headers) }
|
60
|
+
end
|
61
|
+
|
62
|
+
def silence_warnings
|
63
|
+
old_verbose, $VERBOSE = $VERBOSE, nil
|
64
|
+
yield
|
65
|
+
ensure
|
66
|
+
$VERBOSE = old_verbose
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/test/suite.rb
ADDED
data/test/test_base.rb
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'fake_web'
|
3
|
+
require 'lib/postful/base'
|
4
|
+
require 'rexml/document'
|
5
|
+
|
6
|
+
class TestBase < Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@base = Postful::Base.new('email', 'password')
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_tags
|
12
|
+
@base.tag1 = 'tag 1'
|
13
|
+
@base.tag2 = 'tag 2'
|
14
|
+
@base.tag3 = 'tag 3'
|
15
|
+
@request = @base.send :build_request
|
16
|
+
assert_equal 'tag 1', fetch_tag('mail/tag1')
|
17
|
+
assert_equal 'tag 2', fetch_tag('mail/tag2')
|
18
|
+
assert_equal 'tag 3', fetch_tag('mail/tag3')
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_return_address
|
22
|
+
@base.return_address = ['Address 1', 'Address 2', 'Address 3']
|
23
|
+
@request = @base.send :build_request
|
24
|
+
assert_equal 'Address 1', fetch_tag('mail/return_address/line1')
|
25
|
+
assert_equal 'Address 2', fetch_tag('mail/return_address/line2')
|
26
|
+
assert_equal 'Address 3', fetch_tag('mail/return_address/line3')
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_creates_order
|
30
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail', :string => fixture('201.xml'), :status => '201')
|
31
|
+
FakeWeb.register_uri('http://www.postful.com/', :string => 'Test Response')
|
32
|
+
order = @base.send :send_request, nil
|
33
|
+
assert order
|
34
|
+
assert_equal 'Received', order.status
|
35
|
+
assert_equal 999999, order.id
|
36
|
+
assert_equal 'web_service', order.source
|
37
|
+
assert_equal 1, order.pages
|
38
|
+
assert_equal 'http://www.postful.com', order.preview_url
|
39
|
+
assert_equal 'Test Response', order.preview
|
40
|
+
assert_equal '$0.99', order.price
|
41
|
+
assert_equal 'first', order.tag1
|
42
|
+
assert_equal 'second', order.tag2
|
43
|
+
assert_equal 'third', order.tag3
|
44
|
+
assert_equal [[Time.utc(2008, 'aug', 5, 17, 44, 2), 'Received'], [Time.utc(2008, 'aug', 6, 17, 44, 2), 'Prepared']],
|
45
|
+
order.history
|
46
|
+
assert_equal ['Warning 1!', 'Warning 2!'], order.warnings
|
47
|
+
assert_equal ['Error 1!', 'Error 2!'], order.errors
|
48
|
+
assert_equal [
|
49
|
+
['The Queen', 'Buckingham Palace', 'London SW1A 1AA', 'United Kingdom'],
|
50
|
+
['Sherlock Holmes', '221B Baker Street', 'London NW1', 'United Kingdom']],
|
51
|
+
order.addressees
|
52
|
+
assert_equal ['Postful, Inc', '123 Postful St', 'Postful, CA 10000'], order.return_address
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_unprocessable_entity
|
56
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail', :string => fixture('422.xml'), :status => '422')
|
57
|
+
exception = assert_raises Postful::ValidationException do
|
58
|
+
@base.send :send_request, nil
|
59
|
+
end
|
60
|
+
assert_equal "Some error\nAnother error", exception.message
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_unauthorized
|
64
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail', :status => '401')
|
65
|
+
assert_raises Postful::AuthorizationException do
|
66
|
+
@base.send :send_request, nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_server_error
|
71
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail', :status => '500')
|
72
|
+
assert_raises Postful::InternalServerError do
|
73
|
+
@base.send :send_request, nil
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_add_international_address
|
78
|
+
address = @base.add_international_address ['The Queen', 'Buckingham Palace', 'London SW1A 1AA'], 'ENGLAND'
|
79
|
+
assert_equal 'ENGLAND', address.country
|
80
|
+
assert_equal ['The Queen', 'Buckingham Palace', 'London SW1A 1AA'], address.lines
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_build_request_international_addressee
|
84
|
+
@base.add_international_address ['Buckingham Palace', 'London SW1A 1AA'], 'ENGLAND'
|
85
|
+
xml = @base.send(:build_request)
|
86
|
+
assert_equal %(<mail><documents></documents><addressees><addressee><line1>Buckingham Palace</line1><line2>London SW1A 1AA</line2><country>ENGLAND</country></addressee></addressees></mail>), xml
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_build_request_domestic_addressee
|
90
|
+
@base.add_address :name => 'John Doe', :address => '123 Main St', :city => 'Anytown', :state => 'AZ', :postal_code => '10000'
|
91
|
+
xml = @base.send(:build_request)
|
92
|
+
assert_equal %(<mail><documents></documents><addressees><addressee><name>John Doe</name><address>123 Main St</address><city>Anytown</city><state>AZ</state><postal_code>10000</postal_code></addressee></addressees></mail>), xml
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_add_address
|
96
|
+
address = @base.add_address :name => 'John Doe',
|
97
|
+
:company => 'Postful, Inc',
|
98
|
+
:address => '123 Main St',
|
99
|
+
:address2 => 'Suite A',
|
100
|
+
:city => 'Anytown',
|
101
|
+
:state => 'AZ',
|
102
|
+
:postal_code => '10000'
|
103
|
+
assert_equal 'John Doe', address.name
|
104
|
+
assert_equal 'Postful, Inc', address.company
|
105
|
+
assert_equal 'Suite A', address.address2
|
106
|
+
assert_equal 'Anytown', address.city
|
107
|
+
assert_equal 'AZ', address.state
|
108
|
+
assert_equal '10000', address.postal_code
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_requires_address
|
112
|
+
assert !@base.valid?
|
113
|
+
assert_equal 'Requires at least one addressee', @base.errors.first
|
114
|
+
end
|
115
|
+
|
116
|
+
private
|
117
|
+
|
118
|
+
def fixture(filename)
|
119
|
+
f = File.join(File.dirname(__FILE__), 'responses', filename)
|
120
|
+
open(f, "rb") do |io|
|
121
|
+
io.read
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def fetch_tag(tag)
|
126
|
+
@document ||= begin
|
127
|
+
REXML::Document.new @request
|
128
|
+
end
|
129
|
+
@document.elements[tag] && @document.elements[tag].text
|
130
|
+
end
|
131
|
+
end
|
data/test/test_letter.rb
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'fake_web'
|
3
|
+
require 'lib/postful/letter'
|
4
|
+
|
5
|
+
class TestLetter < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@letter = Postful::Letter.new('email', 'password')
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_build_request_document
|
11
|
+
document = @letter.add_html_document '<b>Hello, world!</b>'
|
12
|
+
document.attachment_name = 'porcupine'
|
13
|
+
xml = @letter.send(:build_request)
|
14
|
+
assert_equal %(<mail><documents><document><type>html</type><attachment>porcupine</attachment></document></documents><addressees></addressees></mail>), xml
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_upload
|
18
|
+
FakeWeb.register_uri('https://www.postful.com/service/upload', :string => %(
|
19
|
+
<?xml version="1.0" encoding="UTF-8"?><upload><id>290797321.waltershandy.2</id></upload>))
|
20
|
+
document = @letter.add_html_document '<b>Hello, world!</b>'
|
21
|
+
document.upload
|
22
|
+
assert_equal '290797321.waltershandy.2', document.attachment_name
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_add_html_document
|
26
|
+
document = @letter.add_html_document '<b>Hello, world!</b>'
|
27
|
+
assert_equal 'html', document.format
|
28
|
+
assert_equal '<b>Hello, world!</b>', document.content
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_add_html_document_from_file
|
32
|
+
document = @letter.add_html_document_from_file fixture('sample.txt')
|
33
|
+
assert_equal 'html', document.format
|
34
|
+
assert_equal 'Hello, world!', document.content
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_add_word_document
|
38
|
+
document = @letter.add_word_document 'Example Word Document'
|
39
|
+
assert_equal 'doc', document.format
|
40
|
+
assert_equal 'Example Word Document', document.content
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_add_word_document_from_file
|
44
|
+
document = @letter.add_word_document_from_file fixture('sample.txt')
|
45
|
+
assert_equal 'doc', document.format
|
46
|
+
assert_equal 'Hello, world!', document.content
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_add_rtf_document
|
50
|
+
document = @letter.add_rtf_document 'Example RTF Document'
|
51
|
+
assert_equal 'rtf', document.format
|
52
|
+
assert_equal 'Example RTF Document', document.content
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_add_rtf_document_from_file
|
56
|
+
document = @letter.add_rtf_document_from_file fixture('sample.txt')
|
57
|
+
assert_equal 'rtf', document.format
|
58
|
+
assert_equal 'Hello, world!', document.content
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_add_odt_document
|
62
|
+
document = @letter.add_open_office_document 'Example Open Office Document'
|
63
|
+
assert_equal 'odt', document.format
|
64
|
+
assert_equal 'Example Open Office Document', document.content
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_add_odt_document_from_file
|
68
|
+
document = @letter.add_open_office_document_from_file fixture('sample.txt')
|
69
|
+
assert_equal 'odt', document.format
|
70
|
+
assert_equal 'Hello, world!', document.content
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_add_text_document
|
74
|
+
document = @letter.add_text_document 'Example text Document'
|
75
|
+
assert_equal 'txt', document.format
|
76
|
+
assert_equal 'Example text Document', document.content
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_add_text_document_from_file
|
80
|
+
document = @letter.add_text_document_from_file fixture('sample.txt')
|
81
|
+
assert_equal 'txt', document.format
|
82
|
+
assert_equal 'Hello, world!', document.content
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_add_pdf_document
|
86
|
+
document = @letter.add_pdf_document 'Example PDF Document'
|
87
|
+
assert_equal 'pdf', document.format
|
88
|
+
assert_equal 'Example PDF Document', document.content
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_add_pdf_document_from_file
|
92
|
+
document = @letter.add_pdf_document_from_file fixture('sample.txt')
|
93
|
+
assert_equal 'pdf', document.format
|
94
|
+
assert_equal 'Hello, world!', document.content
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_requires_document
|
98
|
+
@letter.add_international_address ['Buckingham Palace', 'London SW1A 1AA'], 'ENGLAND'
|
99
|
+
assert !@letter.valid?
|
100
|
+
assert_equal 'Requires at least one document', @letter.errors.first
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_valid_with_letter_and_document
|
104
|
+
@letter.add_international_address ['Buckingham Palace', 'London SW1A 1AA'], 'ENGLAND'
|
105
|
+
@letter.add_pdf_document 'Example PDF Document'
|
106
|
+
assert @letter.send(:valid?)
|
107
|
+
end
|
108
|
+
|
109
|
+
private
|
110
|
+
|
111
|
+
def fixture(filename)
|
112
|
+
File.join(File.dirname(__FILE__), 'fixtures', filename)
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
data/test/test_order.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'fake_web'
|
3
|
+
require 'lib/postful/service'
|
4
|
+
|
5
|
+
class TestOrder < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@service = Postful::Service.new('email', 'password')
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_cancel
|
11
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail/999999', :status => '200', :string => fixture('delete.xml'))
|
12
|
+
order = Postful::Order.new { @id = 999999 }
|
13
|
+
assert order.status.nil?
|
14
|
+
order.cancel
|
15
|
+
assert_equal 'Canceled', order.status
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_cannot_cancel
|
19
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail/1', :status => '422', :string => fixture('422.xml'))
|
20
|
+
order = Postful::Order.new { @id = 1 }
|
21
|
+
assert_raises Postful::ValidationException do
|
22
|
+
order.cancel
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_refresh
|
27
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail/999999', :string => fixture('get.xml'))
|
28
|
+
service = Postful::Service.new('email', 'password')
|
29
|
+
order = service.find_order_by_id(999999)
|
30
|
+
assert_equal 'Error', order.status
|
31
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail/999999', :string => fixture('modified_get.xml'))
|
32
|
+
order.refresh
|
33
|
+
assert_equal 'Prepared', order.status
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_find_all
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def fixture(filename)
|
43
|
+
f = File.join(File.dirname(__FILE__), 'responses', filename)
|
44
|
+
open(f, "rb") do |io|
|
45
|
+
io.read
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'fake_web'
|
3
|
+
require 'lib/postful/service'
|
4
|
+
|
5
|
+
class TestService < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@service = Postful::Service.new('email', 'password')
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_cancel_order_by_id
|
11
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail/999999', :status => '200', :string => fixture('delete.xml'))
|
12
|
+
order = @service.cancel_order_by_id(999999)
|
13
|
+
assert_equal 'Canceled', order.status
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_cancel_order_not_found
|
17
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail/999999', :status => '404', :string => 'Junk response')
|
18
|
+
assert_raises Postful::NotFoundException do
|
19
|
+
@service.cancel_order_by_id(999999)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_find_order_by_id
|
24
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail/999999', :string => fixture('get.xml'))
|
25
|
+
order = @service.find_order_by_id(999999)
|
26
|
+
assert_equal 999999, order.id
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_find_order_not_found
|
30
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail/999999', :status => '404', :string => 'Junk response')
|
31
|
+
assert_raises Postful::NotFoundException do
|
32
|
+
@service.find_order_by_id(999999)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_find_all_orders
|
37
|
+
FakeWeb.register_uri('https://www.postful.com/service/mail', :string => fixture('get_all.xml'))
|
38
|
+
orders = @service.find_all_orders
|
39
|
+
assert_equal 2, orders.size
|
40
|
+
assert_equal 'Canceled', orders.first.status
|
41
|
+
assert_equal 'Mailed', orders.last.status
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def fixture(filename)
|
47
|
+
f = File.join(File.dirname(__FILE__), 'responses', filename)
|
48
|
+
open(f, "rb") do |io|
|
49
|
+
io.read
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|