diff options
-rw-r--r-- | lib/private/avatar.php | 14 | ||||
-rw-r--r-- | tests/lib/avatartest.php | 30 |
2 files changed, 31 insertions, 13 deletions
diff --git a/lib/private/avatar.php b/lib/private/avatar.php index c87facd25da..966e4903649 100644 --- a/lib/private/avatar.php +++ b/lib/private/avatar.php @@ -124,12 +124,14 @@ class Avatar implements \OCP\IAvatar { * @return void */ public function remove () { - try { - $this->folder->get('avatar.jpg')->delete(); - } catch (\OCP\Files\NotFoundException $e) {} - try { - $this->folder->get('avatar.png')->delete(); - } catch (\OCP\Files\NotFoundException $e) {} + $regex = '/^avatar\.([0-9]+\.)?(jpg|png)$/'; + $avatars = $this->folder->search('avatar'); + + foreach ($avatars as $avatar) { + if (preg_match($regex, $avatar->getName())) { + $avatar->delete(); + } + } } /** diff --git a/tests/lib/avatartest.php b/tests/lib/avatartest.php index 3d77a282a7d..d3e615977cb 100644 --- a/tests/lib/avatartest.php +++ b/tests/lib/avatartest.php @@ -110,13 +110,29 @@ class AvatarTest extends \Test\TestCase { } public function testSetAvatar() { - $oldFile = $this->getMock('\OCP\Files\File'); - $this->folder->method('get') - ->will($this->returnValueMap([ - ['avatar.jpg', $oldFile], - ['avatar.png', $oldFile], - ])); - $oldFile->expects($this->exactly(2))->method('delete'); + $avatarFileJPG = $this->getMock('\OCP\Files\File'); + $avatarFileJPG->method('getName') + ->willReturn('avatar.jpg'); + $avatarFileJPG->expects($this->once())->method('delete'); + + $avatarFilePNG = $this->getMock('\OCP\Files\File'); + $avatarFilePNG->method('getName') + ->willReturn('avatar.png'); + $avatarFilePNG->expects($this->once())->method('delete'); + + $resizedAvatarFile = $this->getMock('\OCP\Files\File'); + $resizedAvatarFile->method('getName') + ->willReturn('avatar.32.jpg'); + $resizedAvatarFile->expects($this->once())->method('delete'); + + $nonAvatarFile = $this->getMock('\OCP\Files\File'); + $nonAvatarFile->method('getName') + ->willReturn('avatarX'); + $nonAvatarFile->expects($this->never())->method('delete'); + + $this->folder->method('search') + ->with('avatar') + ->willReturn([$avatarFileJPG, $avatarFilePNG, $resizedAvatarFile, $nonAvatarFile]); $newFile = $this->getMock('\OCP\Files\File'); $this->folder->expects($this->once()) |