Merge remote-tracking branch 'upstream/pull/2009'
[rails.git] / test / abilities / 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     # a user with no tokens
18     capability = Capability.new nil
19     [:read, :read_one, :update, :update_one, :delete_one].each do |act|
20       assert capability.cannot? act, UserPreference
21     end
22
23     # A user with empty tokens
24     capability = Capability.new tokens
25
26     [:read, :read_one, :update, :update_one, :delete_one].each do |act|
27       assert capability.cannot? act, UserPreference
28     end
29
30     capability = Capability.new tokens(:allow_read_prefs)
31
32     [:update, :update_one, :delete_one].each do |act|
33       assert capability.cannot? act, UserPreference
34     end
35
36     [:read, :read_one].each do |act|
37       assert capability.can? act, UserPreference
38     end
39
40     capability = Capability.new tokens(:allow_write_prefs)
41     [:read, :read_one].each do |act|
42       assert capability.cannot? act, UserPreference
43     end
44
45     [:update, :update_one, :delete_one].each do |act|
46       assert capability.can? act, UserPreference
47     end
48   end
49 end