]> git.openstreetmap.org Git - rails.git/blob - test/models/capability_test.rb
Rework capabilities to avoid assumptions about missing tokens
[rails.git] / test / models / capability_test.rb
1 # frozen_string_literal: true
2
3 require "test_helper"
4
5 class CapabilityTest < ActiveSupport::TestCase
6   def tokens(*toks)
7     AccessToken.new do |token|
8       toks.each do |t|
9         token.public_send("#{t}=", true)
10       end
11     end
12   end
13 end
14
15 class UserCapabilityTest < CapabilityTest
16   test "user preferences" do
17     user = create(:user)
18
19     # a user with no tokens
20     capability = Capability.new create(:user), nil
21     [:read, :read_one, :update, :update_one, :delete_one].each do |act|
22       assert capability.cannot? act, UserPreference
23     end
24
25     # A user with empty tokens
26     capability = Capability.new create(:user), tokens
27
28     [:read, :read_one, :update, :update_one, :delete_one].each do |act|
29       assert capability.cannot? act, UserPreference
30     end
31
32     capability = Capability.new user, tokens(:allow_read_prefs)
33
34     [:update, :update_one, :delete_one].each do |act|
35       assert capability.cannot? act, UserPreference
36     end
37
38     [:read, :read_one].each do |act|
39       assert capability.can? act, UserPreference
40     end
41
42     capability = Capability.new user, tokens(:allow_write_prefs)
43     [:read, :read_one].each do |act|
44       assert capability.cannot? act, UserPreference
45     end
46
47     [:update, :update_one, :delete_one].each do |act|
48       assert capability.can? act, UserPreference
49     end
50   end
51 end