aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/app.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/app.php')
-rw-r--r--tests/lib/app.php546
1 files changed, 0 insertions, 546 deletions
diff --git a/tests/lib/app.php b/tests/lib/app.php
deleted file mode 100644
index e7255ad955a..00000000000
--- a/tests/lib/app.php
+++ /dev/null
@@ -1,546 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012 Bernhard Posselt <dev@bernhard-posselt.com>
- * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-/**
- * Class Test_App
- *
- * @group DB
- */
-class Test_App extends \Test\TestCase {
-
- const TEST_USER1 = 'user1';
- const TEST_USER2 = 'user2';
- const TEST_USER3 = 'user3';
- const TEST_GROUP1 = 'group1';
- const TEST_GROUP2 = 'group2';
-
- function appVersionsProvider() {
- return array(
- // exact match
- array(
- '6.0.0.0',
- array(
- 'requiremin' => '6.0',
- 'requiremax' => '6.0',
- ),
- true
- ),
- // in-between match
- array(
- '6.0.0.0',
- array(
- 'requiremin' => '5.0',
- 'requiremax' => '7.0',
- ),
- true
- ),
- // app too old
- array(
- '6.0.0.0',
- array(
- 'requiremin' => '5.0',
- 'requiremax' => '5.0',
- ),
- false
- ),
- // app too new
- array(
- '5.0.0.0',
- array(
- 'requiremin' => '6.0',
- 'requiremax' => '6.0',
- ),
- false
- ),
- // only min specified
- array(
- '6.0.0.0',
- array(
- 'requiremin' => '6.0',
- ),
- true
- ),
- // only min specified fail
- array(
- '5.0.0.0',
- array(
- 'requiremin' => '6.0',
- ),
- false
- ),
- // only min specified legacy
- array(
- '6.0.0.0',
- array(
- 'require' => '6.0',
- ),
- true
- ),
- // only min specified legacy fail
- array(
- '4.0.0.0',
- array(
- 'require' => '6.0',
- ),
- false
- ),
- // only max specified
- array(
- '5.0.0.0',
- array(
- 'requiremax' => '6.0',
- ),
- true
- ),
- // only max specified fail
- array(
- '7.0.0.0',
- array(
- 'requiremax' => '6.0',
- ),
- false
- ),
- // variations of versions
- // single OC number
- array(
- '4',
- array(
- 'require' => '4.0',
- ),
- true
- ),
- // multiple OC number
- array(
- '4.3.1',
- array(
- 'require' => '4.3',
- ),
- true
- ),
- // single app number
- array(
- '4',
- array(
- 'require' => '4',
- ),
- true
- ),
- // single app number fail
- array(
- '4.3',
- array(
- 'require' => '5',
- ),
- false
- ),
- // complex
- array(
- '5.0.0',
- array(
- 'require' => '4.5.1',
- ),
- true
- ),
- // complex fail
- array(
- '4.3.1',
- array(
- 'require' => '4.3.2',
- ),
- false
- ),
- // two numbers
- array(
- '4.3.1',
- array(
- 'require' => '4.4',
- ),
- false
- ),
- // one number fail
- array(
- '4.3.1',
- array(
- 'require' => '5',
- ),
- false
- ),
- // pre-alpha app
- array(
- '5.0.3',
- array(
- 'require' => '4.93',
- ),
- true
- ),
- // pre-alpha OC
- array(
- '6.90.0.2',
- array(
- 'require' => '6.90',
- ),
- true
- ),
- // pre-alpha OC max
- array(
- '6.90.0.2',
- array(
- 'requiremax' => '7',
- ),
- true
- ),
- // expect same major number match
- array(
- '5.0.3',
- array(
- 'require' => '5',
- ),
- true
- ),
- // expect same major number match
- array(
- '5.0.3',
- array(
- 'requiremax' => '5',
- ),
- true
- ),
- // dependencies versions before require*
- array(
- '6.0.0.0',
- array(
- 'requiremin' => '5.0',
- 'requiremax' => '7.0',
- 'dependencies' => array(
- 'owncloud' => array(
- '@attributes' => array(
- 'min-version' => '7.0',
- 'max-version' => '7.0',
- ),
- ),
- ),
- ),
- false
- ),
- array(
- '6.0.0.0',
- array(
- 'requiremin' => '5.0',
- 'requiremax' => '7.0',
- 'dependencies' => array(
- 'owncloud' => array(
- '@attributes' => array(
- 'min-version' => '5.0',
- 'max-version' => '5.0',
- ),
- ),
- ),
- ),
- false
- ),
- array(
- '6.0.0.0',
- array(
- 'requiremin' => '5.0',
- 'requiremax' => '5.0',
- 'dependencies' => array(
- 'owncloud' => array(
- '@attributes' => array(
- 'min-version' => '5.0',
- 'max-version' => '7.0',
- ),
- ),
- ),
- ),
- true
- ),
- );
- }
-
- /**
- * @dataProvider appVersionsProvider
- */
- public function testIsAppCompatible($ocVersion, $appInfo, $expectedResult) {
- $this->assertEquals($expectedResult, OC_App::isAppCompatible($ocVersion, $appInfo));
- }
-
- /**
- * Test that the isAppCompatible method also supports passing an array
- * as $ocVersion
- */
- public function testIsAppCompatibleWithArray() {
- $ocVersion = array(6);
- $appInfo = array(
- 'requiremin' => '6',
- 'requiremax' => '6',
- );
- $this->assertTrue(OC_App::isAppCompatible($ocVersion, $appInfo));
- }
-
- /**
- * Tests that the app order is correct
- */
- public function testGetEnabledAppsIsSorted() {
- $apps = \OC_App::getEnabledApps();
- // copy array
- $sortedApps = $apps;
- sort($sortedApps);
- // 'files' is always on top
- unset($sortedApps[array_search('files', $sortedApps)]);
- array_unshift($sortedApps, 'files');
- $this->assertEquals($sortedApps, $apps);
- }
-
- /**
- * Providers for the app config values
- */
- function appConfigValuesProvider() {
- return array(
- // logged in user1
- array(
- self::TEST_USER1,
- array(
- 'files',
- 'app1',
- 'app3',
- 'appforgroup1',
- 'appforgroup12',
- 'dav',
- 'federatedfilesharing',
- ),
- false
- ),
- // logged in user2
- array(
- self::TEST_USER2,
- array(
- 'files',
- 'app1',
- 'app3',
- 'appforgroup12',
- 'appforgroup2',
- 'dav',
- 'federatedfilesharing',
- ),
- false
- ),
- // logged in user3
- array(
- self::TEST_USER3,
- array(
- 'files',
- 'app1',
- 'app3',
- 'appforgroup1',
- 'appforgroup12',
- 'appforgroup2',
- 'dav',
- 'federatedfilesharing',
- ),
- false
- ),
- // no user, returns all apps
- array(
- null,
- array(
- 'files',
- 'app1',
- 'app3',
- 'appforgroup1',
- 'appforgroup12',
- 'appforgroup2',
- 'dav',
- 'federatedfilesharing',
- ),
- false,
- ),
- // user given, but ask for all
- array(
- self::TEST_USER1,
- array(
- 'files',
- 'app1',
- 'app3',
- 'appforgroup1',
- 'appforgroup12',
- 'appforgroup2',
- 'dav',
- 'federatedfilesharing',
- ),
- true,
- ),
- );
- }
-
- /**
- * Test enabled apps
- *
- * @dataProvider appConfigValuesProvider
- */
- public function testEnabledApps($user, $expectedApps, $forceAll) {
- $userManager = \OC::$server->getUserManager();
- $groupManager = \OC::$server->getGroupManager();
- $user1 = $userManager->createUser(self::TEST_USER1, self::TEST_USER1);
- $user2 = $userManager->createUser(self::TEST_USER2, self::TEST_USER2);
- $user3 = $userManager->createUser(self::TEST_USER3, self::TEST_USER3);
-
- $group1 = $groupManager->createGroup(self::TEST_GROUP1);
- $group1->addUser($user1);
- $group1->addUser($user3);
- $group2 = $groupManager->createGroup(self::TEST_GROUP2);
- $group2->addUser($user2);
- $group2->addUser($user3);
-
- \OC_User::setUserId($user);
-
- $this->setupAppConfigMock()->expects($this->once())
- ->method('getValues')
- ->will($this->returnValue(
- array(
- 'app3' => 'yes',
- 'app2' => 'no',
- 'app1' => 'yes',
- 'appforgroup1' => '["group1"]',
- 'appforgroup2' => '["group2"]',
- 'appforgroup12' => '["group2","group1"]',
- )
- )
- );
-
- $apps = \OC_App::getEnabledApps(false, $forceAll);
-
- $this->restoreAppConfig();
- \OC_User::setUserId(null);
-
- $user1->delete();
- $user2->delete();
- $user3->delete();
-
- $group1->delete();
- $group2->delete();
-
- $this->assertEquals($expectedApps, $apps);
- }
-
- /**
- * 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();
- $this->assertEquals(array('files', 'app3', 'dav', 'federatedfilesharing',), $apps);
-
- // mock should not be called again here
- $apps = \OC_App::getEnabledApps();
- $this->assertEquals(array('files', 'app3', 'dav', 'federatedfilesharing',), $apps);
-
- $this->restoreAppConfig();
- \OC_User::setUserId(null);
-
- $user1->delete();
- }
-
-
- private function setupAppConfigMock() {
- $appConfig = $this->getMock(
- '\OC\AppConfig',
- array('getValues'),
- array(\OC::$server->getDatabaseConnection()),
- '',
- false
- );
-
- $this->registerAppConfig($appConfig);
- return $appConfig;
- }
-
- /**
- * Register an app config mock for testing purposes.
- *
- * @param $appConfig app config mock
- */
- private function registerAppConfig($appConfig) {
- \OC::$server->registerService('AppConfig', function ($c) use ($appConfig) {
- return $appConfig;
- });
- \OC::$server->registerService('AppManager', function (\OC\Server $c) use ($appConfig) {
- return new \OC\App\AppManager($c->getUserSession(), $appConfig, $c->getGroupManager(), $c->getMemCacheFactory(), $c->getEventDispatcher());
- });
- }
-
- /**
- * Restore the original app config service.
- */
- private function restoreAppConfig() {
- \OC::$server->registerService('AppConfig', function (\OC\Server $c) {
- return new \OC\AppConfig($c->getDatabaseConnection());
- });
- \OC::$server->registerService('AppManager', function (\OC\Server $c) {
- return new \OC\App\AppManager($c->getUserSession(), $c->getAppConfig(), $c->getGroupManager(), $c->getMemCacheFactory(), $c->getEventDispatcher());
- });
-
- // Remove the cache of the mocked apps list with a forceRefresh
- \OC_App::getEnabledApps();
- }
-
- /**
- * Providers for the app data values
- */
- function appDataProvider() {
- return [
- [
- ['description' => " \t This is a multiline \n test with \n \t \n \n some new lines "],
- ['description' => "This is a multiline test with\n\nsome new lines"]
- ],
- [
- ['description' => " \t This is a multiline \n test with \n \t some new lines "],
- ['description' => "This is a multiline test with some new lines"]
- ],
- [
- ['description' => hex2bin('5065726d657420646520732761757468656e7469666965722064616e732070697769676f20646972656374656d656e74206176656320736573206964656e74696669616e7473206f776e636c6f75642073616e73206c65732072657461706572206574206d657420c3a0206a6f757273206365757820636920656e20636173206465206368616e67656d656e74206465206d6f742064652070617373652e0d0a0d')],
- ['description' => "Permet de s'authentifier dans piwigo directement avec ses identifiants owncloud sans les retaper et met à jours ceux ci en cas de changement de mot de passe."]
- ],
- [
- ['not-a-description' => " \t This is a multiline \n test with \n \t some new lines "],
- ['not-a-description' => " \t This is a multiline \n test with \n \t some new lines "]
- ],
- [
- ['description' => [100, 'bla']],
- ['description' => ""]
- ],
- ];
- }
-
- /**
- * Test app info parser
- *
- * @dataProvider appDataProvider
- * @param array $data
- * @param array $expected
- */
- public function testParseAppInfo(array $data, array $expected) {
- $this->assertSame($expected, \OC_App::parseAppInfo($data));
- }
-}
-