]> git.arvados.org - arvados.git/blob - services/api/test/integration/computed_permissions_test.rb
Merge branch '21363-ubuntu2404-docs'
[arvados.git] / services / api / test / integration / computed_permissions_test.rb
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 require 'test_helper'
6
7 class ComputedPermissionsTest < ActionDispatch::IntegrationTest
8   include DbCurrentTime
9   fixtures :users, :groups, :api_client_authorizations, :collections
10
11   test "non-admin forbidden" do
12     get "/arvados/v1/computed_permissions",
13       params: {:format => :json},
14       headers: auth(:active)
15     assert_response 403
16   end
17
18   test "admin get permission for specified user" do
19     get "/arvados/v1/computed_permissions",
20       params: {
21         :format => :json,
22         :filters => [['user_uuid', '=', users(:active).uuid]].to_json,
23       },
24       headers: auth(:admin)
25     assert_response :success
26     assert_equal users(:active).uuid, json_response['items'][0]['user_uuid']
27     assert_nil json_response['count']
28   end
29
30   test "admin get implicit permission for specified user and target" do
31     get "/arvados/v1/computed_permissions",
32       params: {
33         :format => :json,
34         :filters => [
35           ['user_uuid', '=', users(:active).uuid],
36           ['target_uuid', '=', groups(:private).uuid],
37         ].to_json,
38       },
39       headers: auth(:admin)
40     assert_response :success
41     assert_equal 1, json_response['items'].length
42     assert_equal users(:active).uuid, json_response['items'][0]['user_uuid']
43     assert_equal groups(:private).uuid, json_response['items'][0]['target_uuid']
44     assert_equal 'can_manage', json_response['items'][0]['perm_level']
45   end
46
47   test "reject count=exact" do
48     get "/arvados/v1/computed_permissions",
49       params: {
50         :format => :json,
51         :count => 'exact',
52       },
53       headers: auth(:admin)
54     assert_response 422
55   end
56
57   test "reject offset>0" do
58     get "/arvados/v1/computed_permissions",
59       params: {
60         :format => :json,
61         :offset => 7,
62       },
63       headers: auth(:admin)
64     assert_response 422
65   end
66 end