1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 namespace tool_mfa; 18 19 /** 20 * Tests for plugininfo. 21 * 22 * @package tool_mfa 23 * @author Peter Burnett <peterburnett@catalyst-au.net> 24 * @copyright Catalyst IT 25 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 26 */ 27 class plugininfo_factor_test extends \advanced_testcase { 28 29 /** 30 * Tests getting next user factor 31 * 32 * @covers ::get_next_user_login_factor 33 * @covers ::setup_user_factor 34 * @covers ::get_enabled_factors 35 * @covers ::is_enabled 36 * @covers ::has_setup 37 * @covers ::get_active_user_factor_types 38 */ 39 public function test_get_next_user_login_factor() { 40 41 $this->resetAfterTest(true); 42 43 // Create and login a user. 44 $user = $this->getDataGenerator()->create_user(); 45 $this->setUser($user); 46 47 // Test that with no enabled factors, fallback is returned. 48 $this->assertEquals('fallback', \tool_mfa\plugininfo\factor::get_next_user_login_factor()->name); 49 50 // Setup enabled totp factor for user. 51 set_config('enabled', 1, 'factor_totp'); 52 $totpfactor = \tool_mfa\plugininfo\factor::get_factor('totp'); 53 $totpdata = [ 54 'secret' => 'fakekey', 55 'devicename' => 'fakedevice', 56 ]; 57 $this->assertNotEmpty($totpfactor->setup_user_factor((object) $totpdata)); 58 59 // Test that factor now appears (from STATE_UNKNOWN). 60 $this->assertEquals('totp', \tool_mfa\plugininfo\factor::get_next_user_login_factor()->name); 61 62 // Now pass this factor, check for fallback. 63 $totpfactor->set_state(\tool_mfa\plugininfo\factor::STATE_PASS); 64 $this->assertEquals('fallback', \tool_mfa\plugininfo\factor::get_next_user_login_factor()->name); 65 66 // Add in a no-input factor. 67 set_config('enabled', 1, 'factor_auth'); 68 $this->assertEquals(2, count(\tool_mfa\plugininfo\factor::get_enabled_factors())); 69 70 $authfactor = \tool_mfa\plugininfo\factor::get_factor('auth'); 71 $this->assertTrue($authfactor->is_enabled()); 72 $this->assertFalse($authfactor->has_setup()); 73 74 // Check that the next factor is still the fallback factor. 75 $this->assertEquals(2, count(\tool_mfa\plugininfo\factor::get_active_user_factor_types())); 76 $this->assertEquals('fallback', \tool_mfa\plugininfo\factor::get_next_user_login_factor()->name); 77 } 78 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body