diff options
| author | lain <lain@soykaf.club> | 2020-05-07 15:03:12 +0200 |
|---|---|---|
| committer | lain <lain@soykaf.club> | 2020-05-07 15:03:12 +0200 |
| commit | 7ac0cffb34567dd72877e13968a10d206f643ad8 (patch) | |
| tree | 061fbd748a1b62ddd0555dcb257c39ff5f2ce48a /test/mfa_test.exs | |
| parent | db55dc944581b1d4b50d1608b2e991050ea29bb3 (diff) | |
| parent | b7635bf2b6c5251ffc8f3b3b8e1bc7ee9db83b7e (diff) | |
| download | pleroma-7ac0cffb34567dd72877e13968a10d206f643ad8.tar.gz pleroma-7ac0cffb34567dd72877e13968a10d206f643ad8.zip | |
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into feature/emojireactvalidator
Diffstat (limited to 'test/mfa_test.exs')
| -rw-r--r-- | test/mfa_test.exs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/test/mfa_test.exs b/test/mfa_test.exs new file mode 100644 index 000000000..94bc48c26 --- /dev/null +++ b/test/mfa_test.exs @@ -0,0 +1,53 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.MFATest do + use Pleroma.DataCase + + import Pleroma.Factory + alias Comeonin.Pbkdf2 + alias Pleroma.MFA + + describe "mfa_settings" do + test "returns settings user's" do + user = + insert(:user, + multi_factor_authentication_settings: %MFA.Settings{ + enabled: true, + totp: %MFA.Settings.TOTP{secret: "xx", confirmed: true} + } + ) + + settings = MFA.mfa_settings(user) + assert match?(^settings, %{enabled: true, totp: true}) + end + end + + describe "generate backup codes" do + test "returns backup codes" do + user = insert(:user) + + {:ok, [code1, code2]} = MFA.generate_backup_codes(user) + updated_user = refresh_record(user) + [hash1, hash2] = updated_user.multi_factor_authentication_settings.backup_codes + assert Pbkdf2.checkpw(code1, hash1) + assert Pbkdf2.checkpw(code2, hash2) + end + end + + describe "invalidate_backup_code" do + test "invalid used code" do + user = insert(:user) + + {:ok, _} = MFA.generate_backup_codes(user) + user = refresh_record(user) + assert length(user.multi_factor_authentication_settings.backup_codes) == 2 + [hash_code | _] = user.multi_factor_authentication_settings.backup_codes + + {:ok, user} = MFA.invalidate_backup_code(user, hash_code) + + assert length(user.multi_factor_authentication_settings.backup_codes) == 1 + end + end +end |
