diff options
author | lain <lain@soykaf.club> | 2020-05-07 08:14:54 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-05-07 08:14:54 +0000 |
commit | f4c2bf0985f3d65d9caa6f02a71c89db9f070fb1 (patch) | |
tree | a7f4ece6dcd0a534b464e455fa382d3ebd8f4d07 /test/mfa_test.exs | |
parent | 68a126317d7cdd670c8e244319da08ff85639d33 (diff) | |
parent | 3d0c567fbc3506770fdac5f1269c45b244928747 (diff) | |
download | pleroma-f4c2bf0985f3d65d9caa6f02a71c89db9f070fb1.tar.gz pleroma-f4c2bf0985f3d65d9caa6f02a71c89db9f070fb1.zip |
Merge branch 'issue/209' into 'develop'
[#209] 2FA/two_factor_authentication support
See merge request pleroma/pleroma!801
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 |