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']);
}