mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: : trigger user_updated event only if email changed after user creation.
Follow-up to 1460d7957c
This commit is contained in:
@@ -140,10 +140,17 @@ describe EmailUpdater do
|
||||
context 'confirming a valid token' do
|
||||
it "updates the user's email" do
|
||||
Jobs.expects(:enqueue).once.with(:critical_user_email, has_entries(type: :notify_old_email, to_address: old_email))
|
||||
updater.confirm(@change_req.new_email_token.token)
|
||||
|
||||
event = DiscourseEvent.track_events {
|
||||
updater.confirm(@change_req.new_email_token.token)
|
||||
}.last
|
||||
|
||||
expect(updater.errors).to be_blank
|
||||
expect(user.reload.email).to eq(new_email)
|
||||
|
||||
expect(event[:event_name]).to eq(:user_updated)
|
||||
expect(event[:params].first).to eq(user)
|
||||
|
||||
@change_req.reload
|
||||
expect(@change_req.change_state).to eq(EmailChangeRequest.states[:complete])
|
||||
end
|
||||
@@ -162,10 +169,17 @@ describe EmailUpdater do
|
||||
expect(UserHistory.where(action: UserHistory.actions[:add_email], acting_user_id: user.id).last).to be_present
|
||||
|
||||
Jobs.expects(:enqueue).once.with(:critical_user_email, has_entries(type: :notify_old_email_add, to_address: old_email))
|
||||
updater.confirm(@change_req.new_email_token.token)
|
||||
|
||||
event = DiscourseEvent.track_events {
|
||||
updater.confirm(@change_req.new_email_token.token)
|
||||
}.last
|
||||
|
||||
expect(updater.errors).to be_blank
|
||||
expect(UserEmail.where(user_id: user.id).pluck(:email)).to contain_exactly(user.email, new_email)
|
||||
|
||||
expect(event[:event_name]).to eq(:user_updated)
|
||||
expect(event[:params].first).to eq(user)
|
||||
|
||||
@change_req.reload
|
||||
expect(@change_req.change_state).to eq(EmailChangeRequest.states[:complete])
|
||||
end
|
||||
|
||||
@@ -13,17 +13,10 @@ describe UserEmail do
|
||||
end
|
||||
|
||||
it "allows multiple secondary emails" do
|
||||
events = DiscourseEvent.track_events {
|
||||
Fabricate(:secondary_email, user: user, primary: false)
|
||||
Fabricate(:secondary_email, user: user, primary: false)
|
||||
}
|
||||
Fabricate(:secondary_email, user: user, primary: false)
|
||||
Fabricate(:secondary_email, user: user, primary: false)
|
||||
|
||||
expect(user.user_emails.count).to eq 3
|
||||
expect(events.count).to eq 2
|
||||
|
||||
event = events.first
|
||||
expect(event[:event_name]).to eq(:user_updated)
|
||||
expect(event[:params].first).to eq(user)
|
||||
end
|
||||
|
||||
it "does not allow an invalid email" do
|
||||
|
||||
@@ -2652,11 +2652,17 @@ describe UsersController do
|
||||
expect(user_email.reload.primary).to eq(true)
|
||||
expect(other_email.reload.primary).to eq(false)
|
||||
|
||||
expect { put "/u/#{user.username}/preferences/primary-email.json", params: { email: other_email.email } }
|
||||
.to change { UserHistory.where(action: UserHistory.actions[:update_email], acting_user_id: user.id).count }.by(1)
|
||||
event = DiscourseEvent.track_events {
|
||||
expect { put "/u/#{user.username}/preferences/primary-email.json", params: { email: other_email.email } }
|
||||
.to change { UserHistory.where(action: UserHistory.actions[:update_email], acting_user_id: user.id).count }.by(1)
|
||||
}.last
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
expect(user_email.reload.primary).to eq(false)
|
||||
expect(other_email.reload.primary).to eq(true)
|
||||
|
||||
expect(event[:event_name]).to eq(:user_updated)
|
||||
expect(event[:params].first).to eq(user)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2676,10 +2682,16 @@ describe UsersController do
|
||||
expect(response.status).to eq(428)
|
||||
expect(user.reload.user_emails.pluck(:email)).to contain_exactly(user_email.email, other_email.email)
|
||||
|
||||
expect { delete "/u/#{user.username}/preferences/email.json", params: { email: other_email.email } }
|
||||
.to change { UserHistory.where(action: UserHistory.actions[:destroy_email], acting_user_id: user.id).count }.by(1)
|
||||
event = DiscourseEvent.track_events {
|
||||
expect { delete "/u/#{user.username}/preferences/email.json", params: { email: other_email.email } }
|
||||
.to change { UserHistory.where(action: UserHistory.actions[:destroy_email], acting_user_id: user.id).count }.by(1)
|
||||
}.last
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
expect(user.reload.user_emails.pluck(:email)).to contain_exactly(user_email.email)
|
||||
|
||||
expect(event[:event_name]).to eq(:user_updated)
|
||||
expect(event[:params].first).to eq(user)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -63,14 +63,9 @@ describe UsersEmailController do
|
||||
it 'confirms with a correct token' do
|
||||
user.user_stat.update_columns(bounce_score: 42, reset_bounce_score_after: 1.week.from_now)
|
||||
|
||||
event = DiscourseEvent.track_events {
|
||||
put "/u/confirm-new-email", params: {
|
||||
token: "#{user.email_tokens.last.token}"
|
||||
}
|
||||
}.last
|
||||
|
||||
expect(event[:event_name]).to eq(:user_updated)
|
||||
expect(event[:params].first).to eq(user)
|
||||
put "/u/confirm-new-email", params: {
|
||||
token: "#{user.email_tokens.last.token}"
|
||||
}
|
||||
|
||||
expect(response.status).to eq(302)
|
||||
expect(response.redirect_url).to include("done")
|
||||
|
||||
Reference in New Issue
Block a user