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