X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2115f4609adcc86156e8e0aa59ea38ba5808378e..28b6afc1e8ccf652c7a8fd43e22a8ac788febd85:/services/api/test/functional/arvados/v1/collections_controller_test.rb diff --git a/services/api/test/functional/arvados/v1/collections_controller_test.rb b/services/api/test/functional/arvados/v1/collections_controller_test.rb index d9e9095755..574cd366fc 100644 --- a/services/api/test/functional/arvados/v1/collections_controller_test.rb +++ b/services/api/test/functional/arvados/v1/collections_controller_test.rb @@ -374,6 +374,24 @@ EOS "Expected 'duplicate key' error in #{response_errors.first}") end + [false, true].each do |ensure_unique_name| + test "create failure with duplicate name, ensure_unique_name #{ensure_unique_name}" do + authorize_with :active + post :create, params: { + collection: { + owner_uuid: users(:active).uuid, + manifest_text: "", + name: "this...............................................................................................................................................................................................................................................................name is too long" + }, + ensure_unique_name: ensure_unique_name + } + assert_response 422 + # check the real error isn't masked by an + # ensure_unique_name-related error (#19698) + assert_match /value too long for type/, json_response['errors'][0] + end + end + [false, true].each do |unsigned| test "create with duplicate name, ensure_unique_name, unsigned=#{unsigned}" do permit_unsigned_manifests unsigned @@ -1204,6 +1222,20 @@ EOS assert_nil json_response['trash_at'] end + test 'untrash a trashed collection by assigning nil to trash_at' do + authorize_with :active + post :update, params: { + id: collections(:expired_collection).uuid, + collection: { + trash_at: nil, + }, + include_trash: true, + } + assert_response 200 + assert_equal false, json_response['is_trashed'] + assert_nil json_response['trash_at'] + end + test 'untrash error on not trashed collection' do authorize_with :active post :untrash, params: { @@ -1461,5 +1493,56 @@ EOS end end end ->>>>>>> main + + test "select param is respected in 'show' response" do + authorize_with :active + get :show, params: { + id: collections(:collection_owned_by_active).uuid, + select: ["name"], + } + assert_response :success + assert_raises ActiveModel::MissingAttributeError do + assigns(:object).manifest_text + end + assert_nil json_response["manifest_text"] + assert_nil json_response["properties"] + assert_equal collections(:collection_owned_by_active).name, json_response["name"] + end + + test "select param is respected in 'update' response" do + authorize_with :active + post :update, params: { + id: collections(:collection_owned_by_active).uuid, + collection: { + manifest_text: ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:foobar.txt\n", + }, + select: ["name"], + } + assert_response :success + assert_nil json_response["manifest_text"] + assert_nil json_response["properties"] + assert_equal collections(:collection_owned_by_active).name, json_response["name"] + end + + [nil, + [], + ["is_trashed", "trash_at"], + ["is_trashed", "trash_at", "portable_data_hash"], + ["portable_data_hash"], + ["portable_data_hash", "manifest_text"], + ].each do |select| + test "select=#{select.inspect} param is respected in 'get by pdh' response" do + authorize_with :active + get :show, params: { + id: collections(:collection_owned_by_active).portable_data_hash, + select: select, + } + assert_response :success + if !select || select.index("manifest_text") + assert_not_nil json_response["manifest_text"] + else + assert_nil json_response["manifest_text"] + end + end + end end