X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/920eb223d11dc7dfb4df3c38d5f7173bc011a0af..64d7fc52356c128c367f18bcbe7a0c6f56a459a4:/services/api/test/integration/permissions_test.rb?ds=inline diff --git a/services/api/test/integration/permissions_test.rb b/services/api/test/integration/permissions_test.rb index 66a62543bb..cfd43f43b4 100644 --- a/services/api/test/integration/permissions_test.rb +++ b/services/api/test/integration/permissions_test.rb @@ -347,6 +347,14 @@ class PermissionsTest < ActionDispatch::IntegrationTest headers: auth(:active) assert_response 404 + get "/arvados/v1/links", + params: { + :filters => [["link_class", "=", "permission"], ["head_uuid", "=", groups(:public).uuid]].to_json + }, + headers: auth(:active) + assert_response :success + assert_equal [], json_response['items'] + # add some permissions, including can_manage # permission for user :active post "/arvados/v1/links", @@ -379,6 +387,21 @@ class PermissionsTest < ActionDispatch::IntegrationTest assert_response :success can_write_uuid = json_response['uuid'] + # Still should not be able read these permission links + get "/arvados/v1/permissions/#{groups(:public).uuid}", + params: nil, + headers: auth(:active) + assert_response 404 + + get "/arvados/v1/links", + params: { + :filters => [["link_class", "=", "permission"], ["head_uuid", "=", groups(:public).uuid]].to_json + }, + headers: auth(:active) + assert_response :success + assert_equal [], json_response['items'] + + # Now add a can_manage link post "/arvados/v1/links", params: { :format => :json, @@ -405,6 +428,40 @@ class PermissionsTest < ActionDispatch::IntegrationTest assert_includes perm_uuids, can_read_uuid, "can_read_uuid not found" assert_includes perm_uuids, can_write_uuid, "can_write_uuid not found" assert_includes perm_uuids, can_manage_uuid, "can_manage_uuid not found" + + # Now user :active should be able to retrieve permissions + # on group :public. + get "/arvados/v1/links", + params: { + :filters => [["link_class", "=", "permission"], ["head_uuid", "=", groups(:public).uuid]].to_json + }, + headers: auth(:active) + assert_response :success + + perm_uuids = json_response['items'].map { |item| item['uuid'] } + assert_includes perm_uuids, can_read_uuid, "can_read_uuid not found" + assert_includes perm_uuids, can_write_uuid, "can_write_uuid not found" + assert_includes perm_uuids, can_manage_uuid, "can_manage_uuid not found" + + # Now delete the can_manage link + delete "/arvados/v1/links/#{can_manage_uuid}", + params: nil, + headers: auth(:active) + assert_response :success + + # Should not be able read these permission links again + get "/arvados/v1/permissions/#{groups(:public).uuid}", + params: nil, + headers: auth(:active) + assert_response 404 + + get "/arvados/v1/links", + params: { + :filters => [["link_class", "=", "permission"], ["head_uuid", "=", groups(:public).uuid]].to_json + }, + headers: auth(:active) + assert_response :success + assert_equal [], json_response['items'] end test "get_permissions returns 404 for nonexistent uuid" do