diff options
Diffstat (limited to 'test/controllers/otp_enrollments_controller_test.rb')
| -rw-r--r-- | test/controllers/otp_enrollments_controller_test.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/controllers/otp_enrollments_controller_test.rb b/test/controllers/otp_enrollments_controller_test.rb new file mode 100644 index 00000000..3bfab8e3 --- /dev/null +++ b/test/controllers/otp_enrollments_controller_test.rb | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | require "test_helper" | ||
| 2 | |||
| 3 | class OtpEnrollmentsControllerTest < ActionController::TestCase | ||
| 4 | include AuthenticatedTestHelper | ||
| 5 | fixtures :users | ||
| 6 | |||
| 7 | def setup | ||
| 8 | login_as :quentin | ||
| 9 | @user = users(:quentin) | ||
| 10 | User.authenticate("quentin", "monkey") # ensure digest is migrated | ||
| 11 | end | ||
| 12 | |||
| 13 | test "create requires the current password" do | ||
| 14 | post :create, params: { :current_password => "wrong" } | ||
| 15 | assert_nil @user.reload.otp_pending_secret | ||
| 16 | end | ||
| 17 | |||
| 18 | test "create with the password begins enrollment" do | ||
| 19 | post :create, params: { :current_password => "monkey" } | ||
| 20 | assert @user.reload.otp_pending_secret.present? | ||
| 21 | assert_redirected_to otp_enrollment_path | ||
| 22 | end | ||
| 23 | |||
| 24 | test "update with the first code completes enrollment" do | ||
| 25 | @user.begin_otp_enrollment! | ||
| 26 | code = ROTP::TOTP.new(@user.reload.otp_pending_secret).now | ||
| 27 | put :update, params: { :code => code } | ||
| 28 | assert @user.reload.otp_enrolled? | ||
| 29 | end | ||
| 30 | |||
| 31 | test "destroy needs password and a current code" do | ||
| 32 | @user.update!(:otp_secret => ROTP::Base32.random) | ||
| 33 | |||
| 34 | delete :destroy, params: { :current_password => "monkey", :code => "000000" } | ||
| 35 | assert @user.reload.otp_enrolled? | ||
| 36 | |||
| 37 | code = ROTP::TOTP.new(@user.otp_secret).now | ||
| 38 | delete :destroy, params: { :current_password => "monkey", :code => code } | ||
| 39 | assert_not @user.reload.otp_enrolled? | ||
| 40 | end | ||
| 41 | end | ||
