mirror of
https://github.com/discourse/discourse.git
synced 2025-05-30 15:28:37 +08:00
FIX: Let staged users choose their username (#13678)
When a staged user tried to redeem an invite, a different username was suggested and manually typing the staged username failed because the username was not available.
This commit is contained in:
@ -37,6 +37,7 @@ describe InvitesController do
|
||||
expect(response.body).to have_tag("div#data-preloaded") do |element|
|
||||
json = JSON.parse(element.current_scope.attribute('data-preloaded').value)
|
||||
invite_info = JSON.parse(json['invite_info'])
|
||||
expect(invite_info['username']).to eq(staged_user.username)
|
||||
expect(invite_info['user_fields'][user_field.id.to_s]).to eq('some value')
|
||||
end
|
||||
end
|
||||
@ -757,6 +758,39 @@ describe InvitesController do
|
||||
expect(response.parsed_body['redirect_to']).to eq("/")
|
||||
end
|
||||
end
|
||||
|
||||
context 'staged user' do
|
||||
fab!(:invite) { Fabricate(:invite) }
|
||||
fab!(:staged_user) { Fabricate(:user, staged: true, email: invite.email) }
|
||||
|
||||
it 'can keep the old username' do
|
||||
old_username = staged_user.username
|
||||
|
||||
put "/invites/show/#{invite.invite_key}.json", params: {
|
||||
username: staged_user.username,
|
||||
password: "Password123456",
|
||||
email_token: invite.email_token,
|
||||
}
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
expect(invite.reload.redeemed?).to be_truthy
|
||||
user = invite.invited_users.first.user
|
||||
expect(user.username).to eq(old_username)
|
||||
end
|
||||
|
||||
it 'can change the username' do
|
||||
put "/invites/show/#{invite.invite_key}.json", params: {
|
||||
username: "new_username",
|
||||
password: "Password123456",
|
||||
email_token: invite.email_token,
|
||||
}
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
expect(invite.reload.redeemed?).to be_truthy
|
||||
user = invite.invited_users.first.user
|
||||
expect(user.username).to eq("new_username")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context '#destroy_all_expired' do
|
||||
|
Reference in New Issue
Block a user