manager = $this->getMockBuilder(IManager::class) ->disableOriginalConstructor() ->getMock(); $this->config = $this->getMockBuilder(IConfig::class) ->getMock(); $this->consoleInput = $this->getMockBuilder(InputInterface::class)->getMock(); $this->consoleOutput = $this->getMockBuilder(OutputInterface::class)->getMock(); $this->command = new SetDefaultModule($this->manager, $this->config); } public function dataSetDefaultModule() { return [ ['ID0', 'ID0', null, null, 'already'], ['ID0', 'ID1', 'ID1', true, 'info'], ['ID0', 'ID1', 'ID1', false, 'error'], ]; } /** * @dataProvider dataSetDefaultModule * * @param string $oldModule * @param string $newModule * @param string $updateModule * @param bool $updateSuccess * @param string $expectedString */ public function testSetDefaultModule($oldModule, $newModule, $updateModule, $updateSuccess, $expectedString): void { $this->consoleInput->expects($this->once()) ->method('getArgument') ->with('module') ->willReturn($newModule); $this->manager->expects($this->once()) ->method('getDefaultEncryptionModuleId') ->willReturn($oldModule); $this->config->expects($this->once()) ->method('getSystemValue') ->with('maintenance', false) ->willReturn(false); if ($updateModule) { $this->manager->expects($this->once()) ->method('setDefaultEncryptionModule') ->with($updateModule) ->willReturn($updateSuccess); } $this->consoleOutput->expects($this->once()) ->method('writeln') ->with($this->stringContains($expectedString)); self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]); } /** * @dataProvider dataSetDefaultModule * * @param string $oldModule * @param string $newModule * @param string $updateModule * @param bool $updateSuccess * @param string $expectedString */ public function testMaintenanceMode($oldModule, $newModule, $updateModule, $updateSuccess, $expectedString): void { $this->consoleInput->expects($this->never()) ->method('getArgument') ->with('module') ->willReturn($newModule); $this->manager->expects($this->never()) ->method('getDefaultEncryptionModuleId') ->willReturn($oldModule); $this->config->expects($this->once()) ->method('getSystemValue') ->with('maintenance', false) ->willReturn(true); $this->consoleOutput->expects($this->exactly(2)) ->method('writeln') ->withConsecutive( [$this->stringContains('Maintenance mode must be disabled when setting default module,')], [$this->stringContains('in order to load the relevant encryption modules correctly.')], ); self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]); } }