public function testRenamesObject()
{
$sourceBucket = 'bucket';
$objectName = 'object.txt';
$newObjectName = 'new-name.txt';
$acl = 'private';
$key = base64_encode('abcd');
$hash = base64_encode('1234');
$this->connection->copyObject(['sourceBucket' => $sourceBucket, 'sourceObject' => $objectName, 'destinationBucket' => $sourceBucket, 'destinationObject' => $newObjectName, 'destinationPredefinedAcl' => $acl, 'httpOptions' => ['headers' => ['x-goog-encryption-algorithm' => 'AES256', 'x-goog-encryption-key' => $key, 'x-goog-encryption-key-sha256' => $hash]]])->willReturn(['bucket' => $sourceBucket, 'name' => $newObjectName, 'generation' => 1])->shouldBeCalledTimes(1);
$this->connection->deleteObject(Argument::any())->willReturn([])->shouldBeCalledTimes(1);
$object = new StorageObject($this->connection->reveal(), $objectName, $sourceBucket);
$copiedObject = $object->rename($newObjectName, ['predefinedAcl' => $acl, 'encryptionKey' => $key, 'encryptionKeySHA256' => $hash]);
$this->assertEquals($sourceBucket, $copiedObject->info()['bucket']);
$this->assertEquals($newObjectName, $copiedObject->info()['name']);
}