blob: 3bfab8e39670d84cfd49df59ec580288499a32ff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
require "test_helper"
class OtpEnrollmentsControllerTest < ActionController::TestCase
include AuthenticatedTestHelper
fixtures :users
def setup
login_as :quentin
@user = users(:quentin)
User.authenticate("quentin", "monkey") # ensure digest is migrated
end
test "create requires the current password" do
post :create, params: { :current_password => "wrong" }
assert_nil @user.reload.otp_pending_secret
end
test "create with the password begins enrollment" do
post :create, params: { :current_password => "monkey" }
assert @user.reload.otp_pending_secret.present?
assert_redirected_to otp_enrollment_path
end
test "update with the first code completes enrollment" do
@user.begin_otp_enrollment!
code = ROTP::TOTP.new(@user.reload.otp_pending_secret).now
put :update, params: { :code => code }
assert @user.reload.otp_enrolled?
end
test "destroy needs password and a current code" do
@user.update!(:otp_secret => ROTP::Base32.random)
delete :destroy, params: { :current_password => "monkey", :code => "000000" }
assert @user.reload.otp_enrolled?
code = ROTP::TOTP.new(@user.otp_secret).now
delete :destroy, params: { :current_password => "monkey", :code => code }
assert_not @user.reload.otp_enrolled?
end
end
|