]> git.openstreetmap.org Git - rails.git/blob - test/abilities/api_capability_test.rb
Use resourceful routes for api trace data
[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(:oauth_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 write_api token" do
16     token = create(:oauth_access_token, :scopes => %w[write_api])
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(:oauth_access_token, :resource_owner_id => create(:moderator_user).id)
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 write_api token" do
38     token = create(:oauth_access_token, :resource_owner_id => create(:moderator_user).id, :scopes => %w[write_api])
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(:oauth_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 write_notes token" do
58     token = create(:oauth_access_token, :scopes => %w[write_notes])
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(:oauth_access_token, :resource_owner_id => create(:moderator_user).id)
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 write_notes token" do
80     token = create(:oauth_access_token, :resource_owner_id => create(:moderator_user).id, :scopes => %w[write_notes])
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 empty tokens
92     token = create(:oauth_access_token)
93     capability = ApiCapability.new token
94
95     [:index, :show, :update_all, :update, :destroy].each do |act|
96       assert capability.cannot? act, UserPreference
97     end
98
99     token = create(:oauth_access_token, :scopes => %w[read_prefs])
100     capability = ApiCapability.new token
101
102     [:update_all, :update, :destroy].each do |act|
103       assert capability.cannot? act, UserPreference
104     end
105
106     [:index, :show].each do |act|
107       assert capability.can? act, UserPreference
108     end
109
110     token = create(:oauth_access_token, :scopes => %w[write_prefs])
111     capability = ApiCapability.new token
112
113     [:index, :show].each do |act|
114       assert capability.cannot? act, UserPreference
115     end
116
117     [:update_all, :update, :destroy].each do |act|
118       assert capability.can? act, UserPreference
119     end
120   end
121 end