jpmobile 5.2.4 → 6.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +1 -1
- data/.onkcop-config.yml +396 -0
- data/.rubocop.yml +71 -10
- data/.ruby-version +1 -1
- data/Gemfile +1 -1
- data/Gemfile.lock +157 -129
- data/README.md +2 -2
- data/jpmobile.gemspec +5 -1
- data/lib/jpmobile.rb +1 -0
- data/lib/jpmobile/configuration.rb +7 -3
- data/lib/jpmobile/docomo_guid.rb +2 -2
- data/lib/jpmobile/email.rb +2 -4
- data/lib/jpmobile/emoticon.rb +16 -23
- data/lib/jpmobile/filter.rb +9 -4
- data/lib/jpmobile/hook_action_view.rb +4 -10
- data/lib/jpmobile/hook_test_request.rb +1 -1
- data/lib/jpmobile/mail.rb +7 -7
- data/lib/jpmobile/mailer.rb +1 -1
- data/lib/jpmobile/mobile/abstract_mobile.rb +1 -1
- data/lib/jpmobile/mobile/android.rb +1 -1
- data/lib/jpmobile/mobile/au.rb +2 -2
- data/lib/jpmobile/mobile/black_berry.rb +1 -1
- data/lib/jpmobile/mobile/ddipocket.rb +1 -1
- data/lib/jpmobile/mobile/docomo.rb +6 -8
- data/lib/jpmobile/mobile/emobile.rb +2 -2
- data/lib/jpmobile/mobile/ipad.rb +1 -1
- data/lib/jpmobile/mobile/iphone.rb +1 -1
- data/lib/jpmobile/mobile/softbank.rb +2 -2
- data/lib/jpmobile/mobile/vodafone.rb +2 -2
- data/lib/jpmobile/mobile/willcom.rb +2 -2
- data/lib/jpmobile/mobile/windows_phone.rb +1 -1
- data/lib/jpmobile/rack/params_filter.rb +5 -4
- data/lib/jpmobile/rails.rb +9 -41
- data/lib/jpmobile/resolver.rb +4 -37
- data/lib/jpmobile/session/active_record_store.rb +1 -1
- data/lib/jpmobile/session/mem_cache_store.rb +1 -1
- data/lib/jpmobile/trans_sid.rb +1 -1
- data/lib/jpmobile/util.rb +4 -5
- data/lib/jpmobile/version.rb +1 -1
- data/lib/tasks/jpmobile_tasks.rake +4 -4
- data/spec/rack/jpmobile/emoticon_spec.rb +48 -48
- data/spec/rack_helper.rb +1 -5
- data/spec/unit/email_spec.rb +1 -1
- data/spec/unit/receive_mail_spec.rb +10 -10
- data/spec/unit/util_spec.rb +4 -4
- data/test/rails/overrides/Gemfile.jpmobile +1 -1
- data/test/rails/overrides/app/controllers/mobile_spec_controller.rb +1 -1
- data/test/rails/overrides/app/mailboxes/application_mailbox.rb +3 -0
- data/test/rails/overrides/app/mailboxes/mobile_mailer_mailbox.rb +5 -0
- data/test/rails/overrides/app/mailers/decorated_mailer.rb +1 -1
- data/test/rails/overrides/db/migrate/20201111033056_create_active_storage_tables.active_storage.rb +36 -0
- data/test/rails/overrides/db/migrate/20201111033057_create_action_mailbox_tables.action_mailbox.rb +14 -0
- data/test/rails/overrides/spec/controllers/docomo_guid_spec.rb +2 -2
- data/test/rails/overrides/spec/controllers/hankaku_filter_controller_spec.rb +1 -1
- data/test/rails/overrides/spec/controllers/template_path_spec.rb +2 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-attached.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-decomail.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-emoji.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-emoji2.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-emoji5.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/bounced-jp.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/docomo-emoji.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/docomo-gmail-sjis.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/docomo-jis.eml +0 -0
- data/{spec/unit/email-fixtures → test/rails/overrides/spec/fixtures/files/mobile_mailer}/iphone-message.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/no-from.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/non-jp.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/photo.jpg +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-blank.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-emoji-utf8.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-emoji.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-gmail-sjis.eml +0 -0
- data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-gmail-utf8.eml +0 -0
- data/test/rails/overrides/spec/mailboxes/mobile_mailer_mailbox_spec.rb +265 -0
- data/test/rails/overrides/spec/mailers/mobile_mailer_spec.rb +0 -305
- data/test/rails/overrides/spec/requests/emobile_spec.rb +2 -2
- data/test/rails/overrides/spec/requests/trans_sid_spec.rb +9 -9
- metadata +81 -43
data/lib/jpmobile/resolver.rb
CHANGED
@@ -1,47 +1,14 @@
|
|
1
1
|
module Jpmobile
|
2
|
-
class Resolver < ActionView::FileSystemResolver
|
2
|
+
class Resolver < ::ActionView::FileSystemResolver
|
3
3
|
EXTENSIONS = [:locale, :formats, :handlers, :mobile].freeze
|
4
4
|
DEFAULT_PATTERN = ':prefix/:action{_:mobile,}{.:locale,}{.:formats,}{+:variants,}{.:handlers,}'.freeze
|
5
5
|
|
6
|
-
def initialize(path
|
6
|
+
def initialize(path)
|
7
7
|
raise ArgumentError, 'path already is a Resolver class' if path.is_a?(Resolver)
|
8
8
|
|
9
|
-
super
|
9
|
+
super
|
10
|
+
@pattern = DEFAULT_PATTERN
|
10
11
|
@path = File.expand_path(path)
|
11
12
|
end
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def query(path, details, formats, outside_app_allowed)
|
16
|
-
query = build_query(path, details)
|
17
|
-
|
18
|
-
template_paths = find_template_paths(query)
|
19
|
-
template_paths = reject_files_external_to_app(template_paths) unless outside_app_allowed
|
20
|
-
|
21
|
-
template_paths.map do |template|
|
22
|
-
handler, format, variant = extract_handler_and_format_and_variant(template)
|
23
|
-
contents = File.binread(template)
|
24
|
-
|
25
|
-
virtual_path = if format
|
26
|
-
if template =~ /.+#{path}(.+)\.#{format.to_sym.to_s}.*$/
|
27
|
-
path.to_str + Regexp.last_match(1)
|
28
|
-
else
|
29
|
-
path.virtual
|
30
|
-
end
|
31
|
-
else
|
32
|
-
path.virtual
|
33
|
-
end
|
34
|
-
|
35
|
-
ActionView::Template.new(
|
36
|
-
contents,
|
37
|
-
File.expand_path(template),
|
38
|
-
handler,
|
39
|
-
virtual_path: virtual_path,
|
40
|
-
format: format,
|
41
|
-
variant: variant,
|
42
|
-
updated_at: mtime(template),
|
43
|
-
)
|
44
|
-
end
|
45
|
-
end
|
46
13
|
end
|
47
14
|
end
|
data/lib/jpmobile/trans_sid.rb
CHANGED
@@ -51,7 +51,7 @@ module Jpmobile
|
|
51
51
|
|
52
52
|
# session_idを埋め込むためのhidden fieldを出力する。
|
53
53
|
def sid_hidden_field_tag
|
54
|
-
"<input type=\"hidden\" name=\"#{CGI.escapeHTML
|
54
|
+
"<input type=\"hidden\" name=\"#{CGI.escapeHTML(session_key.to_s)}\" value=\"#{CGI.escapeHTML(jpmobile_session_id.to_s)}\" />"
|
55
55
|
end
|
56
56
|
|
57
57
|
# formにsession_idを追加する。
|
data/lib/jpmobile/util.rb
CHANGED
@@ -255,9 +255,8 @@ module Jpmobile
|
|
255
255
|
SJIS
|
256
256
|
when ::Encoding::UTF_8
|
257
257
|
UTF8
|
258
|
-
when ::Encoding::ASCII_8BIT
|
259
|
-
BINARY
|
260
258
|
else
|
259
|
+
# 上記以外はすべて BINARY 扱い
|
261
260
|
BINARY
|
262
261
|
end
|
263
262
|
end
|
@@ -297,7 +296,7 @@ module Jpmobile
|
|
297
296
|
|
298
297
|
def invert_table(hash)
|
299
298
|
result = {}
|
300
|
-
hash.
|
299
|
+
hash.each_key do |key|
|
301
300
|
if result[hash[key]]
|
302
301
|
if !key.is_a?(Array) && !result[hash[key]].is_a?(Array) && result[hash[key]] > key
|
303
302
|
result[hash[key]] = key
|
@@ -312,9 +311,9 @@ module Jpmobile
|
|
312
311
|
def decode(str, encoding, charset)
|
313
312
|
_str = case encoding
|
314
313
|
when /quoted-printable/i
|
315
|
-
str.
|
314
|
+
str.unpack1('M').strip
|
316
315
|
when /base64/i
|
317
|
-
str.
|
316
|
+
str.unpack1('m').strip
|
318
317
|
else
|
319
318
|
str
|
320
319
|
end
|
data/lib/jpmobile/version.rb
CHANGED
@@ -33,7 +33,7 @@ namespace :test do
|
|
33
33
|
# generate rails app
|
34
34
|
FileUtils.rm_rf(rails_root)
|
35
35
|
FileUtils.mkdir_p(rails_root)
|
36
|
-
`rails new #{rails_root} --skip-bundle`
|
36
|
+
`rails new #{rails_root} --skip-bundle --skip-bootsnap --skip-webpack-install --skip-git --skip-spring`
|
37
37
|
end
|
38
38
|
|
39
39
|
# setup jpmobile
|
@@ -94,8 +94,8 @@ namespace :test do
|
|
94
94
|
|
95
95
|
unless skip
|
96
96
|
# add gems for jpmobile spec
|
97
|
-
|
98
|
-
File.open(
|
97
|
+
gemfile_path = File.join(rails_root, 'Gemfile')
|
98
|
+
File.open(gemfile_path, 'a+') do |file|
|
99
99
|
file.write <<-GEMFILE
|
100
100
|
instance_eval File.read(File.expand_path(__FILE__) + '.jpmobile')
|
101
101
|
GEMFILE
|
@@ -104,7 +104,7 @@ namespace :test do
|
|
104
104
|
|
105
105
|
# run tests in rails
|
106
106
|
Dir.chdir(rails_root) do
|
107
|
-
Bundler.
|
107
|
+
Bundler.with_unbundled_env do
|
108
108
|
original_env = ENV.to_hash
|
109
109
|
|
110
110
|
ENV.update('RBENV_VERSION' => nil)
|
@@ -28,23 +28,23 @@ describe '絵文字が' do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'docomo 絵文字が変換されないこと' do
|
31
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
|
31
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
|
32
32
|
expect(response_body(response)).to eq(@docomo_cr)
|
33
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
|
33
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
|
34
34
|
expect(response_body(response)).to eq(@docomo_utf8)
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'au 絵文字が変換されないこと' do
|
38
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
|
38
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
|
39
39
|
expect(response_body(response)).to eq(@au_cr)
|
40
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
|
40
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
|
41
41
|
expect(response_body(response)).to eq(@au_utf8)
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'softbank 絵文字が変換されないこと' do
|
45
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
45
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
46
46
|
expect(response_body(response)).to eq(@softbank_cr)
|
47
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
47
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
48
48
|
expect(response_body(response)).to eq(@softbank_utf8)
|
49
49
|
end
|
50
50
|
end
|
@@ -72,38 +72,38 @@ describe '絵文字が' do
|
|
72
72
|
end
|
73
73
|
|
74
74
|
it 'docomo 絵文字が画像に変換されること' do
|
75
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
|
75
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
|
76
76
|
expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
|
77
77
|
end
|
78
78
|
|
79
79
|
it 'docomo 絵文字コードが画像に変換されること' do
|
80
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
|
80
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
|
81
81
|
expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'au 絵文字が画像に変換されること' do
|
85
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
|
85
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
|
86
86
|
expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
|
87
87
|
end
|
88
88
|
|
89
89
|
it 'au 絵文字コードが画像に変換されること' do
|
90
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
|
90
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
|
91
91
|
expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
|
92
92
|
end
|
93
93
|
|
94
94
|
it 'softbank 絵文字が画像に変換されること' do
|
95
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
95
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
96
96
|
expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
|
97
97
|
end
|
98
98
|
|
99
99
|
it 'softbank 絵文字コードが画像に変換されること' do
|
100
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
100
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
101
101
|
expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
|
102
102
|
end
|
103
103
|
|
104
104
|
it 'Content-Type が変換できないものである場合には変換しないこと' do
|
105
105
|
@res = Rack::MockRequest.env_for('/', 'Content-Type' => 'image/jpeg')
|
106
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
106
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
107
107
|
expect(response_body(response)).to eq(@softbank_utf8)
|
108
108
|
end
|
109
109
|
end
|
@@ -118,26 +118,26 @@ describe '絵文字が' do
|
|
118
118
|
end
|
119
119
|
|
120
120
|
it 'docomo 絵文字が変換されること' do
|
121
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
|
121
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
|
122
122
|
expect(response_body(response)).to eq(sjis("\xf8\x9f"))
|
123
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
|
123
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
|
124
124
|
expect(response_body(response)).to eq(sjis("\xf8\x9f"))
|
125
125
|
|
126
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)
|
126
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)
|
127
127
|
expect(response_body(response)).to eq(sjis("\xf9\x79"))
|
128
128
|
end
|
129
129
|
|
130
130
|
it 'au 絵文字が変換されること' do
|
131
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
|
131
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
|
132
132
|
expect(response_body(response)).to eq(sjis("\xf8\x9f"))
|
133
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
|
133
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
|
134
134
|
expect(response_body(response)).to eq(sjis("\xf8\x9f"))
|
135
135
|
end
|
136
136
|
|
137
137
|
it 'softbank 絵文字が変換されること' do
|
138
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
138
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
139
139
|
expect(response_body(response)).to eq(sjis("\xf8\x9f"))
|
140
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
140
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
141
141
|
expect(response_body(response)).to eq(sjis("\xf8\x9f"))
|
142
142
|
end
|
143
143
|
|
@@ -167,26 +167,26 @@ describe '絵文字が' do
|
|
167
167
|
end
|
168
168
|
|
169
169
|
it 'docomo 絵文字が変換されること' do
|
170
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
|
170
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
|
171
171
|
expect(response_body(response)).to eq(sjis("\xf6\x60"))
|
172
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
|
172
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
|
173
173
|
expect(response_body(response)).to eq(sjis("\xf6\x60"))
|
174
174
|
|
175
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)
|
175
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)
|
176
176
|
expect(response_body(response)).to eq(utf8_to_sjis('[ドコモポイント]'))
|
177
177
|
end
|
178
178
|
|
179
179
|
it 'au 絵文字が変換されること' do
|
180
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
|
180
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
|
181
181
|
expect(response_body(response)).to eq(sjis("\xf6\x60"))
|
182
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
|
182
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
|
183
183
|
expect(response_body(response)).to eq(sjis("\xf6\x60"))
|
184
184
|
end
|
185
185
|
|
186
186
|
it 'softbank 絵文字が変換されること' do
|
187
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
187
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
188
188
|
expect(response_body(response)).to eq(sjis("\xf6\x60"))
|
189
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
189
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
190
190
|
expect(response_body(response)).to eq(sjis("\xf6\x60"))
|
191
191
|
end
|
192
192
|
|
@@ -216,26 +216,26 @@ describe '絵文字が' do
|
|
216
216
|
end
|
217
217
|
|
218
218
|
it 'docomo 絵文字が変換されること' do
|
219
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
|
219
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
|
220
220
|
expect(response_body(response)).to eq([0xe04a].pack('U'))
|
221
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
|
221
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
|
222
222
|
expect(response_body(response)).to eq([0xe04a].pack('U'))
|
223
223
|
|
224
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)
|
224
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)
|
225
225
|
expect(response_body(response)).to eq('[ドコモポイント]')
|
226
226
|
end
|
227
227
|
|
228
228
|
it 'au 絵文字が変換されること' do
|
229
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
|
229
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
|
230
230
|
expect(response_body(response)).to eq([0xe04a].pack('U'))
|
231
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
|
231
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
|
232
232
|
expect(response_body(response)).to eq([0xe04a].pack('U'))
|
233
233
|
end
|
234
234
|
|
235
235
|
it 'softbank 絵文字が変換されること' do
|
236
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
236
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
237
237
|
expect(response_body(response)).to eq([0xe04a].pack('U'))
|
238
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
238
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
239
239
|
expect(response_body(response)).to eq([0xe04a].pack('U'))
|
240
240
|
end
|
241
241
|
|
@@ -265,9 +265,9 @@ describe '絵文字が' do
|
|
265
265
|
end
|
266
266
|
|
267
267
|
it 'softbank 絵文字が変換されること' do
|
268
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
268
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
269
269
|
expect(response_body(response)).to eq([0xe04a].pack('U'))
|
270
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
270
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
271
271
|
expect(response_body(response)).to eq([0xe04a].pack('U'))
|
272
272
|
end
|
273
273
|
|
@@ -298,9 +298,9 @@ describe '絵文字が' do
|
|
298
298
|
end
|
299
299
|
|
300
300
|
it 'should convert Softbank emoticon' do
|
301
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
301
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
|
302
302
|
expect(response_body(response)).to eq([0xe04a].pack('U'))
|
303
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
303
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
|
304
304
|
expect(response_body(response)).to eq([0xe04a].pack('U'))
|
305
305
|
end
|
306
306
|
|
@@ -320,7 +320,7 @@ describe '絵文字が' do
|
|
320
320
|
end
|
321
321
|
|
322
322
|
it 'should not convert 〓' do
|
323
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
|
323
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
|
324
324
|
expect(response_body(response)).to eq('〓')
|
325
325
|
end
|
326
326
|
end
|
@@ -337,9 +337,9 @@ describe '絵文字が' do
|
|
337
337
|
end
|
338
338
|
|
339
339
|
it 'should convert Unicode emoticon' do
|
340
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@unicode_single))).call(@res)
|
340
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@unicode_single))).call(@res)
|
341
341
|
expect(response_body(response)).to eq([0x2600].pack('U*'))
|
342
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@unicode_multi))).call(@res)
|
342
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@unicode_multi))).call(@res)
|
343
343
|
expect(response_body(response)).to eq([0x26C5].pack('U*'))
|
344
344
|
end
|
345
345
|
|
@@ -359,7 +359,7 @@ describe '絵文字が' do
|
|
359
359
|
end
|
360
360
|
|
361
361
|
it 'should not convert 〓' do
|
362
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
|
362
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
|
363
363
|
expect(response_body(response)).to eq('〓')
|
364
364
|
end
|
365
365
|
end
|
@@ -381,9 +381,9 @@ describe '絵文字が' do
|
|
381
381
|
end
|
382
382
|
|
383
383
|
it 'should convert Google emoticon' do
|
384
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_single))).call(@res)
|
384
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_single))).call(@res)
|
385
385
|
expect(response_body(response)).to eq([0xFE000].pack('U*'))
|
386
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_multi))).call(@res)
|
386
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_multi))).call(@res)
|
387
387
|
expect(response_body(response)).to eq([0xFE00F].pack('U*'))
|
388
388
|
end
|
389
389
|
|
@@ -403,7 +403,7 @@ describe '絵文字が' do
|
|
403
403
|
end
|
404
404
|
|
405
405
|
it 'should not convert 〓' do
|
406
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
|
406
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
|
407
407
|
expect(response_body(response)).to eq('〓')
|
408
408
|
end
|
409
409
|
end
|
@@ -418,9 +418,9 @@ describe '絵文字が' do
|
|
418
418
|
end
|
419
419
|
|
420
420
|
it 'should convert Google emoticon' do
|
421
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_single))).call(@res)
|
421
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_single))).call(@res)
|
422
422
|
expect(response_body(response)).to eq([0xFE000].pack('U*'))
|
423
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_multi))).call(@res)
|
423
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_multi))).call(@res)
|
424
424
|
expect(response_body(response)).to eq([0xFE00F].pack('U*'))
|
425
425
|
end
|
426
426
|
|
@@ -440,7 +440,7 @@ describe '絵文字が' do
|
|
440
440
|
end
|
441
441
|
|
442
442
|
it 'should not convert 〓' do
|
443
|
-
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
|
443
|
+
response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
|
444
444
|
expect(response_body(response)).to eq('〓')
|
445
445
|
end
|
446
446
|
|
data/spec/rack_helper.rb
CHANGED
@@ -74,9 +74,7 @@ module Jpmobile::RackHelper
|
|
74
74
|
def response_body(res)
|
75
75
|
body = case res
|
76
76
|
when Array
|
77
|
-
res[2]
|
78
|
-
when String
|
79
|
-
res.body
|
77
|
+
res[2]
|
80
78
|
else
|
81
79
|
res.body
|
82
80
|
end
|
@@ -84,8 +82,6 @@ module Jpmobile::RackHelper
|
|
84
82
|
case body
|
85
83
|
when Array
|
86
84
|
body.first
|
87
|
-
when String
|
88
|
-
body
|
89
85
|
else
|
90
86
|
body
|
91
87
|
end
|
data/spec/unit/email_spec.rb
CHANGED
@@ -56,7 +56,7 @@ describe 'Jpmobile::Email' do
|
|
56
56
|
|
57
57
|
describe 'japanese_mail_address_regexp' do
|
58
58
|
before do
|
59
|
-
Jpmobile::Email.japanese_mail_address_regexp = Regexp.new(/\.jp(?:[^a-zA-Z
|
59
|
+
Jpmobile::Email.japanese_mail_address_regexp = Regexp.new(/\.jp(?:[^a-zA-Z.\-]|$)/)
|
60
60
|
end
|
61
61
|
|
62
62
|
it '#detect_from_mail_header should return Jpmobile::Mobile::AbstractMobile when the header contains .jp address' do
|
@@ -7,7 +7,7 @@ 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
|
@@ -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.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/mobile_mailer/docomo-gmail-sjis.eml')).read)
|
87
|
+
@mail = Mail.new(File.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/docomo-gmail-sjis.eml')).read)
|
88
88
|
end
|
89
89
|
|
90
90
|
it 'subject should be parsed correctly' 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.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/mobile_mailer/au-decomail.eml')).read)
|
132
|
+
@mail = Mail.new(File.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/au-decomail.eml')).read)
|
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.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/mobile_mailer/softbank-gmail-sjis.eml')).read)
|
154
|
+
@mail = Mail.new(File.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/softbank-gmail-sjis.eml')).read)
|
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.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/mobile_mailer/softbank-gmail-utf8.eml')).read)
|
173
|
+
@mail = Mail.new(File.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/softbank-gmail-utf8.eml')).read)
|
174
174
|
end
|
175
175
|
|
176
176
|
it 'subject should be parsed correctly' do
|
@@ -304,13 +304,13 @@ describe 'Jpmobile::Mail#receive' do
|
|
304
304
|
|
305
305
|
context 'From au iPhone' do
|
306
306
|
it 'charset should be UTF-8' do
|
307
|
-
@mail = Mail.new(File.open(File.join(__dir__, '
|
307
|
+
@mail = Mail.new(File.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/iphone-message.eml')).read)
|
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.open(File.join(__dir__, '
|
313
|
+
@mail = Mail.new(File.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/iphone-message.eml')).read)
|
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
|
|
@@ -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.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/mobile_mailer/bounced-jp.eml')).read)
|
438
|
+
@mail = Mail.new(File.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/bounced-jp.eml')).read)
|
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.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/mobile_mailer/non-jp.eml')).read)
|
450
|
+
@mail = Mail.new(File.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/non-jp.eml')).read)
|
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.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/mobile_mailer/no-from.eml')).read)
|
461
|
+
@mail = Mail.new(File.open(File.join(__dir__, '../../test/rails/overrides/spec/fixtures/files/mobile_mailer/no-from.eml')).read)
|
462
462
|
end
|
463
463
|
|
464
464
|
it 'mobile should be nil' do
|