summaryrefslogtreecommitdiffstats
path: root/tests/lib/app.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/app.php')
-rw-r--r--tests/lib/app.php84
1 files changed, 74 insertions, 10 deletions
diff --git a/tests/lib/app.php b/tests/lib/app.php
index 9873d42baf0..e538ebec8a0 100644
--- a/tests/lib/app.php
+++ b/tests/lib/app.php
@@ -337,15 +337,7 @@ class Test_App extends PHPUnit_Framework_TestCase {
\OC_User::setUserId($user);
- $appConfig = $this->getMock(
- '\OC\AppConfig',
- array('getValues'),
- array(\OC_DB::getConnection()),
- '',
- false
- );
-
- $appConfig->expects($this->once())
+ $this->setupAppConfigMock()->expects($this->once())
->method('getValues')
->will($this->returnValue(
array(
@@ -358,7 +350,6 @@ class Test_App extends PHPUnit_Framework_TestCase {
)
)
);
- $this->registerAppConfig($appConfig);
$apps = \OC_App::getEnabledApps(true, $forceAll);
$this->assertEquals($expectedApps, $apps);
@@ -378,6 +369,79 @@ class Test_App extends PHPUnit_Framework_TestCase {
}
/**
+ * Test isEnabledApps() with cache, not re-reading the list of
+ * enabled apps more than once when a user is set.
+ */
+ public function testEnabledAppsCache() {
+ $userManager = \OC::$server->getUserManager();
+ $user1 = $userManager->createUser(self::TEST_USER1, self::TEST_USER1);
+
+ \OC_User::setUserId(self::TEST_USER1);
+
+ $this->setupAppConfigMock()->expects($this->once())
+ ->method('getValues')
+ ->will($this->returnValue(
+ array(
+ 'app3' => 'yes',
+ 'app2' => 'no',
+ )
+ )
+ );
+
+ $apps = \OC_App::getEnabledApps(true);
+ $this->assertEquals(array('files', 'app3'), $apps);
+
+ // mock should not be called again here
+ $apps = \OC_App::getEnabledApps(false);
+ $this->assertEquals(array('files', 'app3'), $apps);
+
+ $this->restoreAppConfig();
+ \OC_User::setUserId(null);
+
+ $user1->delete();
+ // clear user cache...
+ $userManager->delete(self::TEST_USER1);
+ }
+
+ /**
+ * Tests that the apps list is re-requested (not cached) when
+ * no user is set.
+ */
+ public function testEnabledAppsNoCache() {
+ $this->setupAppConfigMock()->expects($this->exactly(2))
+ ->method('getValues')
+ ->will($this->returnValue(
+ array(
+ 'app3' => 'yes',
+ 'app2' => 'no',
+ )
+ )
+ );
+
+ $apps = \OC_App::getEnabledApps(true);
+ $this->assertEquals(array('files', 'app3'), $apps);
+
+ // mock should be called again here
+ $apps = \OC_App::getEnabledApps(false);
+ $this->assertEquals(array('files', 'app3'), $apps);
+
+ $this->restoreAppConfig();
+ }
+
+ private function setupAppConfigMock() {
+ $appConfig = $this->getMock(
+ '\OC\AppConfig',
+ array('getValues'),
+ array(\OC_DB::getConnection()),
+ '',
+ false
+ );
+
+ $this->registerAppConfig($appConfig);
+ return $appConfig;
+ }
+
+ /**
* Register an app config mock for testing purposes.
* @param $appConfig app config mock
*/