mandatoryTwoFactor = $this->createMock(MandatoryTwoFactor::class); $command = new Enforce($this->mandatoryTwoFactor); $this->command = new CommandTester($command); } public function testEnforce() { $this->mandatoryTwoFactor->expects($this->once()) ->method('setState') ->with($this->equalTo(new EnforcementState(true))); $this->mandatoryTwoFactor->expects($this->once()) ->method('getState') ->willReturn(new EnforcementState(true)); $rc = $this->command->execute([ '--on' => true, ]); $this->assertEquals(0, $rc); $display = $this->command->getDisplay(); $this->assertStringContainsString("Two-factor authentication is enforced for all users", $display); } public function testEnforceForOneGroup() { $this->mandatoryTwoFactor->expects($this->once()) ->method('setState') ->with($this->equalTo(new EnforcementState(true, ['twofactorers']))); $this->mandatoryTwoFactor->expects($this->once()) ->method('getState') ->willReturn(new EnforcementState(true, ['twofactorers'])); $rc = $this->command->execute([ '--on' => true, '--group' => ['twofactorers'], ]); $this->assertEquals(0, $rc); $display = $this->command->getDisplay(); $this->assertStringContainsString("Two-factor authentication is enforced for members of the group(s) twofactorers", $display); } public function testEnforceForAllExceptOneGroup() { $this->mandatoryTwoFactor->expects($this->once()) ->method('setState') ->with($this->equalTo(new EnforcementState(true, [], ['yoloers']))); $this->mandatoryTwoFactor->expects($this->once()) ->method('getState') ->willReturn(new EnforcementState(true, [], ['yoloers'])); $rc = $this->command->execute([ '--on' => true, '--exclude' => ['yoloers'], ]); $this->assertEquals(0, $rc); $display = $this->command->getDisplay(); $this->assertStringContainsString("Two-factor authentication is enforced for all users, except members of yoloers", $display); } public function testDisableEnforced() { $this->mandatoryTwoFactor->expects($this->once()) ->method('setState') ->with(new EnforcementState(false)); $this->mandatoryTwoFactor->expects($this->once()) ->method('getState') ->willReturn(new EnforcementState(false)); $rc = $this->command->execute([ '--off' => true, ]); $this->assertEquals(0, $rc); $display = $this->command->getDisplay(); $this->assertStringContainsString("Two-factor authentication is not enforced", $display); } public function testCurrentStateEnabled() { $this->mandatoryTwoFactor->expects($this->once()) ->method('getState') ->willReturn(new EnforcementState(true)); $rc = $this->command->execute([]); $this->assertEquals(0, $rc); $display = $this->command->getDisplay(); $this->assertStringContainsString("Two-factor authentication is enforced for all users", $display); } public function testCurrentStateDisabled() { $this->mandatoryTwoFactor->expects($this->once()) ->method('getState') ->willReturn(new EnforcementState(false)); $rc = $this->command->execute([]); $this->assertEquals(0, $rc); $display = $this->command->getDisplay(); $this->assertStringContainsString("Two-factor authentication is not enforced", $display); } }