Commit e993ebc2 authored by Marcos Rocha's avatar Marcos Rocha Committed by Ash McKenzie

Search the user by username or email

This MR try to find the user using the username or email address

Changelog: added
MR:
EE: true
parent 7f37c03d
......@@ -24,7 +24,7 @@ module API
if rate_limit_reached
present({ result: true }, with: Entities::CaptchaCheck)
else
user = User.find_by_username(params[:username])
user = ::User.by_login(params[:username])
not_found! 'User' unless user
present(::Users::CaptchaChallengeService.new(user, request.ip).execute, with: Entities::CaptchaCheck)
end
......
......@@ -4,7 +4,8 @@ require 'spec_helper'
RSpec.describe API::CaptchaCheck do
let_it_be(:username) { 'TestCaptcha' }
let_it_be_with_reload(:user) { create(:user, username: username) }
let_it_be(:email) { 'test_email@email.com' }
let_it_be_with_reload(:user) { create(:user, username: username, email: email) }
describe 'GET users/:username/captcha_check' do
context 'when the feature flag arkose_labs_login_challenge is disabled' do
......@@ -41,6 +42,34 @@ RSpec.describe API::CaptchaCheck do
end
end
context 'when the email is valid' do
it 'returns status ok' do
get api("/users/#{email}/captcha_check")
expect(response).to have_gitlab_http_status(:ok)
end
end
context 'when the email is unknown' do
let(:unknown_email) { 'unknown_email@email.com' }
it 'returns status not_found' do
get api("/users/#{unknown_email}/captcha_check")
expect(response).to have_gitlab_http_status(:not_found)
end
end
context 'when the email is invalid' do
let(:invalid_email) { 'invalid_email@' }
it 'returns status not_found' do
get api("/users/#{invalid_email}/captcha_check")
expect(response).to have_gitlab_http_status(:not_found)
end
end
context 'when the user meets the criteria for the captcha check' do
before do
user.last_sign_in_at = nil
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment