diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index 1f0836d97..8206d342c 100644 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -3,8 +3,16 @@ module Api module V1 class UsersController < BaseController + before_action :load_team, only: :index before_action :load_user, only: :show + def index + users = @team.users + .page(params.dig(:page, :number)) + .per(params.dig(:page, :size)) + render jsonapi: users, each_serializer: UserSerializer + end + def show render jsonapi: @user, serializer: UserSerializer end diff --git a/config/routes.rb b/config/routes.rb index a715548be..c26375676 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -871,6 +871,7 @@ Rails.application.routes.draw do end end resources :project_folders, only: %i(index show create update) + resources :users, only: %i(index) end resources :users, only: %i(show) do resources :user_identities, diff --git a/spec/requests/api/v1/users_controller_spec.rb b/spec/requests/api/v1/users_controller_spec.rb index f82a410d9..b42127608 100644 --- a/spec/requests/api/v1/users_controller_spec.rb +++ b/spec/requests/api/v1/users_controller_spec.rb @@ -19,6 +19,30 @@ RSpec.describe 'Api::V1::UsersController', type: :request do { 'Authorization': 'Bearer ' + generate_token(@user1.id) } end + describe 'GET users, #index' do + it 'When valid request, requested users are members of the team' do + hash_body = nil + get api_v1_team_users_path(team_id: @team1.id), headers: @valid_headers + expect { hash_body = json }.not_to raise_exception + pp hash_body[:data] + expect(hash_body[:data]).to match( + JSON.parse( + ActiveModelSerializers::SerializableResource + .new(@team1.users, each_serializer: Api::V1::UserSerializer) + .to_json + )['data'] + ) + end + + it 'When invalid request, non existing team' do + hash_body = nil + get api_v1_team_users_path(team_id: -1), headers: @valid_headers + expect(response).to have_http_status(404) + expect { hash_body = json }.not_to raise_exception + expect(hash_body['errors'][0]).to include('status': 404) + end + end + describe 'GET user, #show' do it 'When valid request, requested user is member of the same teams' do hash_body = nil