aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2019-09-09 16:50:42 +0200
committerGitHub <noreply@github.com>2019-09-09 16:50:42 +0200
commitbf6082e119d1c2420286dbcdbbfda1b1e196d9a0 (patch)
tree7a6f49b43a978551f9b61e95424c220eec96563f /tests/lib
parent507eb30e1d7ab2ea31934796621cd6614c2af750 (diff)
parent4bd83c9a28daba6abeb7ad822b1bb8879f0639ad (diff)
downloadnextcloud-server-bf6082e119d1c2420286dbcdbbfda1b1e196d9a0.tar.gz
nextcloud-server-bf6082e119d1c2420286dbcdbbfda1b1e196d9a0.zip
Merge pull request #16836 from nextcloud/fix/16724/smb-availability
Fix SMB availability status + higher delay on auth issues
Diffstat (limited to 'tests/lib')
-rw-r--r--tests/lib/Files/Storage/Wrapper/AvailabilityTest.php94
1 files changed, 53 insertions, 41 deletions
diff --git a/tests/lib/Files/Storage/Wrapper/AvailabilityTest.php b/tests/lib/Files/Storage/Wrapper/AvailabilityTest.php
index 5ea7f8403ce..1672d17e36b 100644
--- a/tests/lib/Files/Storage/Wrapper/AvailabilityTest.php
+++ b/tests/lib/Files/Storage/Wrapper/AvailabilityTest.php
@@ -21,29 +21,46 @@
namespace Test\Files\Storage\Wrapper;
+use OC\Files\Cache\Storage as StorageCache;
+use OC\Files\Storage\Temporary;
+use OC\Files\Storage\Wrapper\Availability;
+use OCP\Files\StorageNotAvailableException;
+
class AvailabilityTest extends \Test\TestCase {
- protected function getWrapperInstance() {
- $storage = $this->getMockBuilder('\OC\Files\Storage\Temporary')
- ->disableOriginalConstructor()
- ->getMock();
- $wrapper = new \OC\Files\Storage\Wrapper\Availability(['storage' => $storage]);
- return [$storage, $wrapper];
+
+ /** @var \PHPUnit\Framework\MockObject\MockObject|StorageCache */
+ protected $storageCache;
+ /** @var \PHPUnit\Framework\MockObject\MockObject|Temporary */
+ protected $storage;
+ /** @var Availability */
+ protected $wrapper;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->storageCache = $this->createMock(StorageCache::class);
+
+ $this->storage = $this->createMock(Temporary::class);
+ $this->storage->expects($this->any())
+ ->method('getStorageCache')
+ ->willReturn($this->storageCache);
+
+ $this->wrapper = new Availability(['storage' => $this->storage]);
}
/**
* Storage is available
*/
public function testAvailable() {
- list($storage, $wrapper) = $this->getWrapperInstance();
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('getAvailability')
->willReturn(['available' => true, 'last_checked' => 0]);
- $storage->expects($this->never())
+ $this->storage->expects($this->never())
->method('test');
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('mkdir');
- $wrapper->mkdir('foobar');
+ $this->wrapper->mkdir('foobar');
}
/**
@@ -52,39 +69,37 @@ class AvailabilityTest extends \Test\TestCase {
* @expectedException \OCP\Files\StorageNotAvailableException
*/
public function testUnavailable() {
- list($storage, $wrapper) = $this->getWrapperInstance();
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('getAvailability')
->willReturn(['available' => false, 'last_checked' => time()]);
- $storage->expects($this->never())
+ $this->storage->expects($this->never())
->method('test');
- $storage->expects($this->never())
+ $this->storage->expects($this->never())
->method('mkdir');
- $wrapper->mkdir('foobar');
+ $this->wrapper->mkdir('foobar');
}
/**
* Storage marked unavailable, TTL expired
*/
public function testUnavailableRecheck() {
- list($storage, $wrapper) = $this->getWrapperInstance();
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('getAvailability')
->willReturn(['available' => false, 'last_checked' => 0]);
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('test')
->willReturn(true);
- $storage->expects($this->exactly(2))
+ $this->storage->expects($this->exactly(2))
->method('setAvailability')
->withConsecutive(
[$this->equalTo(false)], // prevents concurrent rechecks
[$this->equalTo(true)] // sets correct availability
);
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('mkdir');
- $wrapper->mkdir('foobar');
+ $this->wrapper->mkdir('foobar');
}
/**
@@ -93,20 +108,19 @@ class AvailabilityTest extends \Test\TestCase {
* @expectedException \OCP\Files\StorageNotAvailableException
*/
public function testAvailableThrowStorageNotAvailable() {
- list($storage, $wrapper) = $this->getWrapperInstance();
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('getAvailability')
->willReturn(['available' => true, 'last_checked' => 0]);
- $storage->expects($this->never())
+ $this->storage->expects($this->never())
->method('test');
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('mkdir')
- ->will($this->throwException(new \OCP\Files\StorageNotAvailableException()));
- $storage->expects($this->once())
+ ->will($this->throwException(new StorageNotAvailableException()));
+ $this->storageCache->expects($this->once())
->method('setAvailability')
->with($this->equalTo(false));
- $wrapper->mkdir('foobar');
+ $this->wrapper->mkdir('foobar');
}
/**
@@ -114,19 +128,18 @@ class AvailabilityTest extends \Test\TestCase {
* Method failure does not indicate storage unavailability
*/
public function testAvailableFailure() {
- list($storage, $wrapper) = $this->getWrapperInstance();
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('getAvailability')
->willReturn(['available' => true, 'last_checked' => 0]);
- $storage->expects($this->never())
+ $this->storage->expects($this->never())
->method('test');
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('mkdir')
->willReturn(false);
- $storage->expects($this->never())
+ $this->storage->expects($this->never())
->method('setAvailability');
- $wrapper->mkdir('foobar');
+ $this->wrapper->mkdir('foobar');
}
/**
@@ -136,18 +149,17 @@ class AvailabilityTest extends \Test\TestCase {
* @expectedException \Exception
*/
public function testAvailableThrow() {
- list($storage, $wrapper) = $this->getWrapperInstance();
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('getAvailability')
->willReturn(['available' => true, 'last_checked' => 0]);
- $storage->expects($this->never())
+ $this->storage->expects($this->never())
->method('test');
- $storage->expects($this->once())
+ $this->storage->expects($this->once())
->method('mkdir')
->will($this->throwException(new \Exception()));
- $storage->expects($this->never())
+ $this->storage->expects($this->never())
->method('setAvailability');
- $wrapper->mkdir('foobar');
+ $this->wrapper->mkdir('foobar');
}
}