Merge pull request #39906 from nextcloud/fix/prevent-warnings-if-attr-unset

Prevent PHP warning when CacheEntry extension keys are not set
pull/39599/head
Ferdinand Thiessen 2023-08-17 11:31:53 +07:00 committed by GitHub
commit 1406eecf6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 4 deletions

@ -149,7 +149,7 @@ class Cache implements ICache {
* get the stored metadata of a file or folder
*
* @param string | int $file either the path of a file or folder or the file id for a file or folder
* @return ICacheEntry|false the cache entry as array of false if the file is not found in the cache
* @return ICacheEntry|false the cache entry as array or false if the file is not found in the cache
*/
public function get($file) {
$query = $this->getQueryBuilder();

@ -114,15 +114,15 @@ class CacheEntry implements ICacheEntry {
}
public function getMetadataEtag(): ?string {
return $this->data['metadata_etag'];
return $this->data['metadata_etag'] ?? null;
}
public function getCreationTime(): ?int {
return $this->data['creation_time'];
return $this->data['creation_time'] ?? null;
}
public function getUploadTime(): ?int {
return $this->data['upload_time'];
return $this->data['upload_time'] ?? null;
}
public function getData() {

@ -98,6 +98,31 @@ class CacheTest extends \Test\TestCase {
$this->assertEquals($cacheData1, $this->cache->get($id1));
}
public function testCacheEntryGetters() {
$file1 = 'foo';
$data1 = ['size' => 100, 'mtime' => 50, 'mimetype' => 'foo/file'];
$id1 = $this->cache->put($file1, $data1);
$entry = $this->cache->get($file1);
$this->assertEquals($entry->getId(), $id1);
$this->assertEquals($entry->getStorageId(), $this->cache->getNumericStorageId());
$this->assertEquals($entry->getPath(), 'foo');
$this->assertEquals($entry->getName(), 'foo');
$this->assertEquals($entry->getMimeType(), 'foo/file');
$this->assertEquals($entry->getMimePart(), 'foo');
$this->assertEquals($entry->getSize(), 100);
$this->assertEquals($entry->getMTime(), 50);
$this->assertEquals($entry->getStorageMTime(), 50);
$this->assertEquals($entry->getEtag(), null);
$this->assertEquals($entry->getPermissions(), 0);
$this->assertEquals($entry->isEncrypted(), false);
$this->assertEquals($entry->getMetadataEtag(), null);
$this->assertEquals($entry->getCreationTime(), null);
$this->assertEquals($entry->getUploadTime(), null);
$this->assertEquals($entry->getUnencryptedSize(), 100);
}
public function testPartial() {
$file1 = 'foo';