]> git.openstreetmap.org Git - rails.git/blob - test/abilities/abilities_test.rb
cc981b792ceb6767fbe769a1238bf7ce03ab7667
[rails.git] / test / abilities / abilities_test.rb
1 # frozen_string_literal: true
2
3 require "test_helper"
4
5 class AbilityTest < ActiveSupport::TestCase
6 end
7
8 class GuestAbilityTest < AbilityTest
9   test "geocoder permission for a guest" do
10     ability = Ability.new nil
11
12     [:search, :search_latlon, :search_osm_nominatim,
13      :search_osm_nominatim_reverse].each do |action|
14       assert ability.can?(action, :geocoder), "should be able to #{action} geocoder"
15     end
16   end
17
18   test "diary permissions for a guest" do
19     ability = Ability.new nil
20     [:index, :rss, :show].each do |action|
21       assert ability.can?(action, DiaryEntry), "should be able to #{action} DiaryEntries"
22     end
23
24     [:index].each do |action|
25       assert ability.can?(action, DiaryComment), "should be able to #{action} DiaryComments"
26     end
27
28     [:create, :edit, :subscribe, :unsubscribe, :hide, :unhide].each do |action|
29       assert ability.cannot?(action, DiaryEntry), "should not be able to #{action} DiaryEntries"
30     end
31
32     [:create, :hide, :unhide].each do |action|
33       assert ability.cannot?(action, DiaryComment), "should not be able to #{action} DiaryComments"
34     end
35   end
36
37   test "note permissions for a guest" do
38     ability = Ability.new nil
39
40     [:index].each do |action|
41       assert ability.can?(action, Note), "should be able to #{action} Notes"
42     end
43   end
44
45   test "user roles permissions for a guest" do
46     ability = Ability.new nil
47
48     [:grant, :revoke].each do |action|
49       assert ability.cannot?(action, UserRole), "should not be able to #{action} UserRoles"
50     end
51   end
52 end
53
54 class UserAbilityTest < AbilityTest
55   test "Diary permissions" do
56     ability = Ability.new create(:user)
57
58     [:index, :rss, :show, :create, :edit, :subscribe, :unsubscribe].each do |action|
59       assert ability.can?(action, DiaryEntry), "should be able to #{action} DiaryEntries"
60     end
61
62     [:index, :create].each do |action|
63       assert ability.can?(action, DiaryComment), "should be able to #{action} DiaryComments"
64     end
65
66     [:hide, :unhide].each do |action|
67       assert ability.cannot?(action, DiaryEntry), "should not be able to #{action} DiaryEntries"
68       assert ability.cannot?(action, DiaryComment), "should not be able to #{action} DiaryComment"
69     end
70
71     [:index, :show, :resolve, :ignore, :reopen].each do |action|
72       assert ability.cannot?(action, Issue), "should not be able to #{action} Issues"
73     end
74   end
75 end
76
77 class ModeratorAbilityTest < AbilityTest
78   test "Issue permissions" do
79     ability = Ability.new create(:moderator_user)
80
81     [:index, :show, :resolve, :ignore, :reopen].each do |action|
82       assert ability.can?(action, Issue), "should be able to #{action} Issues"
83     end
84   end
85
86   test "User Roles permissions" do
87     ability = Ability.new create(:moderator_user)
88
89     [:grant, :revoke].each do |action|
90       assert ability.cannot?(action, UserRole), "should not be able to #{action} UserRoles"
91     end
92
93     [:hide, :unhide].each do |action|
94       assert ability.can?(action, DiaryEntry), "should be able to #{action} DiaryEntries"
95       assert ability.can?(action, DiaryComment), "should be able to #{action} DiaryComment"
96     end
97   end
98 end
99
100 class AdministratorAbilityTest < AbilityTest
101   test "Diary for an administrator" do
102     ability = Ability.new create(:administrator_user)
103     [:index, :rss, :show, :create, :edit, :subscribe, :unsubscribe, :hide, :unhide].each do |action|
104       assert ability.can?(action, DiaryEntry), "should be able to #{action} DiaryEntries"
105     end
106
107     [:index, :create, :hide, :unhide].each do |action|
108       assert ability.can?(action, DiaryComment), "should be able to #{action} DiaryComments"
109     end
110   end
111
112   test "User Roles permissions for an administrator" do
113     ability = Ability.new create(:administrator_user)
114
115     [:grant, :revoke].each do |action|
116       assert ability.can?(action, UserRole), "should be able to #{action} UserRoles"
117     end
118   end
119 end