Skip to content
代码片段 群组 项目
提交 a45e8d85 编辑于 作者: Serhii Yarynovskyi's avatar Serhii Yarynovskyi 提交者: Doug Stull
浏览文件

Add view and submission events to signup pages

上级 363b07f5
No related branches found
No related tags found
无相关合并请求
......@@ -169,6 +169,7 @@ def sign_in_user_flow(auth_user_class)
# available in the logs for this request.
Gitlab::ApplicationContext.push(user: user)
log_audit_event(user, with: oauth['provider'])
Gitlab::Tracking.event(self.class.name, "#{oauth['provider']}_sso", user: user) if new_user
set_remember_me(user)
......
......@@ -111,8 +111,11 @@ def build_resource(hash = nil)
super
end
# overridden by EE module
def after_request_hook(user)
# overridden by EE module
return unless user.persisted?
Gitlab::Tracking.event(self.class.name, 'successfully_submitted_form', user: user)
end
def after_sign_up_path_for(user)
......@@ -226,12 +229,14 @@ def load_recaptcha
Gitlab::Recaptcha.load_configurations!
end
# overridden by EE module
def set_resource_fields
return unless set_blocked_pending_approval?
resource.state = User::BLOCKED_PENDING_APPROVAL_STATE
end
# overridden by EE module
def set_blocked_pending_approval?
Gitlab::CurrentSettings.require_admin_approval_after_user_signup
end
......
......@@ -10,7 +10,7 @@
stub_feature_flags(arkose_labs_signup_challenge: false)
end
describe 'POST new' do
describe 'POST create' do
let(:user_params) do
build_stubbed(:user)
.slice(:first_name, :last_name, :email, :username, :password)
......@@ -35,5 +35,36 @@
expect(User.last.email_opted_in).to be true
end
end
context 'with snowplow tracking', :snowplow do
subject(:post_create) do
post trial_registrations_path, params: { user: user_params }
end
context 'when the password is weak' do
let(:user_params) { super().merge(password: '1') }
it 'does not track failed form submission' do
post_create
expect_no_snowplow_event(
category: described_class.name,
action: 'successfully_submitted_form'
)
end
end
context 'when the password is not weak' do
it 'tracks successful form submission' do
post_create
expect_snowplow_event(
category: described_class.name,
action: 'successfully_submitted_form',
user: User.find_by(email: user_params[:email])
)
end
end
end
end
end
......@@ -391,6 +391,32 @@ def stub_route_as(path)
end
end
end
context 'with snowplow tracking', :snowplow do
let(:provider) { 'google_oauth2' }
let(:extern_uid) { 'my-uid' }
context 'when sign_in' do
it 'does not track the event' do
post provider
expect_no_snowplow_event
end
end
context 'when sign_up' do
let(:user) { double(email: generate(:email)) }
it 'tracks the event' do
post provider
expect_snowplow_event(
category: described_class.name,
action: "#{provider}_sso",
user: User.find_by(email: user.email)
)
end
end
end
end
describe '#saml' do
......
......@@ -36,7 +36,7 @@
let(:session_params) { {} }
subject { post(:create, params: user_params, session: session_params) }
subject(:post_create) { post(:create, params: user_params, session: session_params) }
context '`blocked_pending_approval` state' do
context 'when the `require_admin_approval_after_user_signup` setting is turned on' do
......@@ -484,18 +484,19 @@
render_views
let_it_be(:new_user_params) { { new_user: base_user_params.merge({ password: "password" }) } }
subject { post(:create, params: new_user_params) }
subject(:post_create) { post(:create, params: new_user_params) }
it 'renders the form with errors' do
expect { subject }.not_to change(User, :count)
expect { post_create }.not_to change(User, :count)
expect(controller.current_user).to be_nil
expect(response).to render_template(:new)
expect(response.body).to include(_('Password must not contain commonly used combinations of words and letters'))
end
it 'tracks the error' do
subject
it 'tracks a weak password error' do
post_create
expect_snowplow_event(
category: 'Gitlab::Tracking::Helpers::WeakPasswordErrorEvent',
action: 'track_weak_password_error',
......@@ -503,16 +504,36 @@
method: 'create'
)
end
it 'does not track failed form submission' do
post_create
expect_no_snowplow_event(
category: described_class.name,
action: 'successfully_submitted_form'
)
end
end
context 'when the password is not weak' do
it 'does not track a weak password error' do
subject
post_create
expect_no_snowplow_event(
category: 'Gitlab::Tracking::Helpers::WeakPasswordErrorEvent',
action: 'track_weak_password_error'
)
end
it 'tracks successful form submission' do
post_create
expect_snowplow_event(
category: described_class.name,
action: 'successfully_submitted_form',
user: User.find_by(email: base_user_params[:email])
)
end
end
context 'with preferred language' do
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册