jpmobile 5.2.5 → 6.0.0.beta

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -1
  3. data/.ruby-version +1 -1
  4. data/Gemfile.lock +111 -93
  5. data/jpmobile.gemspec +1 -1
  6. data/lib/jpmobile/hook_action_view.rb +4 -10
  7. data/lib/jpmobile/rails.rb +2 -0
  8. data/lib/jpmobile/resolver.rb +2 -36
  9. data/lib/jpmobile/version.rb +1 -1
  10. data/lib/tasks/jpmobile_tasks.rake +2 -2
  11. data/spec/unit/receive_mail_spec.rb +9 -9
  12. data/test/rails/overrides/Gemfile.jpmobile +6 -1
  13. data/test/rails/overrides/app/controllers/mobile_spec_controller.rb +1 -1
  14. data/test/rails/overrides/app/mailboxes/application_mailbox.rb +3 -0
  15. data/test/rails/overrides/app/mailboxes/mobile_mailer_mailbox.rb +5 -0
  16. data/test/rails/overrides/app/mailers/decorated_mailer.rb +1 -1
  17. data/test/rails/overrides/db/migrate/20190419005447_create_active_storage_tables.active_storage.rb +27 -0
  18. data/test/rails/overrides/db/migrate/20190419005448_create_action_mailbox_tables.action_mailbox.rb +14 -0
  19. data/test/rails/overrides/spec/controllers/hankaku_filter_controller_spec.rb +1 -1
  20. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-attached.eml +0 -0
  21. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-decomail.eml +0 -0
  22. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-emoji.eml +0 -0
  23. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-emoji2.eml +0 -0
  24. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-emoji5.eml +0 -0
  25. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/bounced-jp.eml +0 -0
  26. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/docomo-emoji.eml +0 -0
  27. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/docomo-gmail-sjis.eml +0 -0
  28. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/docomo-jis.eml +0 -0
  29. data/{spec/unit/email-fixtures → test/rails/overrides/spec/fixtures/files/mobile_mailer}/iphone-message.eml +0 -0
  30. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/no-from.eml +0 -0
  31. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/non-jp.eml +0 -0
  32. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/photo.jpg +0 -0
  33. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-blank.eml +0 -0
  34. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-emoji-utf8.eml +0 -0
  35. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-emoji.eml +0 -0
  36. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-gmail-sjis.eml +0 -0
  37. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-gmail-utf8.eml +0 -0
  38. data/test/rails/overrides/spec/mailboxes/mobile_mailer_mailbox_spec.rb +265 -0
  39. data/test/rails/overrides/spec/mailers/mobile_mailer_spec.rb +0 -305
  40. metadata +53 -44
@@ -11,6 +11,11 @@ gem 'pry-byebug'
11
11
 
12
12
  # Bundle gems for certain environments:
13
13
  group :development, :test do
14
- gem "rspec-rails"
14
+ gem 'rspec', github: 'rspec/rspec'
15
+ gem 'rspec-core', github: 'rspec/rspec-core'
16
+ gem 'rspec-mocks', github: 'rspec/rspec-mocks'
17
+ gem "rspec-expectations", github: 'rspec/rspec-expectations'
18
+ gem "rspec-support", github: 'rspec/rspec-support'
19
+ gem "rspec-rails", github: 'rspec/rspec-rails', branch: '4-0-dev'
15
20
  gem 'rails-controller-testing'
16
21
  end
@@ -5,7 +5,7 @@ class MobileSpecController < ApplicationController
5
5
  end
6
6
 
7
7
  def file_render
8
- render file: File.join(Rails.public_path, '422')
8
+ render file: File.join(Rails.public_path, '422.html')
9
9
  end
10
10
 
11
11
  def no_mobile
@@ -0,0 +1,3 @@
1
+ class ApplicationMailbox < ActionMailbox::Base
2
+ routing /.*/ => :mobile_mailer
3
+ end
@@ -0,0 +1,5 @@
1
+ class MobileMailerMailbox < ApplicationMailbox
2
+ def process
3
+ mail
4
+ end
5
+ end
@@ -3,7 +3,7 @@ class DecoratedMailer < Jpmobile::Mailer::Base
3
3
  default to: 'info@jp.mobile'
4
4
 
5
5
  def deco_mail(to_mail)
6
- attachments.inline['photo.jpg'] = File.open(File.join(Rails.root, 'spec/fixtures/mobile_mailer/photo.jpg')).read
6
+ attachments.inline['photo.jpg'] = File.open(File.join(Rails.root, 'spec/fixtures/files/mobile_mailer/photo.jpg')).read
7
7
 
8
8
  mail(to: to_mail, subject: '題名', decorated: true)
9
9
  end
@@ -0,0 +1,27 @@
1
+ # This migration comes from active_storage (originally 20170806125915)
2
+ class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
3
+ def change
4
+ create_table :active_storage_blobs do |t|
5
+ t.string :key, null: false
6
+ t.string :filename, null: false
7
+ t.string :content_type
8
+ t.text :metadata
9
+ t.bigint :byte_size, null: false
10
+ t.string :checksum, null: false
11
+ t.datetime :created_at, null: false
12
+
13
+ t.index [ :key ], unique: true
14
+ end
15
+
16
+ create_table :active_storage_attachments do |t|
17
+ t.string :name, null: false
18
+ t.references :record, null: false, polymorphic: true, index: false
19
+ t.references :blob, null: false
20
+
21
+ t.datetime :created_at, null: false
22
+
23
+ t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true
24
+ t.foreign_key :active_storage_blobs, column: :blob_id
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,14 @@
1
+ # This migration comes from action_mailbox (originally 20180917164000)
2
+ class CreateActionMailboxTables < ActiveRecord::Migration[6.0]
3
+ def change
4
+ create_table :action_mailbox_inbound_emails do |t|
5
+ t.integer :status, default: 0, null: false
6
+ t.string :message_id, null: false
7
+ t.string :message_checksum, null: false
8
+
9
+ t.timestamps
10
+
11
+ t.index [ :message_id, :message_checksum ], name: "index_action_mailbox_inbound_emails_uniqueness", unique: true
12
+ end
13
+ end
14
+ end
@@ -1,6 +1,6 @@
1
1
  require 'rails_helper'
2
2
 
3
- describe Jpmobile::HankakuFilterController, type: :controller do
3
+ describe HankakuFilterController, type: :controller do
4
4
  describe '#index' do
5
5
  let(:params) { { prefecture_ids: ['1', '2'] } }
6
6
 
@@ -0,0 +1,265 @@
1
+ require 'rails_helper'
2
+ require 'action_mailbox/test_helper'
3
+
4
+ describe MobileMailerMailbox, type: :mailbox do
5
+ include ActionMailbox::TestHelper
6
+
7
+ describe 'blank mail' do
8
+ it 'softbank からの空メールがで受信できること' do
9
+ expect {
10
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/softbank-blank.eml')
11
+
12
+ expect(inbound_email.mail.subject).to be_blank
13
+ expect(inbound_email.mail.body).to be_blank
14
+ }.to_not raise_error
15
+ end
16
+ end
17
+
18
+ describe 'docomo からのメールを受信するとき' do
19
+ it '漢字コードを適切に変換できること' do
20
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/docomo-emoji.eml')
21
+
22
+ expect(inbound_email.mail.subject).to match(/題名/)
23
+ expect(inbound_email.mail.body).to match(/本文/)
24
+ end
25
+
26
+ it '絵文字が数値参照に変わること' do
27
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/docomo-emoji.eml')
28
+
29
+ expect(inbound_email.mail.subject).to match(/&#xe676;/)
30
+ expect(inbound_email.mail.body).to match(/&#xe6e2;/)
31
+ end
32
+
33
+ describe 'jis コードの場合に' do
34
+ it '適切に変換できること' do
35
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/docomo-jis.eml')
36
+
37
+ expect(inbound_email.mail.subject).to match(/テスト/)
38
+ expect(inbound_email.mail.body).to match(/テスト本文/)
39
+ end
40
+ end
41
+ end
42
+
43
+ describe 'au からのメールを受信するとき' do
44
+ describe 'jpmobile で送信したメールの場合' do
45
+ it '漢字コードを適切に変換できること' do
46
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/au-emoji.eml')
47
+
48
+ expect(inbound_email.mail.subject).to match(/題名/)
49
+ expect(inbound_email.mail.body).to match(/本文/)
50
+ end
51
+
52
+ it '絵文字が数値参照に変わること' do
53
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/au-emoji.eml')
54
+
55
+ expect(inbound_email.mail.subject).to match(/&#xe503;/)
56
+ expect(inbound_email.mail.body).to match(/&#xe522;/)
57
+ end
58
+ end
59
+
60
+ describe '実機からのメールの場合' do
61
+ it '漢字コードを適切に変換できること' do
62
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/au-emoji2.eml')
63
+
64
+ expect(inbound_email.mail.subject).to match(/題名/)
65
+ expect(inbound_email.mail.body).to match(/本文/)
66
+ end
67
+
68
+ it '絵文字が数値参照に変わること' do
69
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/au-emoji2.eml')
70
+
71
+ expect(inbound_email.mail.subject).to match(/&#xe4f4;/)
72
+ expect(inbound_email.mail.body).to match(/&#xe471;/)
73
+ end
74
+ end
75
+ end
76
+
77
+ describe 'softbank からのメールを受信するとき' do
78
+ describe 'shift_jis のとき' do
79
+ it '漢字コードを適切に変換できること' do
80
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/softbank-emoji.eml')
81
+
82
+ expect(inbound_email.mail.subject).to match(/題名/)
83
+ expect(inbound_email.mail.body).to match(/本文/)
84
+ end
85
+
86
+ it '絵文字が数値参照に変わること' do
87
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/softbank-emoji.eml')
88
+
89
+ expect(inbound_email.mail.subject).to match(/&#xf03c;/)
90
+ expect(inbound_email.mail.body).to match(/&#xf21c;/)
91
+ end
92
+ end
93
+
94
+ describe 'utf-8 のとき' do
95
+ it '漢字コードを適切に変換できること' do
96
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/softbank-emoji.eml')
97
+
98
+ expect(inbound_email.mail.subject).to match(/題名/)
99
+ expect(inbound_email.mail.body).to match(/本文/)
100
+ end
101
+
102
+ it '絵文字が数値参照に変わること' do
103
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/softbank-emoji-utf8.eml')
104
+
105
+ expect(inbound_email.mail.subject).to match(/&#xf03c;/)
106
+ expect(inbound_email.mail.body).to match(/&#xf21c;/)
107
+ end
108
+ end
109
+ end
110
+
111
+ describe 'multipart メールを受信するとき' do
112
+ describe 'docomo の場合' do
113
+ # NOTE: キャリアメールサーバで絵文字を変換するため検証は困難
114
+ it '正常に受信できること' do
115
+ expect {
116
+ receive_inbound_email_from_fixture('mobile_mailer/docomo-gmail-sjis.eml')
117
+ }.not_to raise_exception
118
+ end
119
+
120
+ it '絵文字が変換されること' do
121
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/docomo-gmail-sjis.eml')
122
+
123
+ expect(inbound_email.mail.subject).to match(/&#xe6ec;/)
124
+
125
+ expect(inbound_email.mail.parts.size).to eq(1)
126
+ expect(inbound_email.mail.parts.first.parts.size).to eq(2)
127
+
128
+ parts = inbound_email.mail.parts.first.parts
129
+ expect(parts.first.body).to match('テストです&#xe72d;')
130
+ expect(parts.last.body.raw_source).to match('テストです&#xe72d;')
131
+ end
132
+ end
133
+
134
+ describe 'au の場合' do
135
+ it '正常に受信できること' do
136
+ expect {
137
+ receive_inbound_email_from_fixture('mobile_mailer/au-decomail.eml')
138
+ }.not_to raise_exception
139
+ end
140
+
141
+ it '絵文字が変換されること' do
142
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/au-decomail.eml')
143
+
144
+ expect(inbound_email.mail.subject).to match(/&#xe4f4;/)
145
+
146
+ expect(inbound_email.mail.parts.size).to eq(1)
147
+ expect(inbound_email.mail.parts.first.parts.size).to eq(2)
148
+
149
+ parts = inbound_email.mail.parts.first.parts
150
+ expect(parts.first.body).to match(/テストです&#xe595;/)
151
+ expect(parts.last.body.raw_source).to match(/テストです&#xe595;/)
152
+ end
153
+
154
+ context 'iPhone' do
155
+ it 'should parse correctly' do
156
+ expect {
157
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/iphone-message.eml')
158
+ inbound_email.mail.encoded
159
+ }.not_to raise_error
160
+ end
161
+ end
162
+ end
163
+
164
+ describe 'softbank(sjis) の場合' do
165
+ # NOTE: キャリアメールサーバで絵文字を変換するため検証は困難
166
+ it '正常に受信できること' do
167
+ expect {
168
+ receive_inbound_email_from_fixture('mobile_mailer/softbank-gmail-sjis.eml')
169
+ }.not_to raise_exception
170
+ end
171
+
172
+ it '絵文字が変換されること' do
173
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/softbank-gmail-sjis.eml')
174
+
175
+ expect(inbound_email.mail.subject).to match(/&#xf221;&#xf223;&#xf221;/)
176
+
177
+ expect(inbound_email.mail.parts.size).to eq(2)
178
+
179
+ expect(inbound_email.mail.parts.first.body).to match(/テストです&#xf018;/)
180
+ expect(inbound_email.mail.parts.last.body.raw_source).to match(/テストです&#xf231;/)
181
+ end
182
+ end
183
+
184
+ describe 'softbank(utf8) の場合' do
185
+ # NOTE: キャリアメールサーバで絵文字を変換するため検証は困難
186
+ it '正常に受信できること' do
187
+ expect {
188
+ receive_inbound_email_from_fixture('mobile_mailer/softbank-gmail-utf8.eml')
189
+ }.not_to raise_exception
190
+ end
191
+
192
+ it '絵文字が変換されること' do
193
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/softbank-gmail-utf8.eml')
194
+
195
+ expect(inbound_email.mail.subject).to match(/テストです&#xf221;/)
196
+
197
+ expect(inbound_email.mail.parts.size).to eq(2)
198
+
199
+ expect(inbound_email.mail.parts.first.body).to match(/テストです&#xf223;/)
200
+ expect(inbound_email.mail.parts.last.body.raw_source).to match(/テストです&#xf223;/)
201
+ end
202
+ end
203
+
204
+ describe '添付ファイルがある場合' do
205
+ # NOTE: au のみテスト
206
+ it '正常に受信できること' do
207
+ expect {
208
+ receive_inbound_email_from_fixture('mobile_mailer/au-attached.eml')
209
+ }.not_to raise_exception
210
+ end
211
+
212
+ it '添付ファイルが壊れないこと' do
213
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/au-attached.eml')
214
+
215
+ expect(inbound_email.mail.subject).to match(/&#xe481;/)
216
+
217
+ expect(inbound_email.mail.parts.size).to eq(2)
218
+
219
+ expect(inbound_email.mail.parts.first.body).to match(/カレンダーだ&#xe4f4;/)
220
+
221
+ expect(inbound_email.mail.has_attachments?).to be_truthy
222
+ expect(inbound_email.mail.attachments.size).to eq(1)
223
+ expect(inbound_email.mail.attachments['20098calendar01.jpg'].content_type).to match('image/jpeg')
224
+ expect(inbound_email.mail.attachments['20098calendar01.jpg'].body.to_s.size).to eq(86412)
225
+ expect(inbound_email.mail.attachments['20098calendar01.jpg'].body.to_s[6..9]).to eq('JFIF')
226
+ end
227
+ end
228
+ end
229
+
230
+ describe 'PCからメールを受信するとき' do
231
+ describe '日本語ではない場合' do
232
+ before(:each) do
233
+ @email = file_fixture('mobile_mailer/non-jp.eml').read
234
+ end
235
+
236
+ it '正常に受信できること' do
237
+ expect {
238
+ receive_inbound_email_from_fixture('mobile_mailer/non-jp.eml')
239
+ }.not_to raise_exception
240
+ end
241
+
242
+ it 'mobile が nil であること' do
243
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/non-jp.eml')
244
+ expect(inbound_email.mail.mobile).to be_nil
245
+ end
246
+ end
247
+
248
+ describe 'From がない場合' do
249
+ before(:each) do
250
+ @email = file_fixture('mobile_mailer/no-from.eml').read
251
+ end
252
+
253
+ it '正常に受信できること' do
254
+ expect {
255
+ receive_inbound_email_from_fixture('mobile_mailer/no-from.eml')
256
+ }.not_to raise_exception
257
+ end
258
+
259
+ it 'mobile が nil であること' do
260
+ inbound_email = receive_inbound_email_from_fixture('mobile_mailer/no-from.eml')
261
+ expect(inbound_email.mail.mobile).to be_nil
262
+ end
263
+ end
264
+ end
265
+ end
@@ -498,308 +498,3 @@ describe MobileMailer, ' mail address', type: :mailer do
498
498
  expect(emails.first.destinations).to eq(to)
499
499
  end
500
500
  end
501
-
502
- describe MobileMailer, 'receiving', type: :mailer do
503
- describe 'blank mail' do
504
- it 'softbank からの空メールがで受信できること' do
505
- email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/softbank-blank.eml').read
506
- expect {
507
- email = MobileMailer.receive(email)
508
- }.to_not raise_error
509
-
510
- expect(email.subject).to be_blank
511
- expect(email.body).to be_blank
512
- end
513
- end
514
-
515
- describe 'docomo からのメールを受信するとき' do
516
- before(:each) do
517
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/docomo-emoji.eml').read
518
- end
519
-
520
- it '漢字コードを適切に変換できること' do
521
- email = MobileMailer.receive(@email)
522
- expect(email.subject).to match(/題名/)
523
- expect(email.body).to match(/本文/)
524
- end
525
-
526
- it '絵文字が数値参照に変わること' do
527
- email = MobileMailer.receive(@email)
528
-
529
- expect(email.subject).to match(/&#xe676;/)
530
- expect(email.body).to match(/&#xe6e2;/)
531
- end
532
-
533
- describe 'jis コードの場合に' do
534
- before(:each) do
535
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/docomo-jis.eml').read
536
- end
537
-
538
- it '適切に変換できること' do
539
- email = MobileMailer.receive(@email)
540
-
541
- expect(email.subject).to match(/テスト/)
542
- expect(email.body).to match(/テスト本文/)
543
- end
544
- end
545
- end
546
-
547
- describe 'au からのメールを受信するとき' do
548
- describe 'jpmobile で送信したメールの場合' do
549
- before(:each) do
550
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/au-emoji.eml').read
551
- end
552
-
553
- it '漢字コードを適切に変換できること' do
554
- email = MobileMailer.receive(@email)
555
-
556
- expect(email.subject).to match(/題名/)
557
- expect(email.body).to match(/本文/)
558
- end
559
-
560
- it '絵文字が数値参照に変わること' do
561
- email = MobileMailer.receive(@email)
562
-
563
- expect(email.subject).to match(/&#xe503;/)
564
- expect(email.body).to match(/&#xe522;/)
565
- end
566
- end
567
-
568
- describe '実機からのメールの場合' do
569
- before(:each) do
570
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/au-emoji2.eml').read
571
- end
572
-
573
- it '漢字コードを適切に変換できること' do
574
- email = MobileMailer.receive(@email)
575
-
576
- expect(email.subject).to match(/題名/)
577
- expect(email.body).to match(/本文/)
578
- end
579
-
580
- it '絵文字が数値参照に変わること' do
581
- email = MobileMailer.receive(@email)
582
-
583
- expect(email.subject).to match(/&#xe4f4;/)
584
- expect(email.body).to match(/&#xe471;/)
585
- end
586
- end
587
- end
588
-
589
- describe 'softbank からのメールを受信するとき' do
590
- describe 'shift_jis のとき' do
591
- before(:each) do
592
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/softbank-emoji.eml').read
593
- end
594
-
595
- it '漢字コードを適切に変換できること' do
596
- email = MobileMailer.receive(@email)
597
-
598
- expect(email.subject).to match(/題名/)
599
- expect(email.body).to match(/本文/)
600
- end
601
-
602
- it '絵文字が数値参照に変わること' do
603
- email = MobileMailer.receive(@email)
604
-
605
- expect(email.subject).to match(/&#xf03c;/)
606
- expect(email.body).to match(/&#xf21c;/)
607
- end
608
- end
609
-
610
- describe 'utf-8 のとき' do
611
- before(:each) do
612
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/softbank-emoji-utf8.eml').read
613
- end
614
-
615
- it '漢字コードを適切に変換できること' do
616
- email = MobileMailer.receive(@email)
617
-
618
- expect(email.subject).to match(/題名/)
619
- expect(email.body).to match(/本文/)
620
- end
621
-
622
- it '絵文字が数値参照に変わること' do
623
- email = MobileMailer.receive(@email)
624
-
625
- expect(email.subject).to match(/&#xf03c;/)
626
- expect(email.body).to match(/&#xf21c;/)
627
- end
628
- end
629
- end
630
-
631
- describe 'multipart メールを受信するとき' do
632
- describe 'docomo の場合' do
633
- # NOTE: キャリアメールサーバで絵文字を変換するため検証は困難
634
- before(:each) do
635
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/docomo-gmail-sjis.eml').read
636
- end
637
-
638
- it '正常に受信できること' do
639
- expect {
640
- MobileMailer.receive(@email)
641
- }.not_to raise_exception
642
- end
643
-
644
- it '絵文字が変換されること' do
645
- email = MobileMailer.receive(@email)
646
-
647
- expect(email.subject).to match(/&#xe6ec;/)
648
-
649
- expect(email.parts.size).to eq(1)
650
- expect(email.parts.first.parts.size).to eq(2)
651
-
652
- parts = email.parts.first.parts
653
- expect(parts.first.body).to match('テストです&#xe72d;')
654
- expect(parts.last.body.raw_source).to match('テストです&#xe72d;')
655
- end
656
- end
657
-
658
- describe 'au の場合' do
659
- before(:each) do
660
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/au-decomail.eml').read
661
- end
662
-
663
- it '正常に受信できること' do
664
- expect {
665
- MobileMailer.receive(@email)
666
- }.not_to raise_exception
667
- end
668
-
669
- it '絵文字が変換されること' do
670
- email = MobileMailer.receive(@email)
671
-
672
- expect(email.subject).to match(/&#xe4f4;/)
673
-
674
- expect(email.parts.size).to eq(1)
675
- expect(email.parts.first.parts.size).to eq(2)
676
-
677
- parts = email.parts.first.parts
678
- expect(parts.first.body).to match(/テストです&#xe595;/)
679
- expect(parts.last.body.raw_source).to match(/テストです&#xe595;/)
680
- end
681
-
682
- context 'iPhone' do
683
- it 'should parse correctly' do
684
- expect {
685
- @mail = MobileMailer.receive(File.open(File.join(Rails.root, '../../../spec/unit/email-fixtures/iphone-message.eml')).read)
686
- @mail.encoded
687
- }.not_to raise_error
688
- end
689
- end
690
- end
691
-
692
- describe 'softbank(sjis) の場合' do
693
- # NOTE: キャリアメールサーバで絵文字を変換するため検証は困難
694
- before(:each) do
695
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/softbank-gmail-sjis.eml').read
696
- end
697
-
698
- it '正常に受信できること' do
699
- expect {
700
- MobileMailer.receive(@email)
701
- }.not_to raise_exception
702
- end
703
-
704
- it '絵文字が変換されること' do
705
- email = MobileMailer.receive(@email)
706
-
707
- expect(email.subject).to match(/&#xf221;&#xf223;&#xf221;/)
708
-
709
- expect(email.parts.size).to eq(2)
710
-
711
- expect(email.parts.first.body).to match(/テストです&#xf018;/)
712
- expect(email.parts.last.body.raw_source).to match(/テストです&#xf231;/)
713
- end
714
- end
715
-
716
- describe 'softbank(utf8) の場合' do
717
- # NOTE: キャリアメールサーバで絵文字を変換するため検証は困難
718
- before(:each) do
719
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/softbank-gmail-utf8.eml').read
720
- end
721
-
722
- it '正常に受信できること' do
723
- expect {
724
- MobileMailer.receive(@email)
725
- }.not_to raise_exception
726
- end
727
-
728
- it '絵文字が変換されること' do
729
- email = MobileMailer.receive(@email)
730
-
731
- expect(email.subject).to match(/テストです&#xf221;/)
732
-
733
- expect(email.parts.size).to eq(2)
734
-
735
- expect(email.parts.first.body).to match(/テストです&#xf223;/)
736
- expect(email.parts.last.body.raw_source).to match(/テストです&#xf223;/)
737
- end
738
- end
739
-
740
- describe '添付ファイルがある場合' do
741
- # NOTE: au のみテスト
742
- before(:each) do
743
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/au-attached.eml').read
744
- end
745
-
746
- it '正常に受信できること' do
747
- expect {
748
- MobileMailer.receive(@email)
749
- }.not_to raise_exception
750
- end
751
-
752
- it '添付ファイルが壊れないこと' do
753
- email = MobileMailer.receive(@email)
754
-
755
- expect(email.subject).to match(/&#xe481;/)
756
-
757
- expect(email.parts.size).to eq(2)
758
-
759
- expect(email.parts.first.body).to match(/カレンダーだ&#xe4f4;/)
760
-
761
- expect(email.has_attachments?).to be_truthy
762
- expect(email.attachments.size).to eq(1)
763
- expect(email.attachments['20098calendar01.jpg'].content_type).to match('image/jpeg')
764
- expect(email.attachments['20098calendar01.jpg'].body.to_s.size).to eq(86412)
765
- expect(email.attachments['20098calendar01.jpg'].body.to_s[6..9]).to eq('JFIF')
766
- end
767
- end
768
- end
769
-
770
- describe 'PCからメールを受信するとき' do
771
- describe '日本語ではない場合' do
772
- before(:each) do
773
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/non-jp.eml').read
774
- end
775
-
776
- it '正常に受信できること' do
777
- expect {
778
- MobileMailer.receive(@email)
779
- }.not_to raise_exception
780
- end
781
-
782
- it 'mobile が nil であること' do
783
- mail = MobileMailer.receive(@email)
784
- expect(mail.mobile).to be_nil
785
- end
786
- end
787
-
788
- describe 'From がない場合' do
789
- before(:each) do
790
- @email = File.open(Rails.root + 'spec/fixtures/mobile_mailer/no-from.eml').read
791
- end
792
-
793
- it '正常に受信できること' do
794
- expect {
795
- MobileMailer.receive(@email)
796
- }.not_to raise_exception
797
- end
798
-
799
- it 'mobile が nil であること' do
800
- mail = MobileMailer.receive(@email)
801
- expect(mail.mobile).to be_nil
802
- end
803
- end
804
- end
805
- end