From 303650fa703e0661a71ae44fbbfcc1f28f423196 Mon Sep 17 00:00:00 2001 From: radhika Date: Thu, 22 Jun 2017 13:11:20 -0400 Subject: [PATCH] 11840: support ensure_unique_name parameter in collection untrash method Arvados-DCO-1.1-Signed-off-by: Radhika Chippada --- .../arvados/v1/collections_controller.rb | 8 +++++- services/api/test/fixtures/collections.yml | 26 +++++++++++++++++++ .../arvados/v1/collections_controller_test.rb | 21 +++++++++++++++ .../arvados/v1/groups_controller_test.rb | 1 + 4 files changed, 55 insertions(+), 1 deletion(-) diff --git a/services/api/app/controllers/arvados/v1/collections_controller.rb b/services/api/app/controllers/arvados/v1/collections_controller.rb index 5c09b1fccd..b5dd07e064 100644 --- a/services/api/app/controllers/arvados/v1/collections_controller.rb +++ b/services/api/app/controllers/arvados/v1/collections_controller.rb @@ -75,7 +75,13 @@ class Arvados::V1::CollectionsController < ApplicationController def untrash if @object.is_trashed - @object.update_attributes!(trash_at: nil) + @object.trash_at = nil + + if params[:ensure_unique_name] + @object.save_with_unique_name! + else + @object.save! + end else raise InvalidStateTransitionError end diff --git a/services/api/test/fixtures/collections.yml b/services/api/test/fixtures/collections.yml index 8aedbdc705..dcb8c14975 100644 --- a/services/api/test/fixtures/collections.yml +++ b/services/api/test/fixtures/collections.yml @@ -657,6 +657,32 @@ collection_to_remove_and_rename_files: manifest_text: ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:file1 0:0:file2\n" name: collection to remove and rename files +trashed_collection_to_test_name_conflict_on_untrash: + uuid: zzzzz-4zz18-trashedcolnamec + portable_data_hash: 80cf6dd2cf079dd13f272ec4245cb4a8+48 + owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz + created_at: 2014-02-03T17:22:54Z + modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr + modified_by_user_uuid: zzzzz-tpzed-d9tiejq69daie8f + modified_at: 2014-02-03T17:22:54Z + updated_at: 2014-02-03T17:22:54Z + manifest_text: ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:file1 0:0:file2\n" + name: same name for trashed and persisted collections + is_trashed: true + trash_at: 2001-01-01T00:00:00Z + delete_at: 2038-01-01T00:00:00Z + +same_name_as_trashed_coll_to_test_name_conflict_on_untrash: + uuid: zzzzz-4zz18-namesameastrash + portable_data_hash: 80cf6dd2cf079dd13f272ec4245cb4a8+48 + owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz + created_at: 2014-02-03T17:22:54Z + modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr + modified_by_user_uuid: zzzzz-tpzed-d9tiejq69daie8f + modified_at: 2014-02-03T17:22:54Z + updated_at: 2014-02-03T17:22:54Z + manifest_text: ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:file1 0:0:file2\n" + name: same name for trashed and persisted collections # Test Helper trims the rest of the file 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 17af916b3d..70f35f3dd2 100644 --- a/services/api/test/functional/arvados/v1/collections_controller_test.rb +++ b/services/api/test/functional/arvados/v1/collections_controller_test.rb @@ -1065,4 +1065,25 @@ EOS end end end + + test 'untrash collection with same name as another with no ensure unique name' do + authorize_with :active + post :untrash, { + id: collections(:trashed_collection_to_test_name_conflict_on_untrash).uuid, + } + assert_response 422 + end + + test 'untrash collection with same name as another with ensure unique name' do + authorize_with :active + post :untrash, { + id: collections(:trashed_collection_to_test_name_conflict_on_untrash).uuid, + ensure_unique_name: true + } + assert_response 200 + assert_equal false, json_response['is_trashed'] + assert_nil json_response['trash_at'] + assert_nil json_response['delete_at'] + assert_match /^same name for trashed and persisted collections \(\d{4}-\d\d-\d\d.*?Z\)$/, json_response['name'] + end end diff --git a/services/api/test/functional/arvados/v1/groups_controller_test.rb b/services/api/test/functional/arvados/v1/groups_controller_test.rb index 3beec35958..7e3cad7d8c 100644 --- a/services/api/test/functional/arvados/v1/groups_controller_test.rb +++ b/services/api/test/functional/arvados/v1/groups_controller_test.rb @@ -116,6 +116,7 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase authorize_with :active get :contents, { format: :json, + limit: 200, id: users(:active).uuid } assert_response :success -- 2.30.2