]> git.openstreetmap.org Git - rails.git/blob - test/abilities/api_capability_test.rb
Merge remote-tracking branch 'upstream/pull/4747'
[rails.git] / test / abilities / api_capability_test.rb
1 # frozen_string_literal: true
2
3 require "test_helper"
4
5 class ChangesetCommentApiCapabilityTest < ActiveSupport::TestCase
6   test "as a normal user with permissionless token" do
7     token = create(:access_token)
8     capability = ApiCapability.new token
9
10     [:create, :destroy, :restore].each do |action|
11       assert capability.cannot? action, ChangesetComment
12     end
13   end
14
15   test "as a normal user with allow_write_api token" do
16     token = create(:access_token, :allow_write_api => true)
17     capability = ApiCapability.new token
18
19     [:destroy, :restore].each do |action|
20       assert capability.cannot? action, ChangesetComment
21     end
22
23     [:create].each do |action|
24       assert capability.can? action, ChangesetComment
25     end
26   end
27
28   test "as a moderator with permissionless token" do
29     token = create(:access_token, :user => create(:moderator_user))
30     capability = ApiCapability.new token
31
32     [:create, :destroy, :restore].each do |action|
33       assert capability.cannot? action, ChangesetComment
34     end
35   end
36
37   test "as a moderator with allow_write_api token" do
38     token = create(:access_token, :user => create(:moderator_user), :allow_write_api => true)
39     capability = ApiCapability.new token
40
41     [:create, :destroy, :restore].each do |action|
42       assert capability.can? action, ChangesetComment
43     end
44   end
45 end
46
47 class NoteApiCapabilityTest < ActiveSupport::TestCase
48   test "as a normal user with permissionless token" do
49     token = create(:access_token)
50     capability = ApiCapability.new token
51
52     [:create, :comment, :close, :reopen, :destroy].each do |action|
53       assert capability.cannot? action, Note
54     end
55   end
56
57   test "as a normal user with allow_write_notes token" do
58     token = create(:access_token, :allow_write_notes => true)
59     capability = ApiCapability.new token
60
61     [:destroy].each do |action|
62       assert capability.cannot? action, Note
63     end
64
65     [:create, :comment, :close, :reopen].each do |action|
66       assert capability.can? action, Note
67     end
68   end
69
70   test "as a moderator with permissionless token" do
71     token = create(:access_token, :user => create(:moderator_user))
72     capability = ApiCapability.new token
73
74     [:destroy].each do |action|
75       assert capability.cannot? action, Note
76     end
77   end
78
79   test "as a moderator with allow_write_notes token" do
80     token = create(:access_token, :user => create(:moderator_user), :allow_write_notes => true)
81     capability = ApiCapability.new token
82
83     [:destroy].each do |action|
84       assert capability.can? action, Note
85     end
86   end
87 end
88
89 class UserApiCapabilityTest < ActiveSupport::TestCase
90   test "user preferences" do
91     # a user with no tokens
92     capability = ApiCapability.new nil
93     [:index, :show, :update_all, :update, :destroy].each do |act|
94       assert capability.cannot? act, UserPreference
95     end
96
97     # A user with empty tokens
98     token = create(:access_token)
99     capability = ApiCapability.new token
100
101     [:index, :show, :update_all, :update, :destroy].each do |act|
102       assert capability.cannot? act, UserPreference
103     end
104
105     token = create(:access_token, :allow_read_prefs => true)
106     capability = ApiCapability.new token
107
108     [:update_all, :update, :destroy].each do |act|
109       assert capability.cannot? act, UserPreference
110     end
111
112     [:index, :show].each do |act|
113       assert capability.can? act, UserPreference
114     end
115
116     token = create(:access_token, :allow_write_prefs => true)
117     capability = ApiCapability.new token
118
119     [:index, :show].each do |act|
120       assert capability.cannot? act, UserPreference
121     end
122
123     [:update_all, :update, :destroy].each do |act|
124       assert capability.can? act, UserPreference
125     end
126   end
127 end