X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/927524f1be454de021180b74999d682780b8cb6b..7a2e9199172a3c102e8a6c7b723fd44bc031bda4:/services/api/test/functional/arvados/v1/groups_controller_test.rb 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 0819c23067..ee7f716c80 100644 --- a/services/api/test/functional/arvados/v1/groups_controller_test.rb +++ b/services/api/test/functional/arvados/v1/groups_controller_test.rb @@ -330,6 +330,38 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase assert_equal 0, json_response['items'].count end + test 'get group-owned objects with select' do + authorize_with :active + get :contents, params: { + id: groups(:aproject).uuid, + limit: 100, + format: :json, + select: ["uuid", "storage_classes_desired"] + } + assert_response :success + assert_equal 17, json_response['items_available'] + assert_equal 17, json_response['items'].count + json_response['items'].each do |item| + # Expect collections to have a storage_classes field, other items should not. + if item["kind"] == "arvados#collection" + assert !item["storage_classes_desired"].nil? + else + assert item["storage_classes_desired"].nil? + end + end + end + + test 'get group-owned objects with invalid field in select' do + authorize_with :active + get :contents, params: { + id: groups(:aproject).uuid, + limit: 100, + format: :json, + select: ["uuid", "storage_classes_desire"] + } + assert_response 422 + end + test 'get group-owned objects with additional filter matching nothing' do authorize_with :active get :contents, params: { @@ -442,7 +474,7 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase assert_not_equal(new_project['uuid'], groups(:aproject).uuid, "create returned same uuid as existing project") - assert_match(/^A Project \(\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{3}Z\)$/, + assert_match(/^A Project \(#{new_project['uuid'][-15..-1]}\)$/, new_project['name']) end @@ -768,7 +800,7 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase ensure_unique_name: true } assert_response :success - assert_match /^trashed subproject 3 \(\d{4}-\d\d-\d\d.*?Z\)$/, json_response['name'] + assert_match /^trashed subproject 3 \(#{json_response['uuid'][-15..-1]}\)$/, json_response['name'] end test "move trashed subproject to new owner #{auth}" do @@ -787,6 +819,28 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase end end + # the group class overrides the destroy method. Make sure that the destroyed + # object is returned + [ + {group_class: "project"}, + {group_class: "role"}, + {group_class: "filter", properties: {"filters":[]}}, + ].each do |params| + test "destroy group #{params} returns object" do + authorize_with :active + + group = Group.create!(params) + + post :destroy, params: { + id: group.uuid, + format: :json, + } + assert_response :success + assert_not_nil json_response + assert_equal group.uuid, json_response["uuid"] + end + end + test 'get shared owned by another user' do authorize_with :user_bar_in_sharing_group @@ -920,4 +974,24 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase assert_response 422 end + + test "include_trash does not return trash inside frozen project" do + authorize_with :active + trashtime = Time.now - 1.second + outerproj = Group.create!(group_class: 'project') + innerproj = Group.create!(group_class: 'project', owner_uuid: outerproj.uuid) + innercoll = Collection.create!(name: 'inner-not-trashed', owner_uuid: innerproj.uuid) + innertrash = Collection.create!(name: 'inner-trashed', owner_uuid: innerproj.uuid, trash_at: trashtime) + innertrashproj = Group.create!(group_class: 'project', name: 'inner-trashed-proj', owner_uuid: innerproj.uuid, trash_at: trashtime) + outertrash = Collection.create!(name: 'outer-trashed', owner_uuid: outerproj.uuid, trash_at: trashtime) + innerproj.update!(frozen_by_uuid: users(:active).uuid) + get :contents, params: {id: outerproj.uuid, include_trash: true, recursive: true} + assert_response :success + uuids = json_response['items'].collect { |item| item['uuid'] } + assert_includes uuids, outertrash.uuid + assert_includes uuids, innerproj.uuid + assert_includes uuids, innercoll.uuid + refute_includes uuids, innertrash.uuid + refute_includes uuids, innertrashproj.uuid + end end