2019-01-27 14:28:57 +03:00
< ? php
2019-01-27 16:47:19 +03:00
declare ( strict_types = 1 );
2019-01-27 14:28:57 +03:00
/**
* @ copyright Copyright ( c ) 2019 , Daniel Kesselberg ( mail @ danielkesselberg . de )
*
* @ license GNU AGPL version 3 or any later version
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation , either version 3 of the
* License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*
*/
namespace Tests\Core\Command\Config ;
use OC\Core\Command\App\Enable ;
use Symfony\Component\Console\Tester\CommandTester ;
use Test\TestCase ;
/**
* Class AppsEnableTest
*
* @ group DB
*/
class AppsEnableTest extends TestCase {
/** @var CommandTester */
private $commandTester ;
2019-11-27 17:27:18 +03:00
protected function setUp () : void {
2019-01-27 14:28:57 +03:00
parent :: setUp ();
$command = new Enable (
\OC :: $server -> getAppManager (),
\OC :: $server -> getGroupManager ()
);
$this -> commandTester = new CommandTester ( $command );
2019-01-27 16:47:19 +03:00
\OC :: $server -> getAppManager () -> disableApp ( 'admin_audit' );
\OC :: $server -> getAppManager () -> disableApp ( 'comments' );
2019-01-27 14:28:57 +03:00
}
/**
* @ dataProvider dataCommandInput
* @ param $appId
* @ param $groups
* @ param $statusCode
* @ param $output
*/
2019-01-27 16:47:19 +03:00
public function testCommandInput ( $appId , $groups , $statusCode , $output ) : void {
2019-01-27 14:28:57 +03:00
$input = [ 'app-id' => $appId ];
if ( is_array ( $groups )) {
$input [ '--groups' ] = $groups ;
}
$this -> commandTester -> execute ( $input );
2019-12-09 00:33:17 +03:00
$this -> assertStringContainsString ( $output , $this -> commandTester -> getDisplay ());
2019-01-27 14:28:57 +03:00
$this -> assertSame ( $statusCode , $this -> commandTester -> getStatusCode ());
}
2019-01-27 16:47:19 +03:00
public function dataCommandInput () : array {
2019-12-09 00:33:17 +03:00
$data = [
2019-01-27 14:28:57 +03:00
[[ 'admin_audit' ], null , 0 , 'admin_audit enabled' ],
[[ 'comments' ], null , 0 , 'comments enabled' ],
2019-01-27 23:53:09 +03:00
[[ 'invalid_app' ], null , 1 , 'Could not download app invalid_app' ],
2019-01-27 14:28:57 +03:00
[[ 'admin_audit' , 'comments' ], null , 0 , " admin_audit enabled \n comments enabled " ],
2019-01-27 23:53:09 +03:00
[[ 'admin_audit' , 'comments' , 'invalid_app' ], null , 1 , " admin_audit enabled \n comments enabled \n Could not download app invalid_app " ],
2019-01-27 14:28:57 +03:00
[[ 'admin_audit' ], [ 'admin' ], 1 , " admin_audit can't be enabled for groups " ],
[[ 'comments' ], [ 'admin' ], 1 , " comments can't be enabled for groups " ],
[[ 'updatenotification' ], [ 'admin' ], 0 , 'updatenotification enabled for groups: admin' ],
2019-03-13 23:43:17 +03:00
[[ 'updatenotification' , 'accessibility' ], [ 'admin' ], 0 , " updatenotification enabled for groups: admin \n accessibility enabled for groups: admin " ],
2019-01-27 14:28:57 +03:00
[[ 'updatenotification' ], [ 'admin' , 'invalid_group' ], 0 , 'updatenotification enabled for groups: admin' ],
2019-03-13 23:43:17 +03:00
[[ 'updatenotification' , 'accessibility' ], [ 'admin' , 'invalid_group' ], 0 , " updatenotification enabled for groups: admin \n accessibility enabled for groups: admin " ],
[[ 'updatenotification' , 'accessibility' , 'invalid_app' ], [ 'admin' , 'invalid_group' ], 1 , " updatenotification enabled for groups: admin \n accessibility enabled for groups: admin \n Could not download app invalid_app " ],
2019-01-27 14:28:57 +03:00
];
2019-12-09 00:33:17 +03:00
if ( getenv ( 'CI' ) === false ) {
/** Tests disabled on drone/ci due to appstore dependency */
$data [] = [[ 'updatenotification' , 'contacts' ], [ 'admin' ], 0 , " updatenotification enabled for groups: admin \n contacts enabled for groups: admin " ];
$data [] = [[ 'updatenotification' , 'contacts' ], [ 'admin' , 'invalid_group' ], 0 , " updatenotification enabled for groups: admin \n contacts enabled for groups: admin " ];
$data [] = [[ 'updatenotification' , 'contacts' , 'invalid_app' ], [ 'admin' , 'invalid_group' ], 1 , " updatenotification enabled for groups: admin \n contacts enabled for groups: admin \n Could not download app invalid_app " ];
}
return $data ;
2019-01-27 14:28:57 +03:00
}
}