request = $this->getMockBuilder(IRequest::class)->getMock(); $this->storage = $this->getMockBuilder(BackupCodeStorage::class) ->disableOriginalConstructor() ->getMock(); $this->userSession = $this->getMockBuilder(IUserSession::class)->getMock(); $this->controller = new SettingsController('twofactor_backupcodes', $this->request, $this->storage, $this->userSession); } public function testCreateCodes(): void { $user = $this->getMockBuilder(IUser::class)->getMock(); $codes = ['a', 'b']; $this->userSession->expects($this->once()) ->method('getUser') ->willReturn($user); $this->storage->expects($this->once()) ->method('createCodes') ->with($user) ->willReturn($codes); $this->storage->expects($this->once()) ->method('getBackupCodesState') ->with($user) ->willReturn(['state']); $expected = [ 'codes' => $codes, 'state' => ['state'], ]; $response = $this->controller->createCodes(); $this->assertInstanceOf(JSONResponse::class, $response); $this->assertEquals($expected, $response->getData()); } }