1 # frozen_string_literal: true
5 class AbilityTest < ActiveSupport::TestCase
8 class GuestAbilityTest < AbilityTest
10 test "geocoder permission for a guest" do
11 ability = Ability.new nil
13 [:search, :search_latlon, :search_ca_postcode, :search_osm_nominatim,
14 :search_geonames, :search_osm_nominatim_reverse, :search_geonames_reverse].each do |action|
15 assert ability.can?(action, :geocoder), "should be able to #{action} geocoder"
19 test "diary permissions for a guest" do
20 ability = Ability.new nil
21 [:list, :rss, :view, :comments].each do |action|
22 assert ability.can?(action, DiaryEntry), "should be able to #{action} DiaryEntries"
25 [:create, :edit, :comment, :subscribe, :unsubscribe, :hide, :hidecomment].each do |action|
26 assert ability.cannot?(action, DiaryEntry), "should be able to #{action} DiaryEntries"
27 assert ability.cannot?(action, DiaryComment), "should be able to #{action} DiaryEntries"
33 class UserAbilityTest < AbilityTest
35 test "Diary permissions" do
36 ability = Ability.new create(:user)
38 [:list, :rss, :view, :comments, :create, :edit, :comment, :subscribe, :unsubscribe].each do |action|
39 assert ability.can?(action, DiaryEntry), "should be able to #{action} DiaryEntries"
42 [:hide, :hidecomment].each do |action|
43 assert ability.cannot?(action, DiaryEntry), "should be able to #{action} DiaryEntries"
44 assert ability.cannot?(action, DiaryComment), "should be able to #{action} DiaryEntries"
49 class AdministratorAbilityTest < AbilityTest
51 test "Diary for an administrator" do
52 ability = Ability.new create(:administrator_user)
53 [:list, :rss, :view, :comments, :create, :edit, :comment, :subscribe, :unsubscribe, :hide, :hidecomment].each do |action|
54 assert ability.can?(action, DiaryEntry), "should be able to #{action} DiaryEntries"
57 [:hide, :hidecomment].each do |action|
58 assert ability.can?(action, DiaryComment), "should be able to #{action} DiaryComment"
62 test "administrator does not auto-grant user preferences" do
63 ability = Ability.new create(:administrator_user)
65 [:read, :read_one, :update, :update_one, :delete_one].each do |act|
66 assert ability.cannot? act, UserPreference