FIX: Consistency about our response for invalid user id in `Admin::UsersController`.
This commit is contained in:
parent
ef0e84e3d9
commit
e9ea0102a5
|
@ -26,7 +26,8 @@ class Admin::UsersController < Admin::AdminController
|
||||||
:revoke_api_key,
|
:revoke_api_key,
|
||||||
:anonymize,
|
:anonymize,
|
||||||
:reset_bounce_score,
|
:reset_bounce_score,
|
||||||
:disable_second_factor]
|
:disable_second_factor,
|
||||||
|
:delete_posts_batch]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
users = ::AdminUserIndexQuery.new(params).find_users
|
users = ::AdminUserIndexQuery.new(params).find_users
|
||||||
|
@ -46,8 +47,7 @@ class Admin::UsersController < Admin::AdminController
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete_posts_batch
|
def delete_posts_batch
|
||||||
user = User.find_by(id: params[:user_id])
|
deleted_posts = @user.delete_posts_in_batches(guardian)
|
||||||
deleted_posts = user.delete_posts_in_batches(guardian)
|
|
||||||
# staff action logs will have an entry for each post
|
# staff action logs will have an entry for each post
|
||||||
|
|
||||||
render json: { posts_deleted: deleted_posts.length }
|
render json: { posts_deleted: deleted_posts.length }
|
||||||
|
@ -563,6 +563,7 @@ class Admin::UsersController < Admin::AdminController
|
||||||
|
|
||||||
def fetch_user
|
def fetch_user
|
||||||
@user = User.find_by(id: params[:user_id])
|
@user = User.find_by(id: params[:user_id])
|
||||||
|
raise Discourse::NotFound unless @user
|
||||||
end
|
end
|
||||||
|
|
||||||
def refresh_browser(user)
|
def refresh_browser(user)
|
||||||
|
|
|
@ -241,9 +241,9 @@ RSpec.describe Admin::UsersController do
|
||||||
expect(AdminConfirmation.exists_for?(another_user.id)).to eq(false)
|
expect(AdminConfirmation.exists_for?(another_user.id)).to eq(false)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns a 403 if the username doesn't exist" do
|
it "returns a 404 if the username doesn't exist" do
|
||||||
put "/admin/users/123123/grant_admin.json"
|
put "/admin/users/123123/grant_admin.json"
|
||||||
expect(response.status).to eq(403)
|
expect(response.status).to eq(404)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'updates the admin flag' do
|
it 'updates the admin flag' do
|
||||||
|
@ -300,9 +300,9 @@ RSpec.describe Admin::UsersController do
|
||||||
expect(response.status).to eq(404)
|
expect(response.status).to eq(404)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns a 422 if the username doesn't exist" do
|
it "returns a 404 if the username doesn't exist" do
|
||||||
put "/admin/users/123123/trust_level.json"
|
put "/admin/users/123123/trust_level.json"
|
||||||
expect(response.status).to eq(422)
|
expect(response.status).to eq(404)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "upgrades the user's trust level" do
|
it "upgrades the user's trust level" do
|
||||||
|
@ -347,9 +347,9 @@ RSpec.describe Admin::UsersController do
|
||||||
expect(response.status).to eq(404)
|
expect(response.status).to eq(404)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns a 403 if the username doesn't exist" do
|
it "returns a 404 if the username doesn't exist" do
|
||||||
put "/admin/users/123123/grant_moderation.json"
|
put "/admin/users/123123/grant_moderation.json"
|
||||||
expect(response.status).to eq(403)
|
expect(response.status).to eq(404)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'updates the moderator flag' do
|
it 'updates the moderator flag' do
|
||||||
|
@ -394,7 +394,7 @@ RSpec.describe Admin::UsersController do
|
||||||
|
|
||||||
it "returns a 404 if the user doesn't exist" do
|
it "returns a 404 if the user doesn't exist" do
|
||||||
put "/admin/users/123123/primary_group.json"
|
put "/admin/users/123123/primary_group.json"
|
||||||
expect(response.status).to eq(403)
|
expect(response.status).to eq(404)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "changes the user's primary group" do
|
it "changes the user's primary group" do
|
||||||
|
@ -554,9 +554,9 @@ RSpec.describe Admin::UsersController do
|
||||||
expect(reg_user).not_to be_silenced
|
expect(reg_user).not_to be_silenced
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns a 403 if the user doesn't exist" do
|
it "returns a 404 if the user doesn't exist" do
|
||||||
put "/admin/users/123123/silence.json"
|
put "/admin/users/123123/silence.json"
|
||||||
expect(response.status).to eq(403)
|
expect(response.status).to eq(404)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "punishes the user for spamming" do
|
it "punishes the user for spamming" do
|
||||||
|
@ -626,7 +626,7 @@ RSpec.describe Admin::UsersController do
|
||||||
|
|
||||||
it "returns a 403 if the user doesn't exist" do
|
it "returns a 403 if the user doesn't exist" do
|
||||||
put "/admin/users/123123/unsilence.json"
|
put "/admin/users/123123/unsilence.json"
|
||||||
expect(response.status).to eq(403)
|
expect(response.status).to eq(404)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "unsilences the user" do
|
it "unsilences the user" do
|
||||||
|
@ -943,6 +943,14 @@ RSpec.describe Admin::UsersController do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#delete_posts_batch" do
|
describe "#delete_posts_batch" do
|
||||||
|
describe 'when user is is invalid' do
|
||||||
|
it 'should return the right response' do
|
||||||
|
put "/admin/users/nothing/delete_posts_batch.json"
|
||||||
|
|
||||||
|
expect(response.status).to eq(404)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "when there are user posts" do
|
context "when there are user posts" do
|
||||||
before do
|
before do
|
||||||
post = Fabricate(:post, user: user)
|
post = Fabricate(:post, user: user)
|
||||||
|
@ -951,8 +959,6 @@ RSpec.describe Admin::UsersController do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns how many posts were deleted' do
|
it 'returns how many posts were deleted' do
|
||||||
sign_in(admin)
|
|
||||||
|
|
||||||
put "/admin/users/#{user.id}/delete_posts_batch.json"
|
put "/admin/users/#{user.id}/delete_posts_batch.json"
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect(JSON.parse(response.body)["posts_deleted"]).to eq(3)
|
expect(JSON.parse(response.body)["posts_deleted"]).to eq(3)
|
||||||
|
@ -961,8 +967,6 @@ RSpec.describe Admin::UsersController do
|
||||||
|
|
||||||
context "when there are no posts left to be deleted" do
|
context "when there are no posts left to be deleted" do
|
||||||
it "returns correct json" do
|
it "returns correct json" do
|
||||||
sign_in(admin)
|
|
||||||
|
|
||||||
put "/admin/users/#{user.id}/delete_posts_batch.json"
|
put "/admin/users/#{user.id}/delete_posts_batch.json"
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect(JSON.parse(response.body)["posts_deleted"]).to eq(0)
|
expect(JSON.parse(response.body)["posts_deleted"]).to eq(0)
|
||||||
|
|
Loading…
Reference in New Issue