Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Fix external share manager tests
  • Loading branch information
tomneedham committed Aug 29, 2017
commit 253d7d69555764938e969aa69d6f55144a781b5c
42 changes: 6 additions & 36 deletions apps/files_sharing/lib/API/Remote.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,12 @@ class Remote {
* @return \OC_OCS_Result
*/
public static function getOpenShares($params) {
$discoveryManager = new DiscoveryManager(
\OC::$server->getMemCacheFactory(),
\OC::$server->getHTTPClientService()
);
$externalManager = new Manager(
\OC::$server->getDatabaseConnection(),
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
\OC::$server->getNotificationManager(),
$discoveryManager,
\OC::$server->getEventDispatcher(),
\OC_User::getUser()
);

Expand All @@ -61,17 +56,12 @@ public static function getOpenShares($params) {
* @return \OC_OCS_Result
*/
public static function acceptShare($params) {
$discoveryManager = new DiscoveryManager(
\OC::$server->getMemCacheFactory(),
\OC::$server->getHTTPClientService()
);
$externalManager = new Manager(
\OC::$server->getDatabaseConnection(),
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
\OC::$server->getNotificationManager(),
$discoveryManager,
\OC::$server->getEventDispatcher(),
\OC_User::getUser()
);

Expand Down Expand Up @@ -103,17 +93,12 @@ public static function acceptShare($params) {
* @return \OC_OCS_Result
*/
public static function declineShare($params) {
$discoveryManager = new DiscoveryManager(
\OC::$server->getMemCacheFactory(),
\OC::$server->getHTTPClientService()
);
$externalManager = new Manager(
\OC::$server->getDatabaseConnection(),
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
\OC::$server->getNotificationManager(),
$discoveryManager,
\OC::$server->getEventDispatcher(),
\OC_User::getUser()
);

Expand Down Expand Up @@ -162,17 +147,12 @@ private static function extendShareInfo($share) {
* @return \OC_OCS_Result
*/
public static function getShares($params) {
$discoveryManager = new DiscoveryManager(
\OC::$server->getMemCacheFactory(),
\OC::$server->getHTTPClientService()
);
$externalManager = new Manager(
\OC::$server->getDatabaseConnection(),
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
\OC::$server->getNotificationManager(),
$discoveryManager,
\OC::$server->getEventDispatcher(),
\OC_User::getUser()
);

Expand All @@ -190,17 +170,12 @@ public static function getShares($params) {
* @return \OC_OCS_Result
*/
public static function getShare($params) {
$discoveryManager = new DiscoveryManager(
\OC::$server->getMemCacheFactory(),
\OC::$server->getHTTPClientService()
);
$externalManager = new Manager(
\OC::$server->getDatabaseConnection(),
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
\OC::$server->getNotificationManager(),
$discoveryManager,
\OC::$server->getEventDispatcher(),
\OC_User::getUser()
);

Expand All @@ -221,17 +196,12 @@ public static function getShare($params) {
* @return \OC_OCS_Result
*/
public static function unshare($params) {
$discoveryManager = new DiscoveryManager(
\OC::$server->getMemCacheFactory(),
\OC::$server->getHTTPClientService()
);
$externalManager = new Manager(
\OC::$server->getDatabaseConnection(),
Filesystem::getMountManager(),
Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
\OC::$server->getNotificationManager(),
$discoveryManager,
\OC::$server->getEventDispatcher(),
\OC_User::getUser()
);

Expand Down
3 changes: 1 addition & 2 deletions apps/files_sharing/lib/Hooks.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,8 @@ public static function deleteUser($params) {
\OC::$server->getDatabaseConnection(),
\OC\Files\Filesystem::getMountManager(),
\OC\Files\Filesystem::getLoader(),
\OC::$server->getHTTPHelper(),
\OC::$server->getNotificationManager(),
$discoveryManager,
\OC::$server->getEventDispatcher(),
$params['uid']);

$manager->removeUserShares($params['uid']);
Expand Down
59 changes: 37 additions & 22 deletions apps/files_sharing/tests/External/ManagerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,13 @@
namespace OCA\Files_Sharing\Tests\External;

use OC\Files\Storage\StorageFactory;
use OCA\FederatedFileSharing\DiscoveryManager;
use OCA\Files_Sharing\External\Manager;
use OCA\Files_Sharing\External\MountProvider;
use OCA\Files_Sharing\Tests\TestCase;
use OCP\Share\Events\AcceptShare;
use OCP\Share\Events\DeclineShare;
use OCP\Share\Events\ShareEvent;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Test\Traits\UserTrait;

/**
Expand All @@ -48,7 +51,7 @@ class ManagerTest extends TestCase {
private $mountManager;

/** @var \PHPUnit_Framework_MockObject_MockObject */
private $httpHelper;
private $eventDispatcher;

private $uid;

Expand All @@ -65,19 +68,15 @@ protected function setUp() {
$this->createUser($this->uid);
$this->user = \OC::$server->getUserManager()->get($this->uid);
$this->mountManager = new \OC\Files\Mount\Manager();
$this->httpHelper = $httpHelper = $this->getMockBuilder('\OC\HTTPHelper')->disableOriginalConstructor()->getMock();
$discoveryManager = new DiscoveryManager(
\OC::$server->getMemCacheFactory(),
\OC::$server->getHTTPClientService()
);
/** @var \OC\HTTPHelper $httpHelper */
$this->eventDispatcher = $eventDispatcher = $this->createMock(EventDispatcherInterface::class);

/** @var EventDispatcherInterface $eventDispatcher */
$this->manager = new Manager(
\OC::$server->getDatabaseConnection(),
$this->mountManager,
new StorageFactory(),
$httpHelper,
\OC::$server->getNotificationManager(),
$discoveryManager,
$eventDispatcher,
$this->uid
);
$this->mountProvider = new MountProvider(\OC::$server->getDatabaseConnection(), function() {
Expand Down Expand Up @@ -131,9 +130,11 @@ public function testAddShare() {
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}');
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1');

$this->httpHelper->expects($this->at(0))
->method('post')
->with($this->stringStartsWith('http://localhost/ocs/v1.php/cloud/shares/' . $openShares[0]['remote_id']), $this->anything());
$this->eventDispatcher->expects($this->at(0))
->method('dispatch')
->with(AcceptShare::class, $this->callback(function($event) use ($openShares) {
return $this->verifyShareEvent($event, $openShares[0], AcceptShare::class); }
));

// Accept the first share
$this->manager->acceptShare($openShares[0]['id']);
Expand Down Expand Up @@ -166,9 +167,11 @@ public function testAddShare() {
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}');
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1');

$this->httpHelper->expects($this->at(0))
->method('post')
->with($this->stringStartsWith('http://localhost/ocs/v1.php/cloud/shares/' . $openShares[1]['remote_id'] . '/decline'), $this->anything());
$this->eventDispatcher->expects($this->at(0))
->method('dispatch')
->with(DeclineShare::class, $this->callback(function($event) use ($openShares) {
return $this->verifyShareEvent($event, $openShares[1], DeclineShare::class); }
));

// Decline the third share
$this->manager->declineShare($openShares[1]['id']);
Expand All @@ -193,12 +196,16 @@ public function testAddShare() {
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}');
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1');

$this->httpHelper->expects($this->at(0))
->method('post')
->with($this->stringStartsWith('http://localhost/ocs/v1.php/cloud/shares/' . $openShares[0]['remote_id'] . '/decline'), $this->anything());
$this->httpHelper->expects($this->at(1))
->method('post')
->with($this->stringStartsWith('http://localhost/ocs/v1.php/cloud/shares/' . $acceptedShares[0]['remote_id'] . '/decline'), $this->anything());
$this->eventDispatcher->expects($this->at(0))
->method('dispatch')
->with(DeclineShare::class, $this->callback(function($event) use ($openShares) {
return $this->verifyShareEvent($event, $openShares[0], DeclineShare::class); }
));
$this->eventDispatcher->expects($this->at(1))
->method('dispatch')
->with(DeclineShare::class, $this->callback(function($event) use ($acceptedShares) {
return $this->verifyShareEvent($event, $acceptedShares[0], DeclineShare::class); }
));

$this->manager->removeUserShares($this->uid);
$this->assertEmpty(self::invokePrivate($this->manager, 'getShares', [null]), 'Asserting all shares for the user have been deleted');
Expand All @@ -210,6 +217,14 @@ public function testAddShare() {
$this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1');
}

/**
* Verify that a share event matches a given share
*
*/
protected function verifyShareEvent(ShareEvent $event, $share, $expectedClass) {
return $share['remote_id'] == $event->getRemoteId() && get_class($event) === $expectedClass;
}

/**
* @param array $expected
* @param array $actual
Expand Down