X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/43773cb247a1fb744b57070b715bfa5d53a00822..732f7f0740dc7e5d5cff54f9cc30d4cd4597cb27:/services/api/test/unit/collection_test.rb diff --git a/services/api/test/unit/collection_test.rb b/services/api/test/unit/collection_test.rb index 4f73670750..593bd4e3a3 100644 --- a/services/api/test/unit/collection_test.rb +++ b/services/api/test/unit/collection_test.rb @@ -1,7 +1,41 @@ require 'test_helper' class CollectionTest < ActiveSupport::TestCase - # test "the truth" do - # assert true - # end + def create_collection name, enc=nil + txt = ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:#{name}.txt\n" + txt.force_encoding(enc) if enc + return Collection.create(manifest_text: txt) + end + + test 'accept ASCII manifest_text' do + act_as_system_user do + c = create_collection 'foo' + assert c.valid? + end + end + + test 'accept UTF-8 manifest_text' do + act_as_system_user do + c = create_collection "f\xc3\x98\xc3\x98", Encoding::UTF_8 + assert c.valid? + end + end + + test 'refuse manifest_text with invalid UTF-8 byte sequence' do + act_as_system_user do + c = create_collection "f\xc8o", Encoding::UTF_8 + assert !c.valid? + assert_equal [:manifest_text], c.errors.messages.keys + assert_match /UTF-8/, c.errors.messages[:manifest_text].first + end + end + + test 'refuse manifest_text with non-UTF-8 encoding' do + act_as_system_user do + c = create_collection "f\xc8o", Encoding::ASCII_8BIT + assert !c.valid? + assert_equal [:manifest_text], c.errors.messages.keys + assert_match /UTF-8/, c.errors.messages[:manifest_text].first + end + end end