]> source.dussan.org Git - nextcloud-server.git/commitdiff
Inject OCSClient
authorLukas Reschke <lukas@owncloud.com>
Tue, 5 Jan 2016 23:03:08 +0000 (00:03 +0100)
committerRoeland Jago Douma <rullzer@owncloud.com>
Wed, 6 Jan 2016 10:40:22 +0000 (11:40 +0100)
Fixes https://github.com/owncloud/core/issues/21451

apps/provisioning_api/appinfo/routes.php
apps/provisioning_api/lib/apps.php
apps/provisioning_api/tests/appstest.php
lib/private/app.php
settings/controller/appsettingscontroller.php

index 22a923f5c20c0c4209256f0851b8732965d060c2..1b9328d608a4a7019c02cc8b14bd99b484379a95 100644 (file)
@@ -62,7 +62,8 @@ API::register('get', '/cloud/groups/{groupid}/subadmins', [$groups, 'getSubAdmin
 
 // Apps
 $apps = new \OCA\Provisioning_API\Apps(
-       \OC::$server->getAppManager()
+       \OC::$server->getAppManager(),
+       \OC::$server->getOcsClient()
 );
 API::register('get', '/cloud/apps', [$apps, 'getApps'], 'provisioning_api', API::ADMIN_AUTH);
 API::register('get', '/cloud/apps/{appid}', [$apps, 'getAppInfo'], 'provisioning_api', API::ADMIN_AUTH);
index e0fa63cca34be120da5185210756f51fa34ec3cb..2a3fd414d39b505cb519f4100bbb0bff5ca9f3c3 100644 (file)
 
 namespace OCA\Provisioning_API;
 
+use OC\OCSClient;
 use \OC_OCS_Result;
 use \OC_App;
 
 class Apps {
-
        /** @var \OCP\App\IAppManager */
        private $appManager;
+       /** @var OCSClient */
+       private $ocsClient;
 
        /**
         * @param \OCP\App\IAppManager $appManager
         */
-       public function __construct(\OCP\App\IAppManager $appManager) {
+       public function __construct(\OCP\App\IAppManager $appManager,
+                                                               OCSClient $ocsClient) {
                $this->appManager = $appManager;
+               $this->ocsClient = $ocsClient;
        }
 
        /**
@@ -45,7 +49,7 @@ class Apps {
         * @return OC_OCS_Result
         */
        public function getApps($parameters) {
-               $apps = OC_App::listAllApps();
+               $apps = OC_App::listAllApps(false, true, $this->ocsClient);
                $list = [];
                foreach($apps as $app) {
                        $list[] = $app['id'];
index 4ccba704a3a777fdd25f56fc2fa6b30ca0454c1b..871158c5545d85b0a38e7b30d69343e72816223e 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 namespace OCA\Provisioning_API\Tests;
+use OC\OCSClient;
 use OCA\Provisioning_API\Apps;
 use OCP\API;
 use OCP\App\IAppManager;
@@ -36,42 +37,43 @@ use OCP\IUserSession;
  * @package OCA\Provisioning_API\Tests
  */
 class AppsTest extends TestCase {
-
        /** @var IAppManager */
        private $appManager;
-
        /** @var Apps */
        private $api;
-
        /** @var IUserSession */
        private $userSession;
+       /** @var OCSClient */
+       private $ocsClient;
 
        public function setup() {
                parent::setup();
                $this->appManager = \OC::$server->getAppManager();
                $this->groupManager = \OC::$server->getGroupManager();
                $this->userSession = \OC::$server->getUserSession();
-               $this->api = new Apps($this->appManager);
+               $this->ocsClient = $this->getMockBuilder('\OC\OCSClient')
+                               ->disableOriginalConstructor()->getMock();
+               $this->api = new Apps($this->appManager, $this->ocsClient);
        }
 
        public function testGetAppInfo() {
                $result = $this->api->getAppInfo(['appid' => 'provisioning_api']);
                $this->assertInstanceOf('OC_OCS_Result', $result);
                $this->assertTrue($result->succeeded());
-
        }
 
        public function testGetAppInfoOnBadAppID() {
-
                $result = $this->api->getAppInfo(['appid' => 'not_provisioning_api']);
                $this->assertInstanceOf('OC_OCS_Result', $result);
                $this->assertFalse($result->succeeded());
                $this->assertEquals(API::RESPOND_NOT_FOUND, $result->getStatusCode());
-
        }
 
        public function testGetApps() {
-
+               $this->ocsClient
+                               ->expects($this->any())
+                               ->method($this->anything())
+                               ->will($this->returnValue(null));
                $user = $this->generateUsers();
                $this->groupManager->get('admin')->addUser($user);
                $this->userSession->setUser($user);
@@ -80,27 +82,27 @@ class AppsTest extends TestCase {
 
                $this->assertTrue($result->succeeded());
                $data = $result->getData();
-               $this->assertEquals(count(\OC_App::listAllApps()), count($data['apps']));
-
+               $this->assertEquals(count(\OC_App::listAllApps(false, true, $this->ocsClient)), count($data['apps']));
        }
 
        public function testGetAppsEnabled() {
-
                $_GET['filter'] = 'enabled';
                $result = $this->api->getApps(['filter' => 'enabled']);
                $this->assertTrue($result->succeeded());
                $data = $result->getData();
                $this->assertEquals(count(\OC_App::getEnabledApps()), count($data['apps']));
-
        }
 
        public function testGetAppsDisabled() {
-
+               $this->ocsClient
+                               ->expects($this->any())
+                               ->method($this->anything())
+                               ->will($this->returnValue(null));
                $_GET['filter'] = 'disabled';
                $result = $this->api->getApps(['filter' => 'disabled']);
                $this->assertTrue($result->succeeded());
                $data = $result->getData();
-               $apps = \OC_App::listAllApps();
+               $apps = \OC_App::listAllApps(false, true, $this->ocsClient);
                $list =  array();
                foreach($apps as $app) {
                        $list[] = $app['id'];
index 5f6ca9596c87b073ca26e9943ff6ed834b8cbf92..500a60060e6f15f0ffe744173d6e64086e61068c 100644 (file)
@@ -760,9 +760,12 @@ class OC_App {
         * @param bool $onlyLocal
         * @param bool $includeUpdateInfo Should we check whether there is an update
         *                                in the app store?
+        * @param OCSClient $ocsClient
         * @return array
         */
-       public static function listAllApps($onlyLocal = false, $includeUpdateInfo = true) {
+       public static function listAllApps($onlyLocal = false,
+                                                                          $includeUpdateInfo = true,
+                                                                          OCSClient $ocsClient) {
                $installedApps = OC_App::getAllApps();
 
                //TODO which apps do we want to blacklist and how do we integrate
@@ -825,7 +828,7 @@ class OC_App {
                if ($onlyLocal) {
                        $remoteApps = [];
                } else {
-                       $remoteApps = OC_App::getAppstoreApps();
+                       $remoteApps = OC_App::getAppstoreApps('approved', null, $ocsClient);
                }
                if ($remoteApps) {
                        // Remove duplicates
@@ -865,20 +868,16 @@ class OC_App {
        /**
         * Get a list of all apps on the appstore
         * @param string $filter
-        * @param string $category
+        * @param string|null $category
+        * @param OCSClient $ocsClient
         * @return array|bool  multi-dimensional array of apps.
         *                     Keys: id, name, type, typename, personid, license, detailpage, preview, changed, description
         */
-       public static function getAppstoreApps($filter = 'approved', $category = null) {
+       public static function getAppstoreApps($filter = 'approved',
+                                                                                  $category = null,
+                                                                                  OCSClient $ocsClient) {
                $categories = [$category];
 
-               $ocsClient = new OCSClient(
-                       \OC::$server->getHTTPClientService(),
-                       \OC::$server->getConfig(),
-                       \OC::$server->getLogger()
-               );
-
-
                if (is_null($category)) {
                        $categoryNames = $ocsClient->getCategories(\OCP\Util::getVersion());
                        if (is_array($categoryNames)) {
index d2430f9b5599d5be04e2aae57a2c077afe592682..765fe2d2850660eb9f69aaf746a8645d9dd2e650 100644 (file)
@@ -218,7 +218,7 @@ class AppSettingsController extends Controller {
                                        break;
                                // not-installed apps
                                case 1:
-                                       $apps = \OC_App::listAllApps(true, $includeUpdateInfo);
+                                       $apps = \OC_App::listAllApps(true, $includeUpdateInfo, $this->ocsClient);
                                        $apps = array_filter($apps, function ($app) {
                                                return !$app['active'];
                                        });
@@ -244,7 +244,7 @@ class AppSettingsController extends Controller {
                                default:
                                        $filter = $this->config->getSystemValue('appstore.experimental.enabled', false) ? 'all' : 'approved';
 
-                                       $apps = \OC_App::getAppstoreApps($filter, $category);
+                                       $apps = \OC_App::getAppstoreApps($filter, $category, $this->ocsClient);
                                        if (!$apps) {
                                                $apps = array();
                                        } else {
@@ -310,7 +310,7 @@ class AppSettingsController extends Controller {
         * @return array
         */
        private function getInstalledApps($includeUpdateInfo = true) {
-               $apps = \OC_App::listAllApps(true, $includeUpdateInfo);
+               $apps = \OC_App::listAllApps(true, $includeUpdateInfo, $this->ocsClient);
                $apps = array_filter($apps, function ($app) {
                        return $app['active'];
                });