public function testRewriteObjectWithNewName() { $sourceBucket = 'bucket'; $sourceObject = 'object.txt'; $bucketConnection = $this->prophesize(ConnectionInterface::class)->reveal(); $destinationBucketName = 'bucket2'; $destinationBucket = new Bucket($bucketConnection, $destinationBucketName); $destinationObject = 'object2.txt'; $acl = 'private'; $rewriteToken = 'abc'; $this->connection->rewriteObject(['sourceBucket' => $sourceBucket, 'sourceObject' => $sourceObject, 'destinationBucket' => $destinationBucketName, 'destinationObject' => $destinationObject, 'destinationPredefinedAcl' => $acl])->willReturn(['rewriteToken' => $rewriteToken])->shouldBeCalledTimes(1); $this->connection->rewriteObject(['sourceBucket' => $sourceBucket, 'sourceObject' => $sourceObject, 'destinationBucket' => $destinationBucketName, 'destinationObject' => $destinationObject, 'destinationPredefinedAcl' => $acl, 'rewriteToken' => $rewriteToken])->willReturn(['resource' => ['bucket' => $destinationBucketName, 'name' => $destinationObject, 'generation' => 1]])->shouldBeCalledTimes(1); $object = new StorageObject($this->connection->reveal(), $sourceObject, $sourceBucket); $rewrittenObject = $object->rewrite($destinationBucket, ['predefinedAcl' => $acl, 'name' => $destinationObject]); $this->assertEquals($destinationBucketName, $rewrittenObject->info()['bucket']); $this->assertEquals($destinationObject, $rewrittenObject->info()['name']); }