jpmobile 6.1.2 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.circleci/config.yml +12 -4
- data/.rubocop.yml +174 -1
- data/.ruby-version +1 -1
- data/Gemfile +11 -0
- data/Gemfile.lock +220 -166
- data/README.md +27 -21
- data/Rakefile +1 -1
- data/jpmobile.gemspec +6 -13
- data/lib/jpmobile/datum_conv.rb +7 -7
- data/lib/jpmobile/docomo_guid.rb +2 -2
- data/lib/jpmobile/email.rb +2 -2
- data/lib/jpmobile/fallback_view_selector.rb +2 -2
- data/lib/jpmobile/filter.rb +4 -2
- data/lib/jpmobile/hook_action_view.rb +3 -3
- data/lib/jpmobile/hook_template_details_requested.rb +12 -0
- data/lib/jpmobile/mail.rb +3 -3
- data/lib/jpmobile/mailer.rb +4 -5
- data/lib/jpmobile/method_less_action_support.rb +11 -0
- data/lib/jpmobile/mobile/abstract_mobile.rb +1 -1
- data/lib/jpmobile/mobile/android_tablet.rb +1 -1
- data/lib/jpmobile/mobile/au.rb +4 -6
- data/lib/jpmobile/mobile/softbank.rb +3 -1
- data/lib/jpmobile/path_set.rb +10 -36
- data/lib/jpmobile/position.rb +6 -6
- data/lib/jpmobile/rails.rb +8 -2
- data/lib/jpmobile/resolver.rb +47 -6
- data/lib/jpmobile/template_details.rb +38 -0
- data/lib/jpmobile/trans_sid.rb +2 -2
- data/lib/jpmobile/util.rb +1 -1
- data/lib/jpmobile/version.rb +1 -1
- data/lib/jpmobile/view_selector.rb +5 -6
- data/lib/jpmobile.rb +13 -0
- data/lib/tasks/jpmobile_tasks.rake +4 -5
- data/renovate.json +6 -0
- data/spec/rack/jpmobile/mobile_by_ua_spec.rb +1 -0
- data/spec/rack/jpmobile/params_filter_spec.rb +6 -6
- data/spec/unit/decorated_mail_spec.rb +1 -1
- data/spec/unit/email_spec.rb +1 -1
- data/spec/unit/mail_spec.rb +4 -4
- data/spec/unit/receive_mail_spec.rb +30 -30
- data/spec/unit/util_spec.rb +1 -1
- data/test/rails/overrides/Gemfile.jpmobile +4 -0
- data/test/rails/overrides/app/controllers/method_less_action_support_controller.rb +3 -0
- data/test/rails/overrides/app/controllers/mobile_spec_controller.rb +1 -1
- data/test/rails/overrides/app/controllers/template_path_controller.rb +3 -0
- data/test/rails/overrides/app/mailers/decorated_mailer.rb +1 -1
- data/test/rails/overrides/app/views/method_less_action_support/index_smart_phone.html.erb +0 -0
- data/test/rails/overrides/app/views/mobile_spec/mobile_not_exist.html.erb +3 -0
- data/test/rails/overrides/config/routes.rb +5 -1
- data/test/rails/overrides/spec/controllers/mobile_spec_controller_spec.rb +3 -3
- data/test/rails/overrides/spec/rails_helper.rb +2 -2
- data/test/rails/overrides/spec/requests/filter_spec.rb +106 -0
- data/test/rails/overrides/spec/requests/method_less_action_support_spec.rb +29 -0
- data/test/rails/overrides/spec/requests/pc_spec.rb +3 -2
- data/test/rails/overrides/spec/requests/template_path_spec.rb +1 -1
- data/test/rails/overrides/spec/{features → system}/admin/top_spec.rb +2 -2
- data/test/rails/overrides/spec/{features → system}/filter_spec.rb +2 -7
- data/test/rails/overrides/spec/system/support/cuprite_setup.rb +12 -0
- data/test/rails/overrides/spec/system_helper.rb +3 -0
- data/test/sinatra/guestbook.rb +0 -1
- metadata +26 -342
- data/test/rails/overrides/app/views/mobile_spec/no_mobile.html.erb +0 -3
@@ -7,12 +7,12 @@ describe 'Jpmobile::Mail#receive' do
|
|
7
7
|
|
8
8
|
before(:each) do
|
9
9
|
@to = 'info@jpmobile-rails.org'
|
10
|
-
Jpmobile::Email.japanese_mail_address_regexp = Regexp.new(/\.jp[^a-zA-Z
|
10
|
+
Jpmobile::Email.japanese_mail_address_regexp = Regexp.new(/\.jp[^a-zA-Z.-]/)
|
11
11
|
end
|
12
12
|
|
13
13
|
describe 'PC mail' do
|
14
14
|
before(:each) do
|
15
|
-
@mail = Mail.new(File.
|
15
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/pc-mail-single.eml')))
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'subject should be parsed correctly' do
|
@@ -49,7 +49,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
49
49
|
describe 'multipart' do
|
50
50
|
describe 'PC mail' do
|
51
51
|
before(:each) do
|
52
|
-
@mail = Mail.new(File.
|
52
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/pc-mail-multi.eml')))
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'subject should be parsed correctly' do
|
@@ -68,7 +68,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
68
68
|
|
69
69
|
describe 'PC mail without subject' do
|
70
70
|
before(:each) do
|
71
|
-
@mail = Mail.new(File.
|
71
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/pc-mail-attached-without-subject.eml')))
|
72
72
|
end
|
73
73
|
|
74
74
|
it 'body should be parsed correctly' do
|
@@ -84,7 +84,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
84
84
|
describe 'Docomo' do
|
85
85
|
context 'with sjis decomail' do
|
86
86
|
before(:each) do
|
87
|
-
@mail = Mail.new(File.
|
87
|
+
@mail = Mail.new(File.read(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/docomo-gmail-sjis.eml')))
|
88
88
|
end
|
89
89
|
|
90
90
|
it 'subject should be parsed correctly' do
|
@@ -111,7 +111,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
111
111
|
|
112
112
|
context 'with jis decomail' do
|
113
113
|
before(:each) do
|
114
|
-
@mail = Mail.new(File.
|
114
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/docomo-decomail.eml')))
|
115
115
|
end
|
116
116
|
|
117
117
|
it 'does not contain charset within multipart Content-Type' do
|
@@ -129,7 +129,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
129
129
|
|
130
130
|
describe 'Au' do
|
131
131
|
before(:each) do
|
132
|
-
@mail = Mail.new(File.
|
132
|
+
@mail = Mail.new(File.read(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/au-decomail.eml')))
|
133
133
|
end
|
134
134
|
|
135
135
|
it 'subject should be parsed correctly' do
|
@@ -151,7 +151,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
151
151
|
describe 'Softbank' do
|
152
152
|
context 'Shift_JIS' do
|
153
153
|
before(:each) do
|
154
|
-
@mail = Mail.new(File.
|
154
|
+
@mail = Mail.new(File.read(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/softbank-gmail-sjis.eml')))
|
155
155
|
end
|
156
156
|
|
157
157
|
it 'subject should be parsed correctly' do
|
@@ -170,7 +170,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
170
170
|
|
171
171
|
context 'UTF-8' do
|
172
172
|
before(:each) do
|
173
|
-
@mail = Mail.new(File.
|
173
|
+
@mail = Mail.new(File.read(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/softbank-gmail-utf8.eml')))
|
174
174
|
end
|
175
175
|
|
176
176
|
it 'subject should be parsed correctly' do
|
@@ -190,7 +190,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
190
190
|
|
191
191
|
context 'bounced mail' do
|
192
192
|
it 'should parse sub-part charset correctly' do
|
193
|
-
@mail = Mail.new(File.
|
193
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/bounce_with_utf8_part.eml')))
|
194
194
|
expect(@mail.parts.first.charset).to match(/iso-2022-jp/i)
|
195
195
|
expect(@mail.parts.last.charset).to match(/utf-8/i)
|
196
196
|
end
|
@@ -199,7 +199,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
199
199
|
|
200
200
|
describe 'Docomo' do
|
201
201
|
before(:each) do
|
202
|
-
@mail = Mail.new(File.
|
202
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/docomo-emoji.eml')))
|
203
203
|
end
|
204
204
|
|
205
205
|
it 'subject should be parsed correctly' do
|
@@ -234,7 +234,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
234
234
|
|
235
235
|
context 'JIS mail' do
|
236
236
|
before(:each) do
|
237
|
-
@mail = Mail.new(File.
|
237
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/docomo-jis.eml')))
|
238
238
|
end
|
239
239
|
|
240
240
|
it 'subject should be parsed correctly' do
|
@@ -250,7 +250,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
250
250
|
describe 'Au' do
|
251
251
|
context 'au-emoji.eml' do
|
252
252
|
before(:each) do
|
253
|
-
@mail = Mail.new(File.
|
253
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/au-emoji.eml')))
|
254
254
|
end
|
255
255
|
|
256
256
|
it 'subject should be parsed correctly' do
|
@@ -286,36 +286,36 @@ describe 'Jpmobile::Mail#receive' do
|
|
286
286
|
|
287
287
|
it 'should not be raised when parsing incoming email #41' do
|
288
288
|
expect {
|
289
|
-
@mail = Mail.new(File.
|
289
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/au-email.eml')))
|
290
290
|
}.not_to raise_error
|
291
291
|
end
|
292
292
|
|
293
293
|
it 'should not be raised when parsing incoming email #45' do
|
294
294
|
expect {
|
295
|
-
@mail = Mail.new(File.
|
295
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/au-decomail2.eml')))
|
296
296
|
}.not_to raise_error
|
297
297
|
end
|
298
298
|
|
299
299
|
it 'should not be raised when parsing incoming email - include kigou' do
|
300
300
|
expect {
|
301
|
-
@mail = Mail.new(File.
|
301
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/au-kigou.eml')))
|
302
302
|
}.not_to raise_error
|
303
303
|
end
|
304
304
|
|
305
305
|
context 'From au iPhone' do
|
306
306
|
it 'charset should be UTF-8' do
|
307
|
-
@mail = Mail.new(File.
|
307
|
+
@mail = Mail.new(File.read(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/iphone-message.eml')))
|
308
308
|
expect(@mail.mobile).to be_a(Jpmobile::Mobile::Au)
|
309
309
|
expect(@mail.charset).to match(/utf-8/i)
|
310
310
|
end
|
311
311
|
|
312
312
|
it 'should be encoded correctly' do
|
313
|
-
@mail = Mail.new(File.
|
313
|
+
@mail = Mail.new(File.read(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/iphone-message.eml')))
|
314
314
|
expect(@mail.encoded).to match(Regexp.escape("%[\e$B1`;yL>\e(B]%\e$B$N\e(B%[\e$BJ]8n<TL>\e(B]%"))
|
315
315
|
end
|
316
316
|
|
317
317
|
it 'should decode cp932-encoded mail correctly' do
|
318
|
-
@mail = Mail.new(File.
|
318
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/iphone-cp932.eml')))
|
319
319
|
expect(@mail.subject).to eq 'Re: 【NKSC】test'
|
320
320
|
expect(@mail.body.to_s).to eq 'テストです。㈱'
|
321
321
|
end
|
@@ -323,20 +323,20 @@ describe 'Jpmobile::Mail#receive' do
|
|
323
323
|
|
324
324
|
context 'From iPad' do
|
325
325
|
it 'charset should be UTF-8' do
|
326
|
-
@mail = Mail.new(File.
|
326
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/iphone-mail3.eml')))
|
327
327
|
expect(@mail.mobile).to be_a(Jpmobile::Mobile::AbstractMobile)
|
328
328
|
expect(@mail.charset).to match(/utf-8/i)
|
329
329
|
end
|
330
330
|
|
331
331
|
it 'should be encoded correctly' do
|
332
|
-
@mail = Mail.new(File.
|
332
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/iphone-mail3.eml')))
|
333
333
|
expect(@mail.encoded).to match(/BK\\J82~9T\$J\$7!2#5#1#2J8;z!2/)
|
334
334
|
end
|
335
335
|
end
|
336
336
|
|
337
337
|
it 'should not raise when parsing attached email' do
|
338
338
|
expect {
|
339
|
-
@mail = Mail.new(File.
|
339
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/au-attached.eml')))
|
340
340
|
expect(@mail.encoded).to match('/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPQAA')
|
341
341
|
}.not_to raise_error
|
342
342
|
end
|
@@ -344,7 +344,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
344
344
|
|
345
345
|
describe 'Softbank' do
|
346
346
|
before(:each) do
|
347
|
-
@mail = Mail.new(File.
|
347
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/softbank-emoji.eml')))
|
348
348
|
end
|
349
349
|
|
350
350
|
it 'subject should be parsed correctly' do
|
@@ -379,7 +379,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
379
379
|
|
380
380
|
describe 'blank-mail' do
|
381
381
|
before(:each) do
|
382
|
-
@mail = Mail.new(File.
|
382
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/softbank-blank.eml')))
|
383
383
|
end
|
384
384
|
|
385
385
|
it 'subject should be parsed correctly' do
|
@@ -395,7 +395,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
395
395
|
describe 'iPhone' do
|
396
396
|
context 'JIS mail' do
|
397
397
|
before(:each) do
|
398
|
-
@mail = Mail.new(File.
|
398
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/iphone-jis.eml')))
|
399
399
|
end
|
400
400
|
|
401
401
|
it 'body should be parsed correctly' do
|
@@ -405,7 +405,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
405
405
|
|
406
406
|
context 'when the mail contains UTF-8 emojis' do
|
407
407
|
before(:each) do
|
408
|
-
@mail = Mail.new(File.
|
408
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/iphone-unicode-emoji.eml')))
|
409
409
|
end
|
410
410
|
|
411
411
|
it 'subject should be parsed correctly' do
|
@@ -419,7 +419,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
419
419
|
|
420
420
|
context 'when the mail contains circled-numbers' do
|
421
421
|
before(:each) do
|
422
|
-
@mail = Mail.new(File.
|
422
|
+
@mail = Mail.new(File.read(File.join(__dir__, 'email-fixtures/iphone-circled-numbers-in-jis.eml')))
|
423
423
|
end
|
424
424
|
|
425
425
|
it 'subject should be parsed correctly' do
|
@@ -435,7 +435,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
435
435
|
describe 'bounced mail' do
|
436
436
|
context 'has jp address' do
|
437
437
|
before(:each) do
|
438
|
-
@mail = Mail.new(File.
|
438
|
+
@mail = Mail.new(File.read(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/bounced-jp.eml')))
|
439
439
|
end
|
440
440
|
|
441
441
|
it 'mobile should abstract mobile' do
|
@@ -447,7 +447,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
447
447
|
describe 'non-Japanese mail' do
|
448
448
|
context 'us-ascii' do
|
449
449
|
before(:each) do
|
450
|
-
@mail = Mail.new(File.
|
450
|
+
@mail = Mail.new(File.read(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/non-jp.eml')))
|
451
451
|
end
|
452
452
|
|
453
453
|
it 'mobile should be nil' do
|
@@ -458,7 +458,7 @@ describe 'Jpmobile::Mail#receive' do
|
|
458
458
|
|
459
459
|
context 'no From header' do
|
460
460
|
before(:each) do
|
461
|
-
@mail = Mail.new(File.
|
461
|
+
@mail = Mail.new(File.read(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/no-from.eml')))
|
462
462
|
end
|
463
463
|
|
464
464
|
it 'mobile should be nil' do
|
data/spec/unit/util_spec.rb
CHANGED
@@ -86,7 +86,7 @@ describe Jpmobile::Util do
|
|
86
86
|
end
|
87
87
|
|
88
88
|
it 'does not enter infinite loop on retry' do
|
89
|
-
expect { force_encode("\e\x28\x49\x9a\x43\x3D\x44\e\x28\x42".force_encoding('ISO-2022-JP'), 'iso-2022-jp', 'UTF-8') }.to raise_error
|
89
|
+
expect { force_encode("\e\x28\x49\x9a\x43\x3D\x44\e\x28\x42".force_encoding('ISO-2022-JP'), 'iso-2022-jp', 'UTF-8') }.to raise_error Encoding::InvalidByteSequenceError
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'frozenでも通過すること' do
|
@@ -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.
|
6
|
+
attachments.inline['photo.jpg'] = File.read(File.join(Rails.root, 'spec/fixtures/files/mobile_mailer/photo.jpg'))
|
7
7
|
|
8
8
|
mail(to: to_mail, subject: '題名', decorated: true)
|
9
9
|
end
|
File without changes
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# rubocop:disable Performance/CollectionLiteralInLoop
|
1
2
|
RailsRoot::Application.routes.draw do
|
2
3
|
resources :users
|
3
4
|
namespace :admin do
|
@@ -61,7 +62,7 @@ RailsRoot::Application.routes.draw do
|
|
61
62
|
%w[
|
62
63
|
index
|
63
64
|
file_render
|
64
|
-
|
65
|
+
mobile_not_exist
|
65
66
|
].each do |a|
|
66
67
|
get "mobile_spec/#{a}", to: "mobile_spec##{a}"
|
67
68
|
end
|
@@ -101,4 +102,7 @@ RailsRoot::Application.routes.draw do
|
|
101
102
|
get "#{c}/#{a}", to: "#{c}##{a}"
|
102
103
|
end
|
103
104
|
end
|
105
|
+
|
106
|
+
get 'method_less_action_support', to: 'method_less_action_support#index'
|
104
107
|
end
|
108
|
+
# rubocop:enable Performance/CollectionLiteralInLoop
|
@@ -52,7 +52,7 @@ describe MobileSpecController, type: :controller do
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
describe "GET '
|
55
|
+
describe "GET 'mobile_not_exist'" do
|
56
56
|
around do |example|
|
57
57
|
orig_value = Jpmobile.config.fallback_view_selector
|
58
58
|
Jpmobile.config.fallback_view_selector = true
|
@@ -65,7 +65,7 @@ describe MobileSpecController, type: :controller do
|
|
65
65
|
context 'PC access' do
|
66
66
|
it 'should be successful' do
|
67
67
|
request.user_agent = 'Mozilla'
|
68
|
-
get '
|
68
|
+
get 'mobile_not_exist'
|
69
69
|
|
70
70
|
expect(response).to be_successful
|
71
71
|
expect(response.body).not_to match('RailsRoot PC mobile')
|
@@ -75,7 +75,7 @@ describe MobileSpecController, type: :controller do
|
|
75
75
|
context 'mobile access' do
|
76
76
|
it 'should be successful' do
|
77
77
|
request.user_agent = 'DoCoMo/2.0 SH902i(c100;TB;W24H12)'
|
78
|
-
get '
|
78
|
+
get 'mobile_not_exist'
|
79
79
|
|
80
80
|
expect(response).to be_successful
|
81
81
|
expect(response.body).not_to match('RailsRoot mobile')
|
@@ -28,7 +28,7 @@ ActiveRecord::Migration.maintain_test_schema!
|
|
28
28
|
|
29
29
|
RSpec.configure do |config|
|
30
30
|
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
31
|
-
config.fixture_path = "#{
|
31
|
+
config.fixture_path = "#{Rails.root}/spec/fixtures"
|
32
32
|
|
33
33
|
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
34
34
|
# examples within a transaction, remove the following line or assign false
|
@@ -48,7 +48,7 @@ RSpec.configure do |config|
|
|
48
48
|
# # ...
|
49
49
|
# end
|
50
50
|
#
|
51
|
-
# The different available types are documented in the
|
51
|
+
# The different available types are documented in the system, such as in
|
52
52
|
# https://relishapp.com/rspec/rspec-rails/docs
|
53
53
|
config.infer_spec_type_from_file_location!
|
54
54
|
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'system_helper'
|
2
|
+
|
3
|
+
describe 'jpmobile integration spec', type: :request do
|
4
|
+
include Jpmobile::Util
|
5
|
+
|
6
|
+
before do
|
7
|
+
page.driver.headers = { 'User-Agent' => user_agent }
|
8
|
+
end
|
9
|
+
|
10
|
+
shared_examples_for '文字コードフィルタが動作しているとき' do
|
11
|
+
it 'はhtml以外は変換しないこと' do
|
12
|
+
get "/#{controller}/rawdata", env: { 'HTTP_USER_AGENT' => user_agent }
|
13
|
+
expect(response.body.encode('UTF-8')).to eq('アブラカダブラ')
|
14
|
+
expect(response.headers['Content-Type']).not_to match(/charset/i)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
#
|
19
|
+
# PCからのアクセス
|
20
|
+
#
|
21
|
+
describe FilterController do
|
22
|
+
let(:controller) { 'filter' }
|
23
|
+
|
24
|
+
describe 'PCからのアクセス' do
|
25
|
+
let(:user_agent) do
|
26
|
+
'Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)'
|
27
|
+
end
|
28
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
29
|
+
end
|
30
|
+
|
31
|
+
describe 'DoCoMo SH902i からのアクセス' do
|
32
|
+
let(:user_agent) do
|
33
|
+
'DoCoMo/2.0 SH902i(c100;TB;W24H12)'
|
34
|
+
end
|
35
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'au CA32 からのアクセス' do
|
39
|
+
let(:user_agent) do
|
40
|
+
'KDDI-CA32 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0'
|
41
|
+
end
|
42
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
43
|
+
end
|
44
|
+
|
45
|
+
describe 'Vodafone V903T からのアクセス' do
|
46
|
+
let(:user_agent) do
|
47
|
+
'Vodafone/1.0/V903T/TJ001 Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0'
|
48
|
+
end
|
49
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'SoftBank 910T からのアクセス' do
|
53
|
+
let(:user_agent) do
|
54
|
+
'SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1'
|
55
|
+
end
|
56
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe HankakuFilterController do
|
61
|
+
let(:controller) { 'hankaku_filter' }
|
62
|
+
|
63
|
+
describe 'PCからのアクセス' do
|
64
|
+
let(:user_agent) do
|
65
|
+
'Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)'
|
66
|
+
end
|
67
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
68
|
+
end
|
69
|
+
|
70
|
+
describe 'DoCoMo SH902i からのアクセス' do
|
71
|
+
let(:user_agent) do
|
72
|
+
'DoCoMo/2.0 SH902i(c100;TB;W24H12)'
|
73
|
+
end
|
74
|
+
|
75
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
76
|
+
end
|
77
|
+
|
78
|
+
describe 'SoftBank 910T からのアクセス' do
|
79
|
+
let(:user_agent) do
|
80
|
+
'SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1'
|
81
|
+
end
|
82
|
+
|
83
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe HankakuInputFilterController do
|
88
|
+
let(:controller) { 'hankaku_input_filter' }
|
89
|
+
|
90
|
+
describe 'DoCoMo SH902i からのアクセス' do
|
91
|
+
let(:user_agent) do
|
92
|
+
'DoCoMo/2.0 SH902i(c100;TB;W24H12)'
|
93
|
+
end
|
94
|
+
|
95
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
96
|
+
end
|
97
|
+
|
98
|
+
describe 'SoftBank 910T からのアクセス' do
|
99
|
+
let(:user_agent) do
|
100
|
+
'SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1'
|
101
|
+
end
|
102
|
+
|
103
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
describe 'Method-less mobile template only action', type: :request do
|
4
|
+
subject do
|
5
|
+
get '/method_less_action_support', headers: headers
|
6
|
+
end
|
7
|
+
|
8
|
+
let(:headers) do
|
9
|
+
{}
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'when accessed with mobile User-Agent' do
|
13
|
+
before do
|
14
|
+
headers['User-Agent'] = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; ja-jp) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16'
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'successfully renders mobile template' do
|
18
|
+
subject
|
19
|
+
expect(response).to have_http_status(200)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when accessed with non-mobile User-Agent' do
|
24
|
+
it 'retuens 404 status' do
|
25
|
+
subject
|
26
|
+
expect(response).to have_http_status(404)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -19,8 +19,9 @@ describe 'PCからのアクセスの場合', type: :request do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
context 'routesが存在しない場合' do
|
22
|
-
it '
|
23
|
-
|
22
|
+
it '404を返す' do
|
23
|
+
get '/not_exist', params: {}, env: @headers
|
24
|
+
expect(response).to have_http_status(404)
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'system_helper'
|
2
2
|
|
3
3
|
describe Admin::TopController, type: :feature do
|
4
4
|
describe "GET 'full_path'" do
|
5
5
|
before do
|
6
|
-
page.driver.
|
6
|
+
page.driver.headers = { 'User-Agent' => user_agent }
|
7
7
|
end
|
8
8
|
|
9
9
|
context 'PCからのアクセスの場合' do
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require '
|
1
|
+
require 'system_helper'
|
2
2
|
|
3
3
|
describe 'jpmobile integration spec', type: :feature do
|
4
4
|
include Jpmobile::Util
|
5
5
|
|
6
6
|
before do
|
7
|
-
page.driver.
|
7
|
+
page.driver.headers = { 'User-Agent' => user_agent }
|
8
8
|
end
|
9
9
|
|
10
10
|
shared_examples_for 'hankaku_filter input: true のとき' do
|
@@ -38,11 +38,6 @@ describe 'jpmobile integration spec', type: :feature do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
shared_examples_for '文字コードフィルタが動作しているとき' do
|
41
|
-
it 'はhtml以外は変換しないこと' do
|
42
|
-
visit "/#{controller}/rawdata"
|
43
|
-
expect(page.body.encode('UTF-8')).to have_content('アブラカダブラ')
|
44
|
-
expect(page.response_headers['Content-Type']).not_to match(/charset/i)
|
45
|
-
end
|
46
41
|
it 'response.bodyが空のときは文字コードを変更しないこと' do
|
47
42
|
visit "/#{controller}/empty"
|
48
43
|
expect(page.response_headers['Content-Type']).to match(/utf-8/i)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'capybara/cuprite'
|
2
|
+
|
3
|
+
Capybara.register_driver(:cuprite) do |app|
|
4
|
+
Capybara::Cuprite::Driver.new(
|
5
|
+
app,
|
6
|
+
window_size: [1200, 800],
|
7
|
+
browser_options: {},
|
8
|
+
inspector: true,
|
9
|
+
)
|
10
|
+
end
|
11
|
+
|
12
|
+
Capybara.default_driver = Capybara.javascript_driver = :cuprite
|