fbApp = new FacebookApp('app_id', 'app_secret'); $this->graphApi = new FakeGraphApiForResumableUpload(); $this->client = new FacebookClient($this->graphApi); $this->file = new FacebookFile(__DIR__.'/../foo.txt'); } public function testResumableUploadCanStartTransferAndFinish() { $uploader = new FacebookResumableUploader($this->fbApp, $this->client, 'access_token', 'v2.4'); $endpoint = '/me/videos'; $chunk = $uploader->start($endpoint, $this->file); $this->assertInstanceOf('Facebook\FileUpload\FacebookTransferChunk', $chunk); $this->assertEquals('42', $chunk->getUploadSessionId()); $this->assertEquals('1337', $chunk->getVideoId()); $newChunk = $uploader->transfer($endpoint, $chunk); $this->assertEquals(20, $newChunk->getStartOffset()); $this->assertNotSame($newChunk, $chunk); $finalResponse = $uploader->finish($endpoint, $chunk->getUploadSessionId(), []); $this->assertTrue($finalResponse); } /** * @expectedException \Facebook\Exceptions\FacebookResponseException */ public function testStartWillLetErrorResponsesThrow() { $this->graphApi->failOnStart(); $uploader = new FacebookResumableUploader($this->fbApp, $this->client, 'access_token', 'v2.4'); $uploader->start('/me/videos', $this->file); } public function testFailedResumableTransferWillNotThrowAndReturnSameChunk() { $this->graphApi->failOnTransfer(); $uploader = new FacebookResumableUploader($this->fbApp, $this->client, 'access_token', 'v2.4'); $chunk = new FacebookTransferChunk($this->file, '1', '2', '3', '4'); $newChunk = $uploader->transfer('/me/videos', $chunk); $this->assertSame($newChunk, $chunk); } }