Using token doesn't make much sense when you can generate new tokens right below. closes #8006
51 lines
1.4 KiB
Ruby
51 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
When /^I scan the QR code and fill in a valid TOTP token for "([^"]*)"$/ do |email|
|
|
@me = find_user email
|
|
fill_in "user_code", with: @me.current_otp
|
|
end
|
|
|
|
When /^I fill in a valid TOTP token for "([^"]*)"$/ do |username|
|
|
@me = find_user username
|
|
fill_in "user_otp_attempt", with: @me.current_otp
|
|
end
|
|
|
|
When /^I fill in an invalid TOTP token$/ do
|
|
fill_in "user_otp_attempt", with: "c0ffee"
|
|
end
|
|
|
|
When /^I fill in a recovery code from "([^"]*)"$/ do |username|
|
|
@me = find_user username
|
|
@codes = @me.generate_otp_backup_codes!
|
|
@me.save!
|
|
fill_in "user_otp_attempt", with: @codes.first
|
|
end
|
|
|
|
When /^I confirm activation$/ do
|
|
find(".btn-primary", match: :first).click
|
|
end
|
|
|
|
When /^2fa is activated for "([^"]*)"$/ do |username|
|
|
@me = find_user username
|
|
@me.otp_secret = User.generate_otp_secret(32)
|
|
@me.otp_required_for_login = true
|
|
@me.save!
|
|
end
|
|
|
|
When /^I fill in username "([^"]*)" and password "([^"]*)"$/ do |username, password|
|
|
fill_in "user_username", with: username
|
|
fill_in "user_password", with: password
|
|
end
|
|
|
|
Then /^I should see a list of recovery codes$/ do
|
|
find(".recovery-codes", match: :first)
|
|
find(".recovery-codes li samp", match: :first)
|
|
end
|
|
|
|
When /^I press the recovery code generate button$/ do
|
|
find(".btn-default", match: :first).click
|
|
end
|
|
|
|
def find_user(username)
|
|
User.find_by(username: username) || User.find_by(email: username)
|
|
end
|