X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2887fa9c26cfd4ae6379e2cf4e6c5d50aaa0dd11..64e387b2f4f0fe6c4c7bf16232706c7cf194caf0:/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 cc545b2fd1..d8017881d5 100644 --- a/services/api/test/functional/arvados/v1/collections_controller_test.rb +++ b/services/api/test/functional/arvados/v1/collections_controller_test.rb @@ -924,19 +924,47 @@ EOS assert_equal 'value1', json_response['properties']['property1'] end - test "create collection with properties" do - authorize_with :active - manifest_text = ". d41d8cd98f00b204e9800998ecf8427e 0:0:foo.txt\n" - post :create, params: { - collection: { - manifest_text: manifest_text, - portable_data_hash: "d30fe8ae534397864cb96c544f4cf102+47", - properties: {'property_1' => 'value_1'} + [ + {'property_1' => 'value_1'}, + "{\"property_1\":\"value_1\"}", + ].each do |p| + test "create collection with valid properties param #{p.inspect}" do + authorize_with :active + manifest_text = ". d41d8cd98f00b204e9800998ecf8427e 0:0:foo.txt\n" + post :create, params: { + collection: { + manifest_text: manifest_text, + portable_data_hash: "d30fe8ae534397864cb96c544f4cf102+47", + properties: p + } } - } - assert_response :success - assert_not_nil json_response['uuid'] - assert_equal 'value_1', json_response['properties']['property_1'] + assert_response :success + assert_not_nil json_response['uuid'] + assert_equal Hash, json_response['properties'].class, 'Collection properties attribute should be of type hash' + assert_equal 'value_1', json_response['properties']['property_1'] + end + end + + [ + false, + [], + 42, + 'some string', + '["json", "encoded", "array"]', + ].each do |p| + test "create collection with non-valid properties param #{p.inspect}" do + authorize_with :active + post :create, params: { + collection: { + name: "test collection with non-valid properties param '#{p.inspect}'", + manifest_text: '', + properties: p + } + } + assert_response 422 + response_errors = json_response['errors'] + assert_not_nil response_errors, 'Expected error in response' + end end [ @@ -1100,14 +1128,20 @@ EOS end end - test 'get trashed collection with include_trash' do - uuid = 'zzzzz-4zz18-mto52zx1s7sn3ih' # expired_collection - authorize_with :active - get :show, params: { - id: uuid, - include_trash: true, - } - assert_response 200 + [true, false].each do |include_trash| + test "get trashed collection with include_trash=#{include_trash}" do + uuid = 'zzzzz-4zz18-mto52zx1s7sn3ih' # expired_collection + authorize_with :active + get :show, params: { + id: uuid, + include_trash: include_trash, + } + if include_trash + assert_response 200 + else + assert_response 404 + end + end end [:admin, :active].each do |user| @@ -1395,4 +1429,20 @@ EOS assert_response :success assert_equal 3, json_response['version'] end + + test "delete collection with versioning enabled" do + Rails.configuration.Collections.CollectionVersioning = true + Rails.configuration.Collections.PreserveVersionIfIdle = 1 # 1 second + + col = collections(:collection_owned_by_active) + assert_equal 2, col.version + assert col.modified_at < Time.now - 1.second + + authorize_with(:active) + post :trash, params: { + id: col.uuid, + } + assert_response :success + assert_equal col.version, json_response['version'], 'Trashing a collection should not create a new version' + end end