util = $this->getMockBuilder(Util::class) ->disableOriginalConstructor()->getMock(); $this->config = $this->getMockBuilder(IConfig::class) ->disableOriginalConstructor()->getMock(); $this->questionHelper = $this->getMockBuilder(QuestionHelper::class) ->disableOriginalConstructor()->getMock(); $this->output = $this->getMockBuilder(OutputInterface::class) ->disableOriginalConstructor()->getMock(); $this->input = $this->getMockBuilder(InputInterface::class) ->disableOriginalConstructor()->getMock(); $this->enableMasterKey = new EnableMasterKey($this->util, $this->config, $this->questionHelper); } /** * @dataProvider dataTestExecute * * @param bool $isAlreadyEnabled * @param string $answer */ public function testExecute($isAlreadyEnabled, $answer): void { $this->util->expects($this->once())->method('isMasterKeyEnabled') ->willReturn($isAlreadyEnabled); if ($isAlreadyEnabled) { $this->output->expects($this->once())->method('writeln') ->with('Master key already enabled'); } else { if ($answer === 'y') { $this->questionHelper->expects($this->once())->method('ask')->willReturn(true); $this->config->expects($this->once())->method('setAppValue') ->with('encryption', 'useMasterKey', '1'); } else { $this->questionHelper->expects($this->once())->method('ask')->willReturn(false); $this->config->expects($this->never())->method('setAppValue'); } } $this->invokePrivate($this->enableMasterKey, 'execute', [$this->input, $this->output]); } public function dataTestExecute() { return [ [true, ''], [false, 'y'], [false, 'n'], [false, ''] ]; } }