mms2r 2.4.1 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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?
|