From: Anton Khorev Date: Wed, 1 Jan 2025 01:40:34 +0000 (+0300) Subject: Add active blocks list api endpoint with empty response X-Git-Tag: live~142^2~2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/6d558003aa5672a27362ae3f42627df50bd81ad1?ds=sidebyside Add active blocks list api endpoint with empty response --- diff --git a/app/abilities/api_ability.rb b/app/abilities/api_ability.rb index a0340c5cd..7bbd9889a 100644 --- a/app/abilities/api_ability.rb +++ b/app/abilities/api_ability.rb @@ -30,6 +30,8 @@ class ApiAbility can [:read, :update, :destroy], Message if scopes.include?("consume_messages") can :create, Message if scopes.include?("send_messages") + can :read, :active_user_blocks_list if scopes.include?("read_prefs") + if user.terms_agreed? can [:create, :update, :upload, :close, :subscribe, :unsubscribe], Changeset if scopes.include?("write_map") can :create, ChangesetComment if scopes.include?("write_changeset_comments") diff --git a/app/controllers/api/user_blocks/active_lists_controller.rb b/app/controllers/api/user_blocks/active_lists_controller.rb new file mode 100644 index 000000000..132d94678 --- /dev/null +++ b/app/controllers/api/user_blocks/active_lists_controller.rb @@ -0,0 +1,13 @@ +module Api + module UserBlocks + class ActiveListsController < ApiController + before_action :authorize + + authorize_resource :class => :active_user_blocks_list + + before_action :set_request_formats + + def show; end + end + end +end diff --git a/config/routes.rb b/config/routes.rb index 54bf037cf..45fc19f2c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -122,6 +122,9 @@ OpenStreetMap::Application.routes.draw do end resources :user_blocks, :only => :show, :id => /\d+/, :controller => "user_blocks" + namespace :user_blocks, :path => "user/blocks" do + resource :active_list, :path => "active", :only => :show + end end # Data browsing diff --git a/test/controllers/api/user_blocks/active_lists_controller_test.rb b/test/controllers/api/user_blocks/active_lists_controller_test.rb new file mode 100644 index 000000000..98518e791 --- /dev/null +++ b/test/controllers/api/user_blocks/active_lists_controller_test.rb @@ -0,0 +1,43 @@ +require "test_helper" + +module Api + module UserBlocks + class ActiveListsControllerTest < ActionDispatch::IntegrationTest + ## + # test all routes which lead to this controller + def test_routes + assert_routing( + { :path => "/api/0.6/user/blocks/active", :method => :get }, + { :controller => "api/user_blocks/active_lists", :action => "show" } + ) + assert_routing( + { :path => "/api/0.6/user/blocks/active.json", :method => :get }, + { :controller => "api/user_blocks/active_lists", :action => "show", :format => "json" } + ) + end + + def test_show_no_auth_header + get api_user_blocks_active_list_path + assert_response :unauthorized + end + + def test_show_no_permission + user = create(:user) + user_auth_header = bearer_authorization_header(user, :scopes => %w[]) + + get api_user_blocks_active_list_path, :headers => user_auth_header + assert_response :forbidden + end + + def test_show_empty + user = create(:user) + user_auth_header = bearer_authorization_header(user, :scopes => %w[read_prefs]) + create(:user_block, :expired, :user => user) + + get api_user_blocks_active_list_path, :headers => user_auth_header + assert_response :success + assert_dom "user_block", :count => 0 + end + end + end +end