aboutsummaryrefslogtreecommitdiffstats
path: root/activestorage/test/models/filename
diff options
context:
space:
mode:
authorGeorge Claghorn <george@basecamp.com>2017-08-21 16:34:18 -0400
committerGeorge Claghorn <george@basecamp.com>2017-08-21 18:23:15 -0400
commit63395aba5a96cf7f915ac97c2ac1c42f58a9a850 (patch)
tree1bfa3b8e10b09b846bc82535e1d4080a6d4270a9 /activestorage/test/models/filename
parent2fb658d1e39364926aebd09f264d395bd1863e56 (diff)
downloadrails-63395aba5a96cf7f915ac97c2ac1c42f58a9a850.tar.gz
rails-63395aba5a96cf7f915ac97c2ac1c42f58a9a850.tar.bz2
rails-63395aba5a96cf7f915ac97c2ac1c42f58a9a850.zip
Encode Content-Disposition filenames according to RFC 2231
Closes #30134.
Diffstat (limited to 'activestorage/test/models/filename')
-rw-r--r--activestorage/test/models/filename/parameters_test.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/activestorage/test/models/filename/parameters_test.rb b/activestorage/test/models/filename/parameters_test.rb
new file mode 100644
index 0000000000..431be00639
--- /dev/null
+++ b/activestorage/test/models/filename/parameters_test.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+require "test_helper"
+
+class ActiveStorage::Filename::ParametersTest < ActiveSupport::TestCase
+ test "parameterizing a Latin filename" do
+ filename = ActiveStorage::Filename.new("racecar.jpg")
+
+ assert_equal %(filename="racecar.jpg"), filename.parameters.ascii
+ assert_equal "filename*=UTF-8''racecar.jpg", filename.parameters.utf8
+ assert_equal "#{filename.parameters.ascii}; #{filename.parameters.utf8}", filename.parameters.combined
+ assert_equal filename.parameters.combined, filename.parameters.to_s
+ end
+
+ test "parameterizing a Latin filename with accented characters" do
+ filename = ActiveStorage::Filename.new("råcëçâr.jpg")
+
+ assert_equal %(filename="racecar.jpg"), filename.parameters.ascii
+ assert_equal "filename*=UTF-8''r%C3%A5c%C3%AB%C3%A7%C3%A2r.jpg", filename.parameters.utf8
+ assert_equal "#{filename.parameters.ascii}; #{filename.parameters.utf8}", filename.parameters.combined
+ assert_equal filename.parameters.combined, filename.parameters.to_s
+ end
+
+ test "parameterizing a non-Latin filename" do
+ filename = ActiveStorage::Filename.new("автомобиль.jpg")
+
+ assert_equal %(filename="%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F.jpg"), filename.parameters.ascii
+ assert_equal "filename*=UTF-8''%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C.jpg", filename.parameters.utf8
+ assert_equal "#{filename.parameters.ascii}; #{filename.parameters.utf8}", filename.parameters.combined
+ assert_equal filename.parameters.combined, filename.parameters.to_s
+ end
+end