diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2018-09-29 18:57:00 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2018-09-30 11:47:29 +0200 |
commit | 259c0ce11dedeacd225c0776bfc783386f061c5f (patch) | |
tree | f4664c1873a3131cecd10af2e6177bdc663e3bde /tests/Core/Command | |
parent | eec7f9ec28ec4fb7f1baa8e3536b74af08a552ec (diff) | |
download | nextcloud-server-259c0ce11dedeacd225c0776bfc783386f061c5f.tar.gz nextcloud-server-259c0ce11dedeacd225c0776bfc783386f061c5f.zip |
Add mandatory 2FA service/class
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'tests/Core/Command')
-rw-r--r-- | tests/Core/Command/TwoFactorAuth/EnforceTest.php | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/tests/Core/Command/TwoFactorAuth/EnforceTest.php b/tests/Core/Command/TwoFactorAuth/EnforceTest.php new file mode 100644 index 00000000000..8d896f2f45c --- /dev/null +++ b/tests/Core/Command/TwoFactorAuth/EnforceTest.php @@ -0,0 +1,110 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace Tests\Core\Command\TwoFactorAuth; + +use OC\Authentication\TwoFactorAuth\MandatoryTwoFactor; +use OC\Core\Command\TwoFactorAuth\Enforce; +use PHPUnit\Framework\MockObject\MockObject; +use Symfony\Component\Console\Tester\CommandTester; +use Test\TestCase; + +class EnforceTest extends TestCase { + + /** @var MandatoryTwoFactor|MockObject */ + private $mandatoryTwoFactor; + + /** @var CommandTester */ + private $command; + + protected function setUp() { + parent::setUp(); + + $this->mandatoryTwoFactor = $this->createMock(MandatoryTwoFactor::class); + $command = new Enforce($this->mandatoryTwoFactor); + + $this->command = new CommandTester($command); + } + + public function testEnforce() { + $this->mandatoryTwoFactor->expects($this->once()) + ->method('setEnforced') + ->with(true); + $this->mandatoryTwoFactor->expects($this->once()) + ->method('isEnforced') + ->willReturn(true); + + $rc = $this->command->execute([ + '--on' => true, + ]); + + $this->assertEquals(0, $rc); + $display = $this->command->getDisplay(); + $this->assertContains("Two-factor authentication is enforced for all users", $display); + } + + public function testDisableEnforced() { + $this->mandatoryTwoFactor->expects($this->once()) + ->method('setEnforced') + ->with(false); + $this->mandatoryTwoFactor->expects($this->once()) + ->method('isEnforced') + ->willReturn(false); + + $rc = $this->command->execute([ + '--off' => true, + ]); + + $this->assertEquals(0, $rc); + $display = $this->command->getDisplay(); + $this->assertContains("Two-factor authentication is not enforced", $display); + } + + public function testCurrentStateEnabled() { + $this->mandatoryTwoFactor->expects($this->once()) + ->method('isEnforced') + ->willReturn(true); + + $rc = $this->command->execute([]); + + $this->assertEquals(0, $rc); + $display = $this->command->getDisplay(); + $this->assertContains("Two-factor authentication is enforced for all users", $display); + } + + public function testCurrentStateDisabled() { + $this->mandatoryTwoFactor->expects($this->once()) + ->method('isEnforced') + ->willReturn(false); + + $rc = $this->command->execute([]); + + $this->assertEquals(0, $rc); + $display = $this->command->getDisplay(); + $this->assertContains("Two-factor authentication is not enforced", $display); + } + +} |