Organization users search by username and email

pull/3888/head
Juan Ignacio Sánchez Lara 9 years ago
parent 74027f6e58
commit a1d8037652

@ -88,6 +88,7 @@ WORKING_SPECS_4 = \
spec/queries/carto/visualization_query_builder_spec.rb \
spec/requests/admin/tables_spec.rb \
spec/requests/admin/pages_controller_spec.rb \
spec/requests/carto/api/organizations_controller_spec.rb \
$(NULL)
WORKING_SPECS_5 = \

@ -13,7 +13,11 @@ module Carto
def users
page, per_page, order = page_per_page_order_params(50, :username)
render_jsonp({ users: @organization.users.offset(page - 1).limit(per_page).order(order).map { |u|
query = params[:q]
users_query = @organization.users.offset(page - 1).limit(per_page).order(order)
users_query = users_query.where('(username like ? or email like ?)', "%#{query}%", "#{query}") if query
render_jsonp({ users: users_query.map { |u|
Carto::Api::UserPresenter.new(u).to_poro
} })
end

@ -91,8 +91,6 @@ shared_context 'organization with users helper' do
end
after(:all) do
delete_user_data @org_user_1 if @org_user_1
delete_user_data @org_user_2 if @org_user_2
@organization.delete_cascade
end

@ -8,21 +8,26 @@ describe Carto::Api::OrganizationsController do
include Rack::Test::Methods
include Warden::Test::Helpers
describe 'users' do
describe 'users unauthenticated behaviour' do
it 'returns 401 for not logged users' do
get api_v1_1_organization_users_url(id: @organization.id), @headers
last_response.status.should == 401
end
end
it 'returns 401 for users requesting an organization that they are not owners of' do
describe 'users' do
before(:each) do
login(@org_user_1)
end
it 'returns 401 for users requesting an organization that they are not owners of' do
get api_v1_1_organization_users_url(id: @organization_2.id, api_key: @org_user_1.api_key), @headers
last_response.status.should == 401
end
it 'returns organization users sorted by username' do
login(@org_user_1)
get api_v1_1_organization_users_url(id: @organization.id, api_key: @org_user_1.api_key), @headers
last_response.status.should == 200
json_body = JSON.parse(last_response.body)
@ -32,8 +37,6 @@ describe Carto::Api::OrganizationsController do
end
it 'returns organization users paged' do
login(@org_user_1)
get api_v1_1_organization_users_url(id: @organization.id, api_key: @org_user_1.api_key, page: 1, per_page: 1), @headers
last_response.status.should == 200
json_body = JSON.parse(last_response.body)
@ -49,6 +52,30 @@ describe Carto::Api::OrganizationsController do
ids[0].should == @org_user_2.id
end
it 'returns users matching username query' do
username = @org_user_2.username
[username, username[1, 10], username[-4, 10]].each { |q|
get api_v1_1_organization_users_url(id: @organization.id, api_key: @org_user_1.api_key, q: q), @headers
last_response.status.should == 200
json_body = JSON.parse(last_response.body)
ids = json_body['users'].map { |u| u['id'] }
ids.count.should == 1
ids[0].should == @org_user_2.id
}
end
it 'returns users matching email query' do
email = @org_user_2.email
[email].each { |q|
get api_v1_1_organization_users_url(id: @organization.id, api_key: @org_user_1.api_key, q: q), @headers
last_response.status.should == 200
json_body = JSON.parse(last_response.body)
ids = json_body['users'].map { |u| u['id'] }
ids.count.should == 1
ids[0].should == @org_user_2.id
}
end
end
end

Loading…
Cancel
Save