From 0a6db3ada6b35b59db86d1950681724fdc627b5c Mon Sep 17 00:00:00 2001
From: Morris Jobke <hey@morrisjobke.de>
Date: Wed, 2 Dec 2015 14:35:38 +0100
Subject: [PATCH] Remove OC_Config from app management template

* add unit test for this case
---
 settings/controller/appsettingscontroller.php |  1 +
 settings/templates/apps.php                   |  2 +-
 .../controller/AppSettingsControllerTest.php  | 42 +++++++++++++++++--
 3 files changed, 40 insertions(+), 5 deletions(-)

diff --git a/settings/controller/appsettingscontroller.php b/settings/controller/appsettingscontroller.php
index bde00df062f..d0e465bfa9c 100644
--- a/settings/controller/appsettingscontroller.php
+++ b/settings/controller/appsettingscontroller.php
@@ -132,6 +132,7 @@ class AppSettingsController extends Controller {
 		$params = [];
 		$params['experimentalEnabled'] = $this->config->getSystemValue('appstore.experimental.enabled', false);
 		$params['category'] = $category;
+		$params['appstoreEnabled'] = $this->config->getSystemValue('appstoreenabled', true) === true;
 		$this->navigationManager->setActiveEntry('core_apps');
 
 		$templateResponse = new TemplateResponse($this->appName, 'apps', $params, 'user');
diff --git a/settings/templates/apps.php b/settings/templates/apps.php
index 3168fd8beeb..7213d552c08 100644
--- a/settings/templates/apps.php
+++ b/settings/templates/apps.php
@@ -29,7 +29,7 @@ script(
 	</li>
 {{/each}}
 
-<?php if(OC_Config::getValue('appstoreenabled', true) === true): ?>
+<?php if($_['appstoreEnabled']): ?>
 	<li>
 		<a class="app-external" target="_blank" href="https://owncloud.org/dev"><?php p($l->t('Developer documentation'));?> ↗</a>
 	</li>
diff --git a/tests/settings/controller/AppSettingsControllerTest.php b/tests/settings/controller/AppSettingsControllerTest.php
index 09595d05661..dba5728ca4b 100644
--- a/tests/settings/controller/AppSettingsControllerTest.php
+++ b/tests/settings/controller/AppSettingsControllerTest.php
@@ -220,9 +220,14 @@ class AppSettingsControllerTest extends TestCase {
 
 	public function testViewApps() {
 		$this->config
-			->expects($this->once())
+			->expects($this->at(0))
 			->method('getSystemValue')
 			->with('appstore.experimental.enabled', false);
+		$this->config
+			->expects($this->at(1))
+			->method('getSystemValue')
+			->with('appstoreenabled', true)
+			->will($this->returnValue(true));
 		$this->navigationManager
 			->expects($this->once())
 			->method('setActiveEntry')
@@ -231,7 +236,7 @@ class AppSettingsControllerTest extends TestCase {
 		$policy = new ContentSecurityPolicy();
 		$policy->addAllowedImageDomain('https://apps.owncloud.com');
 
-		$expected = new TemplateResponse('settings', 'apps', ['experimentalEnabled' => false, 'category' => 'enabled'], 'user');
+		$expected = new TemplateResponse('settings', 'apps', ['experimentalEnabled' => false, 'category' => 'enabled', 'appstoreEnabled' => true], 'user');
 		$expected->setContentSecurityPolicy($policy);
 
 		$this->assertEquals($expected, $this->appSettingsController->viewApps());
@@ -239,9 +244,14 @@ class AppSettingsControllerTest extends TestCase {
 
 	public function testViewAppsNotEnabled() {
 		$this->config
-			->expects($this->once())
+			->expects($this->at(0))
 			->method('getSystemValue')
 			->with('appstore.experimental.enabled', false);
+		$this->config
+			->expects($this->at(1))
+			->method('getSystemValue')
+			->with('appstoreenabled', true)
+			->will($this->returnValue(true));
 		$this->navigationManager
 			->expects($this->once())
 			->method('setActiveEntry')
@@ -250,9 +260,33 @@ class AppSettingsControllerTest extends TestCase {
 		$policy = new ContentSecurityPolicy();
 		$policy->addAllowedImageDomain('https://apps.owncloud.com');
 
-		$expected = new TemplateResponse('settings', 'apps', ['experimentalEnabled' => false, 'category' => 'disabled'], 'user');
+		$expected = new TemplateResponse('settings', 'apps', ['experimentalEnabled' => false, 'category' => 'disabled', 'appstoreEnabled' => true], 'user');
 		$expected->setContentSecurityPolicy($policy);
 
 		$this->assertEquals($expected, $this->appSettingsController->viewApps('disabled'));
 	}
+
+	public function testViewAppsAppstoreNotEnabled() {
+		$this->config
+			->expects($this->at(0))
+			->method('getSystemValue')
+			->with('appstore.experimental.enabled', false);
+		$this->config
+			->expects($this->at(1))
+			->method('getSystemValue')
+			->with('appstoreenabled', true)
+			->will($this->returnValue(false));
+		$this->navigationManager
+			->expects($this->once())
+			->method('setActiveEntry')
+			->with('core_apps');
+
+		$policy = new ContentSecurityPolicy();
+		$policy->addAllowedImageDomain('https://apps.owncloud.com');
+
+		$expected = new TemplateResponse('settings', 'apps', ['experimentalEnabled' => false, 'category' => 'enabled', 'appstoreEnabled' => false], 'user');
+		$expected->setContentSecurityPolicy($policy);
+
+		$this->assertEquals($expected, $this->appSettingsController->viewApps());
+	}
 }
-- 
GitLab