X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/b70da7b8ea15ab48bb2f34155567cea6dffc8fc9..HEAD:/test/abilities/api_capability_test.rb diff --git a/test/abilities/api_capability_test.rb b/test/abilities/api_capability_test.rb index dccde5758..58c8f7fe7 100644 --- a/test/abilities/api_capability_test.rb +++ b/test/abilities/api_capability_test.rb @@ -2,134 +2,128 @@ require "test_helper" -class ApiCapabilityTest < ActiveSupport::TestCase - private - - def tokens(*toks) - AccessToken.new do |token| - toks.each do |t| - token.public_send("#{t}=", true) - end - end - end -end - -class ChangesetCommentApiCapabilityTest < ApiCapabilityTest - test "as a normal user with permissionless token" do - token = create(:access_token) - capability = ApiCapability.new token +class ChangesetCommentApiCapabilityTest < ActiveSupport::TestCase + test "as a normal user without scopes" do + user = create(:user) + scopes = Set.new + ability = ApiAbility.new user, scopes [:create, :destroy, :restore].each do |action| - assert capability.cannot? action, ChangesetComment + assert ability.cannot? action, ChangesetComment end end - test "as a normal user with allow_write_api token" do - token = create(:access_token, :allow_write_api => true) - capability = ApiCapability.new token + test "as a normal user with write_changeset_comments scope" do + user = create(:user) + scopes = Set.new %w[write_changeset_comments] + ability = ApiAbility.new user, scopes [:destroy, :restore].each do |action| - assert capability.cannot? action, ChangesetComment + assert ability.cannot? action, ChangesetComment end [:create].each do |action| - assert capability.can? action, ChangesetComment + assert ability.can? action, ChangesetComment end end - test "as a moderator with permissionless token" do - token = create(:access_token, :user => create(:moderator_user)) - capability = ApiCapability.new token + test "as a moderator without scopes" do + user = create(:moderator_user) + scopes = Set.new + ability = ApiAbility.new user, scopes [:create, :destroy, :restore].each do |action| - assert capability.cannot? action, ChangesetComment + assert ability.cannot? action, ChangesetComment end end - test "as a moderator with allow_write_api token" do - token = create(:access_token, :user => create(:moderator_user), :allow_write_api => true) - capability = ApiCapability.new token + test "as a moderator with write_changeset_comments scope" do + user = create(:moderator_user) + scopes = Set.new %w[write_changeset_comments] + ability = ApiAbility.new user, scopes [:create, :destroy, :restore].each do |action| - assert capability.can? action, ChangesetComment + assert ability.can? action, ChangesetComment end end end -class NoteApiCapabilityTest < ApiCapabilityTest - test "as a normal user with permissionless token" do - token = create(:access_token) - capability = ApiCapability.new token +class NoteApiCapabilityTest < ActiveSupport::TestCase + test "as a normal user without scopes" do + user = create(:user) + scopes = Set.new + ability = ApiAbility.new user, scopes [:create, :comment, :close, :reopen, :destroy].each do |action| - assert capability.cannot? action, Note + assert ability.cannot? action, Note end end - test "as a normal user with allow_write_notes token" do - token = create(:access_token, :allow_write_notes => true) - capability = ApiCapability.new token + test "as a normal user with write_notes scope" do + user = create(:user) + scopes = Set.new %w[write_notes] + ability = ApiAbility.new user, scopes [:destroy].each do |action| - assert capability.cannot? action, Note + assert ability.cannot? action, Note end [:create, :comment, :close, :reopen].each do |action| - assert capability.can? action, Note + assert ability.can? action, Note end end - test "as a moderator with permissionless token" do - token = create(:access_token, :user => create(:moderator_user)) - capability = ApiCapability.new token + test "as a moderator without scopes" do + user = create(:moderator_user) + scopes = Set.new + ability = ApiAbility.new user, scopes [:destroy].each do |action| - assert capability.cannot? action, Note + assert ability.cannot? action, Note end end - test "as a moderator with allow_write_notes token" do - token = create(:access_token, :user => create(:moderator_user), :allow_write_notes => true) - capability = ApiCapability.new token + test "as a moderator with write_notes scope" do + user = create(:moderator_user) + scopes = Set.new %w[write_notes] + ability = ApiAbility.new user, scopes [:destroy].each do |action| - assert capability.can? action, Note + assert ability.can? action, Note end end end -class UserApiCapabilityTest < ApiCapabilityTest +class UserApiCapabilityTest < ActiveSupport::TestCase test "user preferences" do - # a user with no tokens - capability = ApiCapability.new nil - [:index, :show, :update_all, :update, :destroy].each do |act| - assert capability.cannot? act, UserPreference - end - - # A user with empty tokens - capability = ApiCapability.new tokens + user = create(:user) + scopes = Set.new + ability = ApiAbility.new user, scopes [:index, :show, :update_all, :update, :destroy].each do |act| - assert capability.cannot? act, UserPreference + assert ability.cannot? act, UserPreference end - capability = ApiCapability.new tokens(:allow_read_prefs) + scopes = Set.new %w[read_prefs] + ability = ApiAbility.new user, scopes [:update_all, :update, :destroy].each do |act| - assert capability.cannot? act, UserPreference + assert ability.cannot? act, UserPreference end [:index, :show].each do |act| - assert capability.can? act, UserPreference + assert ability.can? act, UserPreference end - capability = ApiCapability.new tokens(:allow_write_prefs) + scopes = Set.new %w[write_prefs] + ability = ApiAbility.new user, scopes + [:index, :show].each do |act| - assert capability.cannot? act, UserPreference + assert ability.cannot? act, UserPreference end [:update_all, :update, :destroy].each do |act| - assert capability.can? act, UserPreference + assert ability.can? act, UserPreference end end end