From 80d7f984dbb7792466cb77ececbcbcf5193427b5 Mon Sep 17 00:00:00 2001 From: Kaspars Dambis Date: Fri, 14 Feb 2025 15:56:23 +0200 Subject: [PATCH] Add a unit test for the new filter --- tests/class-two-factor-core.php | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/class-two-factor-core.php b/tests/class-two-factor-core.php index 992ddc60..268432a5 100644 --- a/tests/class-two-factor-core.php +++ b/tests/class-two-factor-core.php @@ -1556,6 +1556,38 @@ public function test_all_sessions_destroyed_when_enabling_2fa_by_admin() { $this->assertCount( 1, $admin_session_manager->get_all(), 'No admin sessions are present first' ); } + public function test_can_filter_registered_providers_for_user() { + $user = self::factory()->user->create_and_get(); + + $this->assertEquals( + Two_Factor_Core::get_providers(), + Two_Factor_Core::get_supported_providers_for_user( $user ), + 'All providers are available by default' + ); + + add_filter( + 'two_factor_providers_for_user', + function( $providers, $user ) { + $this->assertInstanceOf( WP_User::class, $user ); + + return array_diff_key( $providers, array( 'Two_Factor_Email' => null ) ); + }, + 10, + 2 + ); + + $providers = Two_Factor_Core::get_providers(); + unset( $providers['Two_Factor_Email'] ); + + $this->assertEquals( + $providers, + Two_Factor_Core::get_supported_providers_for_user( $user ), + 'Email provider can be disabled for a user' + ); + + remove_all_filters( 'two_factor_providers_for_user' ); + } + /** * Plugin uninstall removes all user meta. *