X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/224f384d411bb1b4cccc7165c55bb64fd5c695ad..d43dce642a9681a33a5259f5bde05c8d3f3b690e:/services/api/test/functional/arvados/v1/groups_controller_test.rb?ds=sidebyside 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 10534a7061..3beec35958 100644 --- a/services/api/test/functional/arvados/v1/groups_controller_test.rb +++ b/services/api/test/functional/arvados/v1/groups_controller_test.rb @@ -55,12 +55,12 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase assert_equal 0, json_response['items_available'] end - def check_project_contents_response + def check_project_contents_response disabled_kinds=[] assert_response :success assert_operator 2, :<=, json_response['items_available'] assert_operator 2, :<=, json_response['items'].count kinds = json_response['items'].collect { |i| i['kind'] }.uniq - expect_kinds = %w'arvados#group arvados#specimen arvados#pipelineTemplate arvados#job' + expect_kinds = %w'arvados#group arvados#specimen arvados#pipelineTemplate arvados#job' - disabled_kinds assert_equal expect_kinds, (expect_kinds & kinds) json_response['items'].each do |i| @@ -69,6 +69,10 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase "group#contents returned a non-project group") end end + + disabled_kinds.each do |d| + assert_equal true, !kinds.include?(d) + end end test 'get group-owned objects' do @@ -376,9 +380,8 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase assert_not_equal(new_project['uuid'], groups(:aproject).uuid, "create returned same uuid as existing project") - assert_equal(new_project['name'], - 'A Project (2)', - "new project name '#{new_project['name']}' was expected to be 'A Project (2)'") + assert_match(/^A Project \(\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{3}Z\)$/, + new_project['name']) end test "unsharing a project results in hiding it from previously shared user" do @@ -448,4 +451,77 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase end end end + + test 'get contents with jobs and pipeline instances disabled' do + Rails.configuration.disable_api_methods = ['jobs.index', 'pipeline_instances.index'] + + authorize_with :active + get :contents, { + id: groups(:aproject).uuid, + format: :json, + } + check_project_contents_response %w'arvados#pipelineInstance arvados#job' + end + + test 'get contents with low max_index_database_read' do + # Some result will certainly have at least 12 bytes in a + # restricted column + Rails.configuration.max_index_database_read = 12 + authorize_with :active + get :contents, { + id: groups(:aproject).uuid, + format: :json, + } + assert_response :success + assert_not_empty(json_response['items']) + assert_operator(json_response['items'].count, + :<, json_response['items_available']) + end + + test 'get contents, recursive=true' do + authorize_with :active + params = { + id: groups(:aproject).uuid, + recursive: true, + format: :json, + } + get :contents, params + owners = json_response['items'].map do |item| + item['owner_uuid'] + end + assert_includes(owners, groups(:aproject).uuid) + assert_includes(owners, groups(:asubproject).uuid) + end + + [false, nil].each do |recursive| + test "get contents, recursive=#{recursive.inspect}" do + authorize_with :active + params = { + id: groups(:aproject).uuid, + format: :json, + } + params[:recursive] = false if recursive == false + get :contents, params + owners = json_response['items'].map do |item| + item['owner_uuid'] + end + assert_includes(owners, groups(:aproject).uuid) + refute_includes(owners, groups(:asubproject).uuid) + end + end + + test 'get home project contents, recursive=true' do + authorize_with :active + get :contents, { + id: users(:active).uuid, + recursive: true, + format: :json, + } + owners = json_response['items'].map do |item| + item['owner_uuid'] + end + assert_includes(owners, users(:active).uuid) + assert_includes(owners, groups(:aproject).uuid) + assert_includes(owners, groups(:asubproject).uuid) + end end