]> git.openstreetmap.org Git - rails.git/blob - test/abilities/api_abilities_test.rb
Merge remote-tracking branch 'upstream/pull/5457'
[rails.git] / test / abilities / api_abilities_test.rb
1 # frozen_string_literal: true
2
3 require "test_helper"
4
5 class ApiAbilityTest < ActiveSupport::TestCase
6 end
7
8 class GuestApiAbilityTest < ApiAbilityTest
9   test "note permissions for a guest" do
10     ability = ApiAbility.new nil
11
12     [:index, :create, :feed, :show, :search].each do |action|
13       assert ability.can?(action, Note), "should be able to #{action} Notes"
14     end
15
16     [:comment, :close, :reopen, :destroy].each do |action|
17       assert ability.cannot?(action, Note), "should not be able to #{action} Notes"
18     end
19   end
20 end
21
22 class UserApiAbilityTest < ApiAbilityTest
23   test "Note permissions" do
24     token = create(:oauth_access_token, :scopes => %w[write_notes])
25     ability = ApiAbility.new token
26
27     [:index, :create, :comment, :feed, :show, :search, :close, :reopen].each do |action|
28       assert ability.can?(action, Note), "should be able to #{action} Notes"
29     end
30
31     [:destroy].each do |action|
32       assert ability.cannot?(action, Note), "should not be able to #{action} Notes"
33     end
34   end
35 end
36
37 class ModeratorApiAbilityTest < ApiAbilityTest
38   test "Note permissions" do
39     token = create(:oauth_access_token, :scopes => %w[write_notes], :resource_owner_id => create(:moderator_user).id)
40     ability = ApiAbility.new token
41
42     [:index, :create, :comment, :feed, :show, :search, :close, :reopen, :destroy].each do |action|
43       assert ability.can?(action, Note), "should be able to #{action} Notes"
44     end
45   end
46 end