Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/provisioning_api/appinfo/routes.php3
-rw-r--r--apps/provisioning_api/lib/apps.php10
-rw-r--r--apps/provisioning_api/tests/appstest.php30
-rw-r--r--lib/private/app.php21
-rw-r--r--settings/controller/appsettingscontroller.php6
5 files changed, 38 insertions, 32 deletions
diff --git a/apps/provisioning_api/appinfo/routes.php b/apps/provisioning_api/appinfo/routes.php
index 22a923f5c20..1b9328d608a 100644
--- a/apps/provisioning_api/appinfo/routes.php
+++ b/apps/provisioning_api/appinfo/routes.php
@@ -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);
diff --git a/apps/provisioning_api/lib/apps.php b/apps/provisioning_api/lib/apps.php
index e0fa63cca34..2a3fd414d39 100644
--- a/apps/provisioning_api/lib/apps.php
+++ b/apps/provisioning_api/lib/apps.php
@@ -25,19 +25,23 @@
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'];
diff --git a/apps/provisioning_api/tests/appstest.php b/apps/provisioning_api/tests/appstest.php
index 4ccba704a3a..871158c5545 100644
--- a/apps/provisioning_api/tests/appstest.php
+++ b/apps/provisioning_api/tests/appstest.php
@@ -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'];
diff --git a/lib/private/app.php b/lib/private/app.php
index 5f6ca9596c8..500a60060e6 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -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)) {
diff --git a/settings/controller/appsettingscontroller.php b/settings/controller/appsettingscontroller.php
index d2430f9b559..765fe2d2850 100644
--- a/settings/controller/appsettingscontroller.php
+++ b/settings/controller/appsettingscontroller.php
@@ -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'];
});