jpmobile 5.2.5 → 6.0.0.beta

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