mms2r 2.4.1 → 3.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 +1 -0
- data/History.txt +5 -0
- data/Manifest.txt +1 -1
- data/README.txt +12 -9
- data/Rakefile +11 -10
- data/conf/mobile.indosat.net.id.yml +1 -1
- data/conf/waw.plspictures.com.yml +1 -1
- data/lib/mail_ext.rb +37 -0
- data/lib/mms2r.rb +7 -5
- data/lib/mms2r/media.rb +29 -35
- data/lib/mms2r/media/sprint.rb +19 -19
- data/mms2r.gemspec +23 -17
- data/test/fixtures/att-blackberry-02.mail +5 -6
- data/test/fixtures/att-iphone-01.mail +3 -3
- data/test/fixtures/dobson-image-01.mail +3 -3
- data/test/fixtures/maroctelecom-france-mms-01.mail +4 -4
- data/test/fixtures/mycingular-image-01.mail +3 -3
- data/test/fixtures/nextel-image-02.mail +2 -2
- data/test/fixtures/orangepoland-text-01.mail +2 -1
- data/test/fixtures/orangepoland-text-02.mail +2 -1
- data/test/fixtures/pics.cingularme.com-image-01.mail +0 -1
- data/test/fixtures/sasktel-image-01.mail +4 -4
- data/test/fixtures/sprint-broken-image-01.mail +1 -1
- data/test/fixtures/sprint-text-01.mail +1 -1
- data/test/fixtures/tmobile-blackberry-02.mail +4 -4
- data/test/test_1nbox_net.rb +16 -19
- data/test/test_bell_canada.rb +8 -13
- data/test/test_bellsouth_net.rb +5 -10
- data/test/test_helper.rb +16 -11
- data/test/test_mediamessaging_o2_co_uk.rb +21 -17
- data/test/test_messaging_nextel_com.rb +18 -12
- data/test/test_messaging_sprintpcs_com.rb +4 -8
- data/test/test_mms2r_media.rb +153 -143
- data/test/test_mms_3ireland_ie.rb +4 -9
- data/test/test_mms_ae.rb +12 -12
- data/test/test_mms_alltel_com.rb +14 -15
- data/test/test_mms_att_net.rb +35 -27
- data/test/test_mms_dobson_net.rb +9 -11
- data/test/test_mms_luxgsm_lu.rb +23 -17
- data/test/test_mms_mobileiam_ma.rb +4 -10
- data/test/test_mms_mtn_co_za.rb +4 -9
- data/test/test_mms_mycricket_com.rb +9 -9
- data/test/test_mms_myhelio_com.rb +18 -14
- data/test/test_mms_netcom_no.rb +19 -17
- data/test/test_mms_o2online_de.rb +20 -18
- data/test/test_mms_three_co_uk.rb +14 -14
- data/test/test_mms_vodacom4me_co_za.rb +24 -24
- data/test/test_mobile_indosat_net_id.rb +6 -9
- data/test/test_msg_telus_com.rb +5 -10
- data/test/test_orangemms_net.rb +25 -17
- data/test/test_pm_sprint_com.rb +37 -22
- data/test/test_pxt_vodafone_net_nz.rb +7 -11
- data/test/test_rci_rogers_com.rb +3 -8
- data/test/test_sms_sasktel_com.rb +2 -7
- data/test/test_tmomail_net.rb +25 -23
- data/test/test_unicel_com.rb +8 -12
- data/test/test_vmpix_com.rb +14 -13
- data/test/test_vzwpix_com.rb +24 -14
- data/test/test_waw_plspictures_com.rb +2 -7
- metadata +77 -26
- data/lib/tmail_ext.rb +0 -22
data/test/test_helper.rb
CHANGED
@@ -1,8 +1,14 @@
|
|
1
|
+
require 'rubygems'
|
1
2
|
require 'set'
|
2
3
|
require 'net/http'
|
3
4
|
require 'net/https'
|
4
5
|
require 'pp'
|
5
6
|
require 'exifr'
|
7
|
+
require 'tempfile'
|
8
|
+
require 'test/unit'
|
9
|
+
require 'mocha'
|
10
|
+
require File.join(File.dirname(__FILE__), "..", "lib", "mms2r")
|
11
|
+
|
6
12
|
begin require 'redgreen'; rescue LoadError; end
|
7
13
|
|
8
14
|
module MMS2R
|
@@ -14,28 +20,27 @@ module MMS2R
|
|
14
20
|
assert(File::size(file) == size, "file #{file} is #{File::size(file)} bytes, not #{size} bytes")
|
15
21
|
end
|
16
22
|
|
17
|
-
def load_mail(file)
|
18
|
-
IO.readlines(mail_fixture(file))
|
19
|
-
end
|
20
|
-
|
21
23
|
def mail_fixture(file)
|
22
24
|
"#{File.dirname(__FILE__)}/fixtures/#{file}"
|
23
25
|
end
|
24
26
|
|
27
|
+
def mail(name)
|
28
|
+
Mail.read(mail_fixture(name))
|
29
|
+
end
|
30
|
+
|
25
31
|
def smart_phone_mock(model_text = 'iPhone', jpeg = true)
|
26
32
|
mail = mock('mail')
|
27
|
-
mail.expects(:header).at_least_once.returns({'return-path' => '<joe@null.example.com>'})
|
28
33
|
mail.expects(:from).at_least_once.returns(['joe@example.com'])
|
34
|
+
mail.expects(:return_path).at_least_once.returns('<joe@example.com>')
|
29
35
|
mail.expects(:message_id).returns('abcd0123')
|
30
36
|
mail.expects(:multipart?).returns(true)
|
37
|
+
|
31
38
|
part = mock('part')
|
32
39
|
part.expects(:part_type?).at_least_once.returns("image/#{jpeg ? 'jpeg' : 'tiff'}")
|
33
|
-
part.expects(:
|
34
|
-
part.expects(:
|
35
|
-
part.expects(
|
36
|
-
|
37
|
-
part.expects(:content_type).at_least_once.returns("image/#{jpeg ? 'jpeg' : 'tiff'}")
|
38
|
-
part.expects(:body).at_least_once.returns('abc')
|
40
|
+
part.expects(:body).at_least_once.returns(Mail::Body.new('abc'))
|
41
|
+
part.expects(:multipart?).at_least_once.returns(false)
|
42
|
+
part.expects(:filename).returns("foo.#{jpeg ? 'jpg' : 'tif'}")
|
43
|
+
|
39
44
|
mail.expects(:parts).returns([part])
|
40
45
|
exif = mock('exif')
|
41
46
|
exif.expects(:model).at_least_once.returns(model_text)
|
@@ -1,52 +1,56 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "lib", "mms2r")
|
2
1
|
require File.join(File.dirname(__FILE__), "test_helper")
|
3
|
-
require 'test/unit'
|
4
|
-
require 'rubygems'
|
5
|
-
require 'mocha'
|
6
|
-
gem 'tmail', '>= 1.2.1'
|
7
|
-
require 'tmail'
|
8
2
|
|
9
3
|
class TestMediamessagingO2CoUk < Test::Unit::TestCase
|
10
4
|
include MMS2R::TestHelper
|
11
5
|
|
12
6
|
def test_subject
|
13
|
-
mail =
|
7
|
+
mail = mail('mediamessaging_o2_co_uk-image-01.mail')
|
14
8
|
mms = MMS2R::Media.new(mail)
|
9
|
+
assert_equal "+2068675309", mms.number
|
10
|
+
assert_equal "mediamessaging.o2.co.uk", mms.carrier
|
15
11
|
assert_equal "Office pic", mms.subject
|
16
12
|
mms.purge
|
17
13
|
end
|
18
14
|
|
19
15
|
def test_image
|
20
|
-
mail =
|
16
|
+
mail = mail('mediamessaging_o2_co_uk-image-01.mail')
|
21
17
|
mms = MMS2R::Media.new(mail)
|
22
|
-
|
18
|
+
assert_equal "+2068675309", mms.number
|
19
|
+
assert_equal "mediamessaging.o2.co.uk", mms.carrier
|
20
|
+
|
23
21
|
assert_equal 2, mms.media.size
|
24
22
|
assert_not_nil mms.media['text/plain']
|
25
23
|
assert_equal 1, mms.media['text/plain'].size
|
26
24
|
assert_not_nil mms.media['image/jpeg']
|
27
25
|
assert_equal 1, mms.media['image/jpeg'].size
|
28
26
|
assert mms.media['image/jpeg'].detect{|f| File.size(f) == 337}
|
29
|
-
|
27
|
+
|
30
28
|
mms.purge
|
31
29
|
end
|
32
30
|
|
33
31
|
def test_default_media_should_return_user_generated_content
|
34
|
-
mail =
|
32
|
+
mail = mail('mediamessaging_o2_co_uk-image-01.mail')
|
35
33
|
mms = MMS2R::Media.new(mail)
|
34
|
+
assert_equal "+2068675309", mms.number
|
35
|
+
assert_equal "mediamessaging.o2.co.uk", mms.carrier
|
36
|
+
|
36
37
|
file = mms.default_media
|
37
38
|
assert_equal 337, file.size
|
38
|
-
|
39
|
+
|
39
40
|
mms.purge
|
40
|
-
end
|
41
|
+
end
|
41
42
|
|
42
43
|
def test_default_text_should_return_user_generated_content
|
43
|
-
mail =
|
44
|
+
mail = mail('mediamessaging_o2_co_uk-image-01.mail')
|
44
45
|
mms = MMS2R::Media.new(mail)
|
46
|
+
assert_equal "+2068675309", mms.number
|
47
|
+
assert_equal "mediamessaging.o2.co.uk", mms.carrier
|
48
|
+
|
45
49
|
file = mms.default_text
|
46
50
|
assert_equal 10, file.size
|
47
51
|
assert_equal "Office pic", file.read
|
48
|
-
|
52
|
+
|
49
53
|
mms.purge
|
50
|
-
end
|
51
|
-
|
54
|
+
end
|
55
|
+
|
52
56
|
end
|
@@ -1,17 +1,13 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "lib", "mms2r")
|
2
1
|
require File.join(File.dirname(__FILE__), "test_helper")
|
3
|
-
require 'test/unit'
|
4
|
-
require 'rubygems'
|
5
|
-
require 'mocha'
|
6
|
-
gem 'tmail', '>= 1.2.1'
|
7
|
-
require 'tmail'
|
8
2
|
|
9
3
|
class TestMessagingNextelCom < Test::Unit::TestCase
|
10
4
|
include MMS2R::TestHelper
|
11
5
|
|
12
6
|
def test_simple_text_is_nil
|
13
|
-
mail =
|
7
|
+
mail = mail('nextel-image-01.mail')
|
14
8
|
mms = MMS2R::Media.new(mail)
|
9
|
+
assert_equal "2068675309", mms.number
|
10
|
+
assert_equal "messaging.nextel.com", mms.carrier
|
15
11
|
|
16
12
|
assert_nil mms.default_text
|
17
13
|
|
@@ -19,8 +15,10 @@ class TestMessagingNextelCom < Test::Unit::TestCase
|
|
19
15
|
end
|
20
16
|
|
21
17
|
def test_simple_default_media
|
22
|
-
mail =
|
18
|
+
mail = mail('nextel-image-01.mail')
|
23
19
|
mms = MMS2R::Media.new(mail)
|
20
|
+
assert_equal "2068675309", mms.number
|
21
|
+
assert_equal "messaging.nextel.com", mms.carrier
|
24
22
|
|
25
23
|
file = mms.default_media
|
26
24
|
assert_file_size file, 337
|
@@ -32,8 +30,10 @@ class TestMessagingNextelCom < Test::Unit::TestCase
|
|
32
30
|
end
|
33
31
|
|
34
32
|
def test_simple_image1
|
35
|
-
mail =
|
33
|
+
mail = mail('nextel-image-01.mail')
|
36
34
|
mms = MMS2R::Media.new(mail)
|
35
|
+
assert_equal "2068675309", mms.number
|
36
|
+
assert_equal "messaging.nextel.com", mms.carrier
|
37
37
|
|
38
38
|
assert_equal 1, mms.media.size
|
39
39
|
assert_nil mms.media['text/plain']
|
@@ -47,8 +47,10 @@ class TestMessagingNextelCom < Test::Unit::TestCase
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def test_simple_image2
|
50
|
-
mail =
|
50
|
+
mail = mail('nextel-image-02.mail')
|
51
51
|
mms = MMS2R::Media.new(mail)
|
52
|
+
assert_equal "2068675309", mms.number
|
53
|
+
assert_equal "messaging.nextel.com", mms.carrier
|
52
54
|
|
53
55
|
assert_equal 1, mms.media.size
|
54
56
|
assert_nil mms.media['text/plain']
|
@@ -62,8 +64,10 @@ class TestMessagingNextelCom < Test::Unit::TestCase
|
|
62
64
|
end
|
63
65
|
|
64
66
|
def test_simple_image3
|
65
|
-
mail =
|
67
|
+
mail = mail('nextel-image-03.mail')
|
66
68
|
mms = MMS2R::Media.new(mail)
|
69
|
+
assert_equal "2068675309", mms.number
|
70
|
+
assert_equal "messaging.nextel.com", mms.carrier
|
67
71
|
|
68
72
|
assert_equal 1, mms.media.size
|
69
73
|
assert_nil mms.media['text/plain']
|
@@ -77,8 +81,10 @@ class TestMessagingNextelCom < Test::Unit::TestCase
|
|
77
81
|
end
|
78
82
|
|
79
83
|
def test_simple_image4
|
80
|
-
mail =
|
84
|
+
mail = mail('nextel-image-04.mail')
|
81
85
|
mms = MMS2R::Media.new(mail)
|
86
|
+
assert_equal "2068675309", mms.number
|
87
|
+
assert_equal "messaging.nextel.com", mms.carrier
|
82
88
|
|
83
89
|
assert_equal 1, mms.media.size
|
84
90
|
assert_nil mms.media['text/plain']
|
@@ -1,17 +1,13 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "lib", "mms2r")
|
2
1
|
require File.join(File.dirname(__FILE__), "test_helper")
|
3
|
-
require 'test/unit'
|
4
|
-
require 'rubygems'
|
5
|
-
require 'mocha'
|
6
|
-
gem 'tmail', '>= 1.2.1'
|
7
|
-
require 'tmail'
|
8
2
|
|
9
3
|
class TestMessagingSprintpcsCom < Test::Unit::TestCase
|
10
4
|
include MMS2R::TestHelper
|
11
5
|
|
12
6
|
def test_simple_text
|
13
|
-
mail =
|
7
|
+
mail = mail('sprint-pcs-text-01.mail')
|
14
8
|
mms = MMS2R::Media.new(mail)
|
9
|
+
assert_equal "2068675309", mms.number
|
10
|
+
assert_equal "messaging.sprintpcs.com", mms.carrier
|
15
11
|
|
16
12
|
assert_equal 1, mms.media.size
|
17
13
|
assert_not_nil mms.media['text/plain']
|
@@ -22,5 +18,5 @@ class TestMessagingSprintpcsCom < Test::Unit::TestCase
|
|
22
18
|
assert_match(/hello world/, text)
|
23
19
|
mms.purge
|
24
20
|
end
|
25
|
-
|
21
|
+
|
26
22
|
end
|
data/test/test_mms2r_media.rb
CHANGED
@@ -1,11 +1,4 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "lib", "mms2r")
|
2
1
|
require File.join(File.dirname(__FILE__), "test_helper")
|
3
|
-
require 'tempfile'
|
4
|
-
require 'test/unit'
|
5
|
-
require 'rubygems'
|
6
|
-
require 'mocha'
|
7
|
-
gem 'tmail', '>= 1.2.1'
|
8
|
-
require 'tmail'
|
9
2
|
|
10
3
|
class TestMms2rMedia < Test::Unit::TestCase
|
11
4
|
include MMS2R::TestHelper
|
@@ -34,30 +27,29 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
34
27
|
MMS2R::Media.conf_dir = @oldconfdir
|
35
28
|
end
|
36
29
|
|
37
|
-
def stub_mail(
|
38
|
-
attrs = {
|
39
|
-
:
|
40
|
-
:
|
41
|
-
:
|
42
|
-
:parts => [],
|
43
|
-
:main_type => 'text',
|
44
|
-
:content_type => 'text/plain',
|
45
|
-
:part_type? => 'text/plain',
|
46
|
-
:sub_header => 'message.txt',
|
47
|
-
|
30
|
+
def stub_mail(vals = {})
|
31
|
+
attrs = {
|
32
|
+
:from => 'joe@example.com',
|
33
|
+
:to => 'jane@example.com',
|
34
|
+
:subject => 'This is a test email',
|
48
35
|
:body => 'a',
|
49
|
-
|
50
|
-
|
51
|
-
|
36
|
+
}.merge(vals)
|
37
|
+
|
38
|
+
Mail.new do
|
39
|
+
from attrs[:from]
|
40
|
+
to attrs[:to]
|
41
|
+
subject attrs[:subject]
|
42
|
+
body attrs[:body]
|
43
|
+
end
|
52
44
|
end
|
53
45
|
|
54
46
|
def test_class_parse
|
55
|
-
mms =
|
47
|
+
mms = mail('generic.mail')
|
56
48
|
assert_equal ['noreply@rubyforge.org'], mms.from
|
57
49
|
end
|
58
50
|
|
59
51
|
def temp_text_file(text)
|
60
|
-
tf = Tempfile.new("test" +
|
52
|
+
tf = Tempfile.new("test" + rand.to_s)
|
61
53
|
tf.puts(text)
|
62
54
|
tf.close
|
63
55
|
tf.path
|
@@ -108,7 +100,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
108
100
|
end
|
109
101
|
|
110
102
|
def test_instance_initialize_config
|
111
|
-
mms = MMS2R::Media.new
|
103
|
+
mms = MMS2R::Media.new stub_mail
|
112
104
|
config = mms.initialize_config(nil)
|
113
105
|
|
114
106
|
# test defaults shipped in mms2r_media.yml
|
@@ -131,8 +123,8 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
131
123
|
|
132
124
|
def test_create_with_default_processor
|
133
125
|
mail = mock()
|
134
|
-
mail.expects(:header).at_least_once.returns({})
|
135
126
|
mail.expects(:from).at_least_once.returns(['joe@unknown.example.com'])
|
127
|
+
mail.expects(:return_path).at_least_once.returns('joe@unknown.example.com')
|
136
128
|
mms = MMS2R::Media.create(mail)
|
137
129
|
assert_equal [MMS2R::Media, 'unknown.example.com'] , mms
|
138
130
|
end
|
@@ -140,8 +132,8 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
140
132
|
def test_create_with_special_processor
|
141
133
|
MMS2R.register('null.example.com', MMS2R::Media::NullCarrier)
|
142
134
|
mail = mock()
|
143
|
-
mail.expects(:header).at_least_once.returns({})
|
144
135
|
mail.expects(:from).at_least_once.returns(['joe@null.example.com'])
|
136
|
+
mail.expects(:return_path).at_least_once.returns('joe@null.example.com')
|
145
137
|
mms = MMS2R::Media.create(mail)
|
146
138
|
assert_equal [MMS2R::Media::NullCarrier, 'null.example.com'], mms
|
147
139
|
end
|
@@ -149,22 +141,22 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
149
141
|
def test_create_with_special_processor_and_return_path
|
150
142
|
MMS2R.register('null.example.com', MMS2R::Media::NullCarrier)
|
151
143
|
mail = mock()
|
152
|
-
mail.expects(:header).at_least_once.returns({'return-path' => '<joe@null.example.com>'})
|
153
144
|
mail.expects(:from).at_least_once.returns([])
|
145
|
+
mail.expects(:return_path).at_least_once.returns('joe@null.example.com')
|
154
146
|
mms = MMS2R::Media.create(mail)
|
155
147
|
assert_equal [MMS2R::Media::NullCarrier, 'null.example.com'], mms
|
156
148
|
end
|
157
149
|
|
158
150
|
def test_create_should_fail_gracefully_with_broken_from
|
159
151
|
mail = mock()
|
160
|
-
mail.expects(:header).at_least_once.returns({})
|
161
152
|
mail.expects(:from).at_least_once.returns(nil)
|
153
|
+
mail.expects(:return_path).at_least_once.returns('joe@unknown.example.com')
|
162
154
|
assert_nothing_raised { MMS2R::Media.create(mail) }
|
163
155
|
end
|
164
156
|
|
165
157
|
def test_aliased_new_returns_custom_processor_instance
|
166
158
|
MMS2R.register('null.example.com', MMS2R::Media::NullCarrier)
|
167
|
-
mail = stub_mail
|
159
|
+
mail = stub_mail
|
168
160
|
mail.expects(:from).at_least_once.returns(['joe@null.example.com'])
|
169
161
|
|
170
162
|
mms = MMS2R::Media.new(mail)
|
@@ -174,46 +166,45 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
174
166
|
end
|
175
167
|
|
176
168
|
def test_aliased_new_returns_default_processor_instance
|
177
|
-
mms = MMS2R::Media.new
|
169
|
+
mms = MMS2R::Media.new stub_mail
|
178
170
|
assert_not_nil mms
|
179
171
|
assert_equal true, mms.respond_to?(:process)
|
180
172
|
assert_equal MMS2R::Media, mms.class
|
181
173
|
end
|
182
174
|
|
183
175
|
def test_lazy_process_option
|
184
|
-
mms = MMS2R::Media.new
|
176
|
+
mms = MMS2R::Media.new stub_mail, :process => :lazy
|
185
177
|
mms.expects(:process).never
|
186
178
|
end
|
187
179
|
|
188
180
|
def test_logger_option
|
189
181
|
logger = mock()
|
190
182
|
logger.expects(:info).at_least_once
|
191
|
-
mms = MMS2R::Media.new
|
183
|
+
mms = MMS2R::Media.new stub_mail, :logger => logger
|
192
184
|
end
|
193
185
|
|
194
186
|
def test_default_processor_initialize_tries_to_open_config_for_carrier
|
195
187
|
f = File.join(MMS2R::Media.conf_dir, 'example.com.yml')
|
196
188
|
YAML.expects(:load_file).once.with(f)
|
197
|
-
mms = MMS2R::Media.new
|
189
|
+
mms = MMS2R::Media.new stub_mail
|
198
190
|
end
|
199
191
|
|
200
192
|
def test_mms_phone_number
|
201
|
-
mail = stub_mail
|
193
|
+
mail = stub_mail
|
202
194
|
mail.stubs(:from).returns(['2068675309@example.com'])
|
203
195
|
mms = MMS2R::Media.new(mail)
|
204
196
|
assert_equal '2068675309', mms.number
|
205
197
|
end
|
206
|
-
|
198
|
+
|
207
199
|
def test_mms_phone_number_from_config
|
208
|
-
mail = stub_mail()
|
209
|
-
mail.stubs(:header).returns({'from' => TMail::AddressHeader.new('from', '"+2068675309" <BCVOZH@mms.vodacom4me.co.za>')})
|
200
|
+
mail = stub_mail(:from => '"+2068675309" <TESTER@mms.vodacom4me.co.za>')
|
210
201
|
mms = MMS2R::Media.new(mail)
|
211
202
|
mms.expects(:config).once.returns({'number' => ['from', '/^([^\s]+)\s.*/', '\1']})
|
212
203
|
assert_equal '+2068675309', mms.number
|
213
204
|
end
|
214
205
|
|
215
206
|
def test_mms_phone_number_with_errors
|
216
|
-
mail = stub_mail
|
207
|
+
mail = stub_mail
|
217
208
|
mail.stubs(:from).returns(nil)
|
218
209
|
mms = MMS2R::Media.new(mail)
|
219
210
|
assert_nothing_raised do
|
@@ -222,7 +213,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
222
213
|
end
|
223
214
|
|
224
215
|
def test_transform_text
|
225
|
-
mail = stub_mail
|
216
|
+
mail = stub_mail
|
226
217
|
mail.stubs(:from).returns(nil)
|
227
218
|
mms = MMS2R::Media.new(mail)
|
228
219
|
|
@@ -243,7 +234,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
243
234
|
# has a bad regexp
|
244
235
|
mms.expects(:config).once.returns({'transform' => {type => [['(hello)', 'world']]}})
|
245
236
|
assert_equal result, mms.transform_text(type, text)
|
246
|
-
|
237
|
+
|
247
238
|
# matches in config
|
248
239
|
mms.expects(:config).once.returns({'transform' => {type => [['/(hello)/', 'world']]}})
|
249
240
|
assert_equal [type, 'world'], mms.transform_text(type, text)
|
@@ -263,7 +254,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
263
254
|
end
|
264
255
|
|
265
256
|
def test_transform_text_to_utf8
|
266
|
-
mail =
|
257
|
+
mail = mail('iconv-fr-text-01.mail')
|
267
258
|
mms = MMS2R::Media.new(mail)
|
268
259
|
|
269
260
|
assert_equal 2, mms.media.size
|
@@ -274,15 +265,16 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
274
265
|
assert_equal true, File::exist?(file)
|
275
266
|
text = IO.readlines("#{file}").join
|
276
267
|
#assert_match(/D'ici un mois Géorgie/, text)
|
277
|
-
assert_match(/D'ici un mois G\303\
|
278
|
-
|
279
|
-
|
268
|
+
assert_match(/D'ici un mois G\303\251orgie/, text)
|
269
|
+
assert_match(/D'ici un mois Géorgie/, text)
|
270
|
+
assert_equal("sample email message Fwd: sub D'ici un mois G\303\251orgie", mms.subject)
|
271
|
+
assert_equal("sample email message Fwd: sub D'ici un mois Géorgie", mms.subject)
|
280
272
|
mms.purge
|
281
273
|
end
|
282
274
|
|
283
275
|
def test_subject
|
284
276
|
s = 'hello world'
|
285
|
-
mail = stub_mail
|
277
|
+
mail = stub_mail
|
286
278
|
mail.stubs(:subject).returns(s)
|
287
279
|
mms = MMS2R::Media.new(mail)
|
288
280
|
assert_equal s, mms.subject
|
@@ -293,7 +285,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
293
285
|
end
|
294
286
|
|
295
287
|
def test_subject_with_bad_mail_subject
|
296
|
-
mail = stub_mail
|
288
|
+
mail = stub_mail
|
297
289
|
mail.stubs(:subject).returns(nil)
|
298
290
|
mms = MMS2R::Media.new(mail)
|
299
291
|
assert_equal '', mms.subject
|
@@ -301,7 +293,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
301
293
|
|
302
294
|
def test_subject_with_subject_ignored
|
303
295
|
s = 'hello world'
|
304
|
-
mail = stub_mail
|
296
|
+
mail = stub_mail
|
305
297
|
mail.stubs(:subject).returns(s)
|
306
298
|
mms = MMS2R::Media.new(mail)
|
307
299
|
mms.stubs(:config).returns({'ignore' => {'text/plain' => [s]}})
|
@@ -310,7 +302,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
310
302
|
|
311
303
|
def test_subject_with_subject_transformed
|
312
304
|
s = 'Default Subject: hello world'
|
313
|
-
mail = stub_mail
|
305
|
+
mail = stub_mail
|
314
306
|
mail.stubs(:subject).returns(s)
|
315
307
|
mms = MMS2R::Media.new(mail)
|
316
308
|
mms.stubs(:config).returns(
|
@@ -320,29 +312,29 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
320
312
|
end
|
321
313
|
|
322
314
|
def test_attachment_should_return_nil_if_files_for_type_are_not_found
|
323
|
-
mms = MMS2R::Media.new
|
315
|
+
mms = MMS2R::Media.new stub_mail
|
324
316
|
mms.stubs(:media).returns({})
|
325
317
|
assert_nil mms.send(:attachment, ['text'])
|
326
318
|
end
|
327
319
|
|
328
320
|
def test_attachment_should_return_nil_if_empty_files_are_found
|
329
|
-
mms = MMS2R::Media.new
|
321
|
+
mms = MMS2R::Media.new stub_mail
|
330
322
|
mms.stubs(:media).returns({'text/plain' => [Tempfile.new('test')]})
|
331
323
|
assert_nil mms.send(:attachment, ['text'])
|
332
324
|
end
|
333
325
|
|
334
326
|
def test_type_from_filename(filename)
|
335
|
-
mms = MMS2R::Media.new
|
327
|
+
mms = MMS2R::Media.new stub_mail
|
336
328
|
assert_equal 'image/jpeg', mms.send(:type_from_filename, "example.jpg")
|
337
329
|
end
|
338
330
|
|
339
331
|
def test_type_from_filename_should_be_nil(filename)
|
340
|
-
mms = MMS2R::Media.new
|
332
|
+
mms = MMS2R::Media.new stub_mail
|
341
333
|
assert_nil mms.send(:type_from_filename, "example.example")
|
342
334
|
end
|
343
335
|
|
344
336
|
def test_attachment_should_return_duck_typed_file
|
345
|
-
mms = MMS2R::Media.new
|
337
|
+
mms = MMS2R::Media.new stub_mail
|
346
338
|
temp_big = temp_text_file("hello world")
|
347
339
|
size = File.size(temp_text_file("hello world"))
|
348
340
|
temp_small = temp_text_file("hello")
|
@@ -358,20 +350,20 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
358
350
|
end
|
359
351
|
|
360
352
|
def test_empty_body
|
361
|
-
mms = MMS2R::Media.new
|
353
|
+
mms = MMS2R::Media.new stub_mail
|
362
354
|
mms.stubs(:default_text).returns(nil)
|
363
355
|
assert_equal "", mms.body
|
364
356
|
end
|
365
357
|
|
366
358
|
def test_body
|
367
|
-
mms = MMS2R::Media.new
|
359
|
+
mms = MMS2R::Media.new stub_mail
|
368
360
|
temp_big = temp_text_file("hello world")
|
369
361
|
mms.stubs(:default_text).returns(File.new(temp_big))
|
370
362
|
assert_equal "hello world", mms.body
|
371
363
|
end
|
372
364
|
|
373
365
|
def test_default_text
|
374
|
-
mms = MMS2R::Media.new
|
366
|
+
mms = MMS2R::Media.new stub_mail
|
375
367
|
temp_big = temp_text_file("hello world")
|
376
368
|
temp_small = temp_text_file("hello")
|
377
369
|
mms.stubs(:media).returns({'text/plain' => [temp_small, temp_big]})
|
@@ -384,7 +376,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
384
376
|
end
|
385
377
|
|
386
378
|
def test_default_media
|
387
|
-
mms = MMS2R::Media.new
|
379
|
+
mms = MMS2R::Media.new stub_mail
|
388
380
|
#it doesn't matter that these are text files, we just need say they are images
|
389
381
|
temp_big = temp_text_file("hello world")
|
390
382
|
temp_small = temp_text_file("hello")
|
@@ -398,7 +390,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
398
390
|
end
|
399
391
|
|
400
392
|
def test_default_media_treats_image_and_video_equally
|
401
|
-
mms = MMS2R::Media.new
|
393
|
+
mms = MMS2R::Media.new stub_mail
|
402
394
|
#it doesn't matter that these are text files, we just need say they are images
|
403
395
|
temp_big_image = temp_text_file("hello world")
|
404
396
|
temp_small_image = temp_text_file("hello")
|
@@ -415,22 +407,22 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
415
407
|
assert_equal temp_big_video, mms.default_media.local_path
|
416
408
|
end
|
417
409
|
|
418
|
-
def test_default_media_treats_gif_and_jpg_equally
|
419
|
-
|
420
|
-
|
421
|
-
|
410
|
+
#def test_default_media_treats_gif_and_jpg_equally
|
411
|
+
# #it doesn't matter that these are text files, we just need say they are images
|
412
|
+
# temp_big = temp_text_file("hello world")
|
413
|
+
# temp_small = temp_text_file("hello")
|
422
414
|
|
423
|
-
|
424
|
-
|
425
|
-
|
415
|
+
# mms = MMS2R::Media.new stub_mail
|
416
|
+
# mms.stubs(:media).returns({'image/jpeg' => [temp_big], 'image/gif' => [temp_small]})
|
417
|
+
# assert_equal temp_big, mms.default_media.local_path
|
426
418
|
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
end
|
419
|
+
# mms = MMS2R::Media.new stub_mail
|
420
|
+
# mms.stubs(:media).returns({'image/gif' => [temp_big], 'image/jpg' => [temp_small]})
|
421
|
+
# assert_equal temp_big, mms.default_media.local_path
|
422
|
+
#end
|
431
423
|
|
432
424
|
def test_purge
|
433
|
-
mms = MMS2R::Media.new
|
425
|
+
mms = MMS2R::Media.new stub_mail
|
434
426
|
mms.purge
|
435
427
|
assert_equal false, File.exist?(mms.media_dir)
|
436
428
|
end
|
@@ -438,43 +430,43 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
438
430
|
def test_ignore_media_by_filename_equality
|
439
431
|
name = 'foo.txt'
|
440
432
|
type = 'text/plain'
|
441
|
-
mms = MMS2R::Media.new
|
433
|
+
mms = MMS2R::Media.new stub_mail
|
442
434
|
mms.stubs(:config).returns({'ignore' => {type => [name]}})
|
443
435
|
|
444
436
|
# type is not in the ingore
|
445
|
-
part = stub(:
|
437
|
+
part = stub(:body => Mail::Body.new('a'))
|
446
438
|
assert_equal false, mms.ignore_media?('text/test', part)
|
447
439
|
# type and filename are in the ingore
|
448
|
-
part = stub(:
|
440
|
+
part = stub(:filename => name, :body => Mail::Body.new('a'))
|
449
441
|
assert_equal true, mms.ignore_media?(type, part)
|
450
442
|
# type but not file name are in the ignore
|
451
|
-
part = stub(:
|
443
|
+
part = stub(:filename => 'bar.txt', :body => Mail::Body.new('a'))
|
452
444
|
assert_equal false, mms.ignore_media?(type, part)
|
453
445
|
end
|
454
446
|
|
455
447
|
def test_filename
|
456
|
-
name = '
|
457
|
-
mms = MMS2R::Media.new
|
458
|
-
part = stub(:
|
459
|
-
assert_equal '
|
448
|
+
name = 'foo.txt'
|
449
|
+
mms = MMS2R::Media.new stub_mail
|
450
|
+
part = stub(:filename => name)
|
451
|
+
assert_equal 'foo.txt', mms.filename?(part)
|
460
452
|
end
|
461
453
|
|
462
454
|
def test_long_filename
|
463
|
-
name = '
|
464
|
-
mms = MMS2R::Media.new
|
465
|
-
part = stub(:
|
466
|
-
assert_equal '
|
455
|
+
name = 'x' * 300 + '.txt'
|
456
|
+
mms = MMS2R::Media.new stub_mail
|
457
|
+
part = stub(:filename => name)
|
458
|
+
assert_equal 'x' * 251 + '.txt', mms.filename?(part)
|
467
459
|
end
|
468
460
|
|
469
461
|
def test_filename_when_file_extension_missing_part
|
470
462
|
name = 'foo'
|
471
|
-
mms = MMS2R::Media.new
|
472
|
-
part = stub(:
|
463
|
+
mms = MMS2R::Media.new stub_mail
|
464
|
+
part = stub(:filename => name, :content_type => 'text/plain', :part_type? => 'text/plain')
|
473
465
|
assert_equal 'foo.txt', mms.filename?(part)
|
474
466
|
|
475
467
|
name = 'foo.janky'
|
476
|
-
mms = MMS2R::Media.new
|
477
|
-
part = stub(:
|
468
|
+
mms = MMS2R::Media.new stub_mail
|
469
|
+
part = stub(:filename => name, :content_type => 'text/plain', :part_type? => 'text/plain')
|
478
470
|
assert_equal 'foo.janky.txt', mms.filename?(part)
|
479
471
|
end
|
480
472
|
|
@@ -482,17 +474,17 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
482
474
|
name = 'foo.txt'
|
483
475
|
regexp = '/foo\.txt/i'
|
484
476
|
type = 'text/plain'
|
485
|
-
mms = MMS2R::Media.new
|
477
|
+
mms = MMS2R::Media.new stub_mail
|
486
478
|
mms.stubs(:config).returns({'ignore' => {type => [regexp, 'nil.txt']}})
|
487
479
|
|
488
480
|
# type is not in the ingore
|
489
|
-
part = stub(:
|
481
|
+
part = stub(:filename => name, :body => Mail::Body.new('a'))
|
490
482
|
assert_equal false, mms.ignore_media?('text/test', part)
|
491
483
|
# type and regexp for the filename are in the ingore
|
492
|
-
part = stub(:
|
484
|
+
part = stub(:filename => name)
|
493
485
|
assert_equal true, mms.ignore_media?(type, part)
|
494
486
|
# type but not regexp for filename are in the ignore
|
495
|
-
part = stub(:
|
487
|
+
part = stub(:filename => 'bar.txt', :body => Mail::Body.new('a'))
|
496
488
|
assert_equal false, mms.ignore_media?(type, part)
|
497
489
|
end
|
498
490
|
|
@@ -501,37 +493,37 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
501
493
|
content = "aaaaaaahello worldbbbbbbbbb"
|
502
494
|
regexp = '/.*Hello World.*/i'
|
503
495
|
type = 'text/plain'
|
504
|
-
mms = MMS2R::Media.new
|
496
|
+
mms = MMS2R::Media.new stub_mail
|
505
497
|
mms.stubs(:config).returns({'ignore' => {type => ['nil.txt', regexp]}})
|
506
498
|
|
507
|
-
part = stub(:
|
499
|
+
part = stub(:filename => name, :body => Mail::Body.new(content))
|
508
500
|
|
509
501
|
# type is not in the ingore
|
510
502
|
assert_equal false, mms.ignore_media?('text/test', part)
|
511
503
|
# type and regexp for the content are in the ingore
|
512
504
|
assert_equal true, mms.ignore_media?(type, part)
|
513
505
|
# type but not regexp for content are in the ignore
|
514
|
-
part = stub(:
|
506
|
+
part = stub(:filename => name, :body => Mail::Body.new('no teapots'))
|
515
507
|
assert_equal false, mms.ignore_media?(type, part)
|
516
508
|
end
|
517
509
|
|
518
510
|
def test_ignore_media_when_file_content_is_empty
|
519
|
-
mms = MMS2R::Media.new
|
511
|
+
mms = MMS2R::Media.new stub_mail
|
520
512
|
|
521
513
|
# there is no conf but the part's body is empty
|
522
|
-
part = stub(:
|
514
|
+
part = stub(:filename => 'foo.txt', :body => Mail::Body.new)
|
523
515
|
assert_equal true, mms.ignore_media?('text/test', part)
|
524
516
|
|
525
517
|
# there is no conf but the part's body is white space
|
526
|
-
part = stub(:
|
518
|
+
part = stub(:filename => 'foo.txt', :body => Mail::Body.new("\t\n\t\n "))
|
527
519
|
assert_equal true, mms.ignore_media?('text/test', part)
|
528
520
|
end
|
529
521
|
|
530
522
|
def test_add_file
|
531
523
|
MMS2R.register('null.example.com', MMS2R::Media::NullCarrier)
|
532
|
-
mail = stub_mail
|
524
|
+
mail = stub_mail
|
533
525
|
mail.stubs(:from).returns(['joe@null.example.com'])
|
534
|
-
|
526
|
+
|
535
527
|
mms = MMS2R::Media.new(mail)
|
536
528
|
mms.stubs(:media).returns({})
|
537
529
|
|
@@ -544,16 +536,16 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
544
536
|
|
545
537
|
def test_temp_file
|
546
538
|
name = 'foo.txt'
|
547
|
-
mms = MMS2R::Media.new
|
548
|
-
part = stub(:
|
539
|
+
mms = MMS2R::Media.new stub_mail
|
540
|
+
part = stub(:filename => name)
|
549
541
|
assert_equal name, File.basename(mms.temp_file(part))
|
550
542
|
end
|
551
543
|
|
552
544
|
def test_process_media_for_text
|
553
545
|
name = 'foo.txt'
|
554
|
-
mms = MMS2R::Media.new
|
546
|
+
mms = MMS2R::Media.new stub_mail
|
555
547
|
mms.stubs(:transform_text_part).returns(['text/plain', nil])
|
556
|
-
part = stub(:
|
548
|
+
part = stub(:filename => name, :content_type => 'text/plain', :part_type? => 'text/plain', :main_type => 'text')
|
557
549
|
|
558
550
|
assert_equal ['text/plain', nil], mms.process_media(part)
|
559
551
|
|
@@ -566,9 +558,9 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
566
558
|
|
567
559
|
def test_process_media_with_empty_text
|
568
560
|
name = 'foo.txt'
|
569
|
-
mms = MMS2R::Media.new
|
561
|
+
mms = MMS2R::Media.new stub_mail
|
570
562
|
mms.stubs(:transform_text_part).returns(['text/plain', nil])
|
571
|
-
part = stub(:
|
563
|
+
part = stub(:filename => name, :content_type => 'text/plain', :part_type? => 'text/plain', :main_type => 'text')
|
572
564
|
|
573
565
|
assert_equal ['text/plain', nil], mms.process_media(part)
|
574
566
|
|
@@ -579,9 +571,9 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
579
571
|
|
580
572
|
def test_process_media_for_application_smil
|
581
573
|
name = 'foo.txt'
|
582
|
-
mms = MMS2R::Media.new
|
574
|
+
mms = MMS2R::Media.new stub_mail
|
583
575
|
mms.stubs(:transform_text_part).returns(['application/smil', nil])
|
584
|
-
part = stub(:
|
576
|
+
part = stub(:filename => name, :content_type => 'application/smil', :part_type? => 'application/smil', :main_type => 'application')
|
585
577
|
|
586
578
|
assert_equal ['application/smil', nil], mms.process_media(part)
|
587
579
|
|
@@ -594,8 +586,8 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
594
586
|
|
595
587
|
def test_process_media_for_application_octet_stream_when_image
|
596
588
|
name = 'fake.jpg'
|
597
|
-
mms = MMS2R::Media.new
|
598
|
-
part = stub(:
|
589
|
+
mms = MMS2R::Media.new stub_mail
|
590
|
+
part = stub(:filename => name, :content_type => 'application/octet-stream', :part_type? => 'application/octet-stream', :body => Mail::Body.new("data"), :main_type => 'application')
|
599
591
|
result = mms.process_media(part)
|
600
592
|
assert_equal 'image/jpeg', result.first
|
601
593
|
assert_match(/fake\.jpg$/, result.last)
|
@@ -604,14 +596,12 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
604
596
|
|
605
597
|
def test_process_media_for_all_other_media
|
606
598
|
name = 'foo.txt'
|
607
|
-
mms = MMS2R::Media.new
|
608
|
-
part = stub(:
|
609
|
-
part.expects(:main_type).with('text').returns('faux')
|
599
|
+
mms = MMS2R::Media.new stub_mail
|
600
|
+
part = stub(:filename => name, :main_type => 'faux', :part_type? => 'faux/text', :body => Mail::Body.new(nil))
|
610
601
|
|
611
602
|
assert_equal ['faux/text', nil], mms.process_media(part)
|
612
603
|
|
613
|
-
part = stub(:
|
614
|
-
part.expects(:main_type).with('text').returns('faux')
|
604
|
+
part = stub(:filename => name, :main_type => 'faux', :part_type? => 'faux/text', :body => Mail::Body.new('hello world'))
|
615
605
|
result = mms.process_media(part)
|
616
606
|
assert_equal 'faux/text', result.first
|
617
607
|
assert_equal 'hello world', IO.read(result.last)
|
@@ -619,20 +609,19 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
619
609
|
end
|
620
610
|
|
621
611
|
def test_process
|
622
|
-
mms = MMS2R::Media.new
|
612
|
+
mms = MMS2R::Media.new stub_mail
|
623
613
|
assert_equal 1, mms.media.size
|
624
614
|
assert_not_nil mms.media['text/plain']
|
625
615
|
assert_equal 1, mms.media['text/plain'].size
|
626
|
-
assert_equal 'message.txt', File.basename(mms.media['text/plain'].first)
|
627
616
|
assert_equal true, File.exist?(mms.media['text/plain'].first)
|
628
617
|
assert_equal 1, File.size(mms.media['text/plain'].first)
|
629
618
|
mms.purge
|
630
619
|
end
|
631
620
|
|
632
621
|
def test_process_with_multipart_double_parts
|
633
|
-
mail =
|
622
|
+
mail = mail('apple-double-image-01.mail')
|
634
623
|
mms = MMS2R::Media.new(mail)
|
635
|
-
|
624
|
+
|
636
625
|
assert_equal 2, mms.media.size
|
637
626
|
|
638
627
|
assert_not_nil mms.media['application/applefile']
|
@@ -648,12 +637,19 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
648
637
|
end
|
649
638
|
|
650
639
|
def test_process_with_multipart_alternative_parts
|
651
|
-
mail = stub_mail
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
640
|
+
mail = stub_mail
|
641
|
+
|
642
|
+
plain = stub('plain', :filename => 'message.txt', :content_type => 'text/plain', :part_type? => 'text/plain', :body => Mail::Body.new('a'), :main_type => 'text')
|
643
|
+
plain.stubs(:multipart?).at_least_once.returns(false)
|
644
|
+
|
645
|
+
html = stub('html', :filename => 'message.html', :content_type => 'text/html', :part_type? => 'text/html', :body => Mail::Body.new('a'), :main_type => 'text')
|
646
|
+
html.stubs(:multipart?).at_least_once.returns(false)
|
647
|
+
|
648
|
+
multi = stub('multi', :content_type => 'multipart/alternative', :part_type? => 'multipart/alternative', :parts => [plain, html])
|
649
|
+
multi.stubs(:multipart?).at_least_once.returns(true)
|
650
|
+
|
651
|
+
mail.stubs(:multipart?).at_least_once.returns(true)
|
652
|
+
mail.stubs(:parts).at_least_once.returns([multi])
|
657
653
|
|
658
654
|
# the multipart/alternative should get flattend to text and html
|
659
655
|
mms = MMS2R::Media.new(mail)
|
@@ -673,12 +669,20 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
673
669
|
end
|
674
670
|
|
675
671
|
def test_process_when_media_is_ignored
|
676
|
-
mail = stub_mail
|
677
|
-
plain = stub(:
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
672
|
+
mail = stub_mail
|
673
|
+
plain = stub('plain', :filename => 'message.txt', :content_type => 'text/plain', :part_type? => 'text/plain', :body => Mail::Body.new(''), :main_type => 'text')
|
674
|
+
plain.stubs(:multipart?).at_least_once.returns(false)
|
675
|
+
|
676
|
+
html = stub('html', :filename => 'message.html', :content_type => 'text/html', :part_type? => 'text/html', :body => Mail::Body.new(''), :main_type => 'text')
|
677
|
+
html.stubs(:multipart?).at_least_once.returns(false)
|
678
|
+
|
679
|
+
|
680
|
+
multi = stub('multi', :content_type => 'multipart/alternative', :part_type? => 'multipart/alternative', :parts => [plain, html])
|
681
|
+
multi.stubs(:multipart?).at_least_once.returns(true)
|
682
|
+
|
683
|
+
mail.stubs(:multipart?).at_least_once.returns(true)
|
684
|
+
mail.stubs(:parts).at_least_once.returns([multi])
|
685
|
+
|
682
686
|
mms = MMS2R::Media.new(mail, :process => :lazy)
|
683
687
|
mms.stubs(:config).returns({'ignore' => {'text/plain' => ['message.txt'],
|
684
688
|
'text/html' => ['message.html']}})
|
@@ -690,12 +694,19 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
690
694
|
end
|
691
695
|
|
692
696
|
def test_process_when_yielding_to_a_block
|
693
|
-
mail = stub_mail
|
697
|
+
mail = stub_mail
|
694
698
|
|
695
|
-
plain = stub(:
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
+
plain = stub('plain', :filename => 'message.txt', :content_type => 'text/plain', :part_type? => 'text/plain', :body => Mail::Body.new('a'), :main_type => 'text')
|
700
|
+
plain.stubs(:multipart?).at_least_once.returns(false)
|
701
|
+
|
702
|
+
html = stub('html', :filename => 'message.html', :content_type => 'text/html', :part_type? => 'text/html', :body => Mail::Body.new('b'), :main_type => 'text')
|
703
|
+
html.stubs(:multipart?).at_least_once.returns(false)
|
704
|
+
|
705
|
+
multi = stub('multi', :content_type => 'multipart/alternative', :part_type? => 'multipart/alternative', :parts => [plain, html])
|
706
|
+
multi.stubs(:multipart?).at_least_once.returns(true)
|
707
|
+
|
708
|
+
mail.stubs(:multipart?).at_least_once.returns(true)
|
709
|
+
mail.stubs(:parts).at_least_once.returns([multi])
|
699
710
|
|
700
711
|
# the multipart/alternative should get flattend to text and html
|
701
712
|
mms = MMS2R::Media.new(mail)
|
@@ -712,16 +723,16 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
712
723
|
|
713
724
|
def test_domain_from_return_path
|
714
725
|
mail = mock()
|
715
|
-
mail.expects(:header).at_least_once.returns({'return-path' => '<joe@null.example.com>'})
|
716
726
|
mail.expects(:from).at_least_once.returns([])
|
727
|
+
mail.expects(:return_path).at_least_once.returns('joe@null.example.com')
|
717
728
|
domain = MMS2R::Media.domain(mail)
|
718
729
|
assert_equal 'null.example.com', domain
|
719
730
|
end
|
720
731
|
|
721
732
|
def test_domain_from_from
|
722
733
|
mail = mock()
|
723
|
-
mail.expects(:header).at_least_once.returns({})
|
724
734
|
mail.expects(:from).at_least_once.returns(['joe@null.example.com'])
|
735
|
+
mail.expects(:return_path).at_least_once.returns('joe@null.example.com')
|
725
736
|
domain = MMS2R::Media.domain(mail)
|
726
737
|
assert_equal 'null.example.com', domain
|
727
738
|
end
|
@@ -730,14 +741,14 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
730
741
|
f = File.join(MMS2R::Media.conf_dir, 'from.yml')
|
731
742
|
YAML.expects(:load_file).once.with(f).returns(['example.com'])
|
732
743
|
mail = mock()
|
733
|
-
mail.expects(:header).at_least_once.returns({'return-path' => '<joe@null.example.com>'})
|
734
744
|
mail.expects(:from).at_least_once.returns(['joe@example.com'])
|
745
|
+
mail.expects(:return_path).at_least_once.returns('joe@null.example.com')
|
735
746
|
domain = MMS2R::Media.domain(mail)
|
736
747
|
assert_equal 'example.com', domain
|
737
748
|
end
|
738
749
|
|
739
750
|
def test_unknown_device_type
|
740
|
-
mail =
|
751
|
+
mail = mail('generic.mail')
|
741
752
|
mms = MMS2R::Media.new(mail)
|
742
753
|
assert_equal :unknown, mms.device_type?
|
743
754
|
assert_equal false, mms.is_mobile?
|
@@ -747,7 +758,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
747
758
|
iphones = ['att-iphone-01.mail',
|
748
759
|
'iphone-image-01.mail']
|
749
760
|
iphones.each do |iphone|
|
750
|
-
mail =
|
761
|
+
mail = mail(iphone)
|
751
762
|
mms = MMS2R::Media.new(mail)
|
752
763
|
assert_equal :iphone, mms.device_type?, "fixture #{iphone} was not a iphone"
|
753
764
|
assert_equal true, mms.is_mobile?
|
@@ -761,7 +772,7 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
761
772
|
end
|
762
773
|
|
763
774
|
def test_exif_load_error
|
764
|
-
mms = MMS2R::Media.new
|
775
|
+
mms = MMS2R::Media.new stub_mail
|
765
776
|
mms.expects(:require).with('exifr').raises(LoadError)
|
766
777
|
|
767
778
|
assert_equal :unknown, mms.device_type?
|
@@ -825,15 +836,14 @@ class TestMms2rMedia < Test::Unit::TestCase
|
|
825
836
|
'verizon-blackberry.mail',
|
826
837
|
'verizon-blackberry.mail']
|
827
838
|
berries.each do |berry|
|
828
|
-
|
829
|
-
mms = MMS2R::Media.new(mail)
|
839
|
+
mms = MMS2R::Media.new(mail(berry))
|
830
840
|
assert_equal :blackberry, mms.device_type?, "fixture #{berry} was not a blackberrry"
|
831
841
|
assert_equal true, mms.is_mobile?
|
832
842
|
end
|
833
843
|
end
|
834
844
|
|
835
845
|
def test_handset_device_type
|
836
|
-
mail =
|
846
|
+
mail = mail('att-image-01.mail')
|
837
847
|
mms = MMS2R::Media.new(mail)
|
838
848
|
assert_equal :handset, mms.device_type?
|
839
849
|
assert_equal true, mms.is_mobile?
|