chore(legacy): Introduce public version ct plass and drop version methods from OC_Util

Signed-off-by: Julius Knorr <jus@bitgrid.net>
pull/48152/head
Julius Knorr 2 months ago
parent 7ff911665e
commit 606241caeb
No known key found for this signature in database
GPG Key ID: 4C614C6ED2CDE6DF
  1. 16
      apps/settings/lib/Settings/Admin/Overview.php
  2. 2
      apps/settings/templates/settings/admin/overview.php
  3. 21
      apps/theming/lib/Util.php
  4. 3
      apps/theming/tests/CapabilitiesTest.php
  5. 3
      apps/theming/tests/IconBuilderTest.php
  6. 2
      apps/theming/tests/Themes/DarkHighContrastThemeTest.php
  7. 2
      apps/theming/tests/Themes/DarkThemeTest.php
  8. 2
      apps/theming/tests/Themes/DefaultThemeTest.php
  9. 2
      apps/theming/tests/Themes/DyslexiaFontTest.php
  10. 2
      apps/theming/tests/Themes/HighContrastThemeTest.php
  11. 3
      apps/theming/tests/UtilTest.php
  12. 11
      apps/updatenotification/lib/BackgroundJob/UpdateAvailableNotifications.php
  13. 8
      apps/updatenotification/tests/BackgroundJob/UpdateAvailableNotificationsTest.php
  14. 5
      apps/user_ldap/lib/Controller/ConfigAPIController.php
  15. 7
      core/Command/Status.php
  16. 3
      core/Controller/OCJSController.php
  17. 11
      core/Controller/OCSController.php
  18. 4
      core/Controller/WhatsNewController.php
  19. 1
      core/ajax/update.php
  20. 8
      lib/base.php
  21. 1
      lib/composer/composer/autoload_classmap.php
  22. 1
      lib/composer/composer/autoload_static.php
  23. 4
      lib/private/App/AppStore/Fetcher/Fetcher.php
  24. 4
      lib/private/Console/Application.php
  25. 4
      lib/private/IntegrityCheck/Checker.php
  26. 9
      lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php
  27. 12
      lib/private/Server.php
  28. 5
      lib/private/Setup.php
  29. 8
      lib/private/Template/JSConfigHelper.php
  30. 2
      lib/private/TemplateLayout.php
  31. 6
      lib/private/Updater.php
  32. 6
      lib/private/Updater/VersionCheck.php
  33. 9
      lib/private/legacy/OC_Defaults.php
  34. 84
      lib/private/legacy/OC_Util.php
  35. 102
      lib/public/ServerVersion.php
  36. 10
      lib/public/Util.php
  37. 2
      status.php
  38. 28
      tests/Core/Controller/OCSControllerTest.php
  39. 44
      tests/lib/IntegrityCheck/CheckerTest.php
  40. 4
      tests/lib/IntegrityCheck/Helpers/EnvironmentHelperTest.php
  41. 30
      tests/lib/PublicNamespace/UtilTest.php
  42. 23
      tests/lib/Updater/VersionCheckTest.php
  43. 25
      tests/lib/UpdaterTest.php
  44. 10
      tests/lib/UtilTest.php

@ -8,18 +8,15 @@ namespace OCA\Settings\Settings\Admin;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IConfig;
use OCP\IL10N;
use OCP\ServerVersion;
use OCP\Settings\IDelegatedSettings;
class Overview implements IDelegatedSettings {
/** @var IConfig */
private $config;
/** @var IL10N $l */
private $l;
public function __construct(IConfig $config, IL10N $l) {
$this->config = $config;
$this->l = $l;
public function __construct(
private ServerVersion $serverVersion,
private IConfig $config,
private IL10N $l,
) {
}
/**
@ -28,6 +25,7 @@ class Overview implements IDelegatedSettings {
public function getForm() {
$parameters = [
'checkForWorkingWellKnownSetup' => $this->config->getSystemValue('check_for_working_wellknown_setup', true),
'version' => $this->serverVersion->getHumanVersion(),
];
return new TemplateResponse('settings', 'settings/admin/overview', $parameters, '');

@ -57,5 +57,5 @@
<div id="version" class="section">
<!-- should be the last part, so Updater can follow if enabled (it has no heading therefore). -->
<h2><?php p($l->t('Version'));?></h2>
<p><strong><a href="<?php print_unescaped($theme->getBaseUrl()); ?>" rel="noreferrer noopener" target="_blank">Nextcloud Hub 9</a> (<?php p(OC_Util::getHumanVersion()) ?>)</strong></p>
<p><strong><a href="<?php print_unescaped($theme->getBaseUrl()); ?>" rel="noreferrer noopener" target="_blank">Nextcloud Hub 9</a> (<?php p($_['version']) ?>)</strong></p>
</div>

@ -13,19 +13,16 @@ use OCP\Files\NotFoundException;
use OCP\Files\SimpleFS\ISimpleFile;
use OCP\IConfig;
use OCP\IUserSession;
use OCP\ServerVersion;
class Util {
private IConfig $config;
private IAppManager $appManager;
private IAppData $appData;
private ImageManager $imageManager;
public function __construct(IConfig $config, IAppManager $appManager, IAppData $appData, ImageManager $imageManager) {
$this->config = $config;
$this->appManager = $appManager;
$this->appData = $appData;
$this->imageManager = $imageManager;
public function __construct(
private ServerVersion $serverVersion,
private IConfig $config,
private IAppManager $appManager,
private IAppData $appData,
private ImageManager $imageManager,
) {
}
/**
@ -311,7 +308,7 @@ class Util {
if (!is_null($user)) {
$userId = $user->getUID();
}
$serverVersion = \OC_Util::getVersionString();
$serverVersion = $this->serverVersion->getVersionString();
$themingAppVersion = $this->appManager->getAppVersion('theming');
$userCacheBuster = '';
if ($userId) {

@ -14,6 +14,7 @@ use OCP\Files\IAppData;
use OCP\IConfig;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\ServerVersion;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
@ -169,7 +170,7 @@ class CapabilitiesTest extends TestCase {
->method('getLogo')
->willReturn($logo);
$util = new Util($this->config, $this->createMock(IAppManager::class), $this->createMock(IAppData::class), $this->createMock(ImageManager::class));
$util = new Util($this->createMock(ServerVersion::class), $this->config, $this->createMock(IAppManager::class), $this->createMock(IAppData::class), $this->createMock(ImageManager::class));
$this->util->expects($this->exactly(3))
->method('elementColor')
->with($color)

@ -13,6 +13,7 @@ use OCA\Theming\Util;
use OCP\App\IAppManager;
use OCP\Files\NotFoundException;
use OCP\IConfig;
use OCP\ServerVersion;
use PHPUnit\Framework\Error\Warning;
use Test\TestCase;
@ -41,7 +42,7 @@ class IconBuilderTest extends TestCase {
$this->themingDefaults = $this->createMock(ThemingDefaults::class);
$this->appManager = $this->createMock(IAppManager::class);
$this->imageManager = $this->createMock(ImageManager::class);
$this->util = new Util($this->config, $this->appManager, $this->appData, $this->imageManager);
$this->util = new Util($this->createMock(ServerVersion::class), $this->config, $this->appManager, $this->appData, $this->imageManager);
$this->iconBuilder = new IconBuilder($this->themingDefaults, $this->util, $this->imageManager);
}

@ -18,6 +18,7 @@ use OCP\IConfig;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\ServerVersion;
use PHPUnit\Framework\MockObject\MockObject;
class DarkHighContrastThemeTest extends AccessibleThemeTestCase {
@ -49,6 +50,7 @@ class DarkHighContrastThemeTest extends AccessibleThemeTestCase {
$this->appManager = $this->createMock(IAppManager::class);
$this->util = new Util(
$this->createMock(ServerVersion::class),
$this->config,
$this->appManager,
$this->createMock(IAppData::class),

@ -18,6 +18,7 @@ use OCP\IConfig;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\ServerVersion;
use PHPUnit\Framework\MockObject\MockObject;
class DarkThemeTest extends AccessibleThemeTestCase {
@ -46,6 +47,7 @@ class DarkThemeTest extends AccessibleThemeTestCase {
$this->appManager = $this->createMock(IAppManager::class);
$this->util = new Util(
$this->createMock(ServerVersion::class),
$this->config,
$this->appManager,
$this->createMock(IAppData::class),

@ -18,6 +18,7 @@ use OCP\IConfig;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\ServerVersion;
use PHPUnit\Framework\MockObject\MockObject;
class DefaultThemeTest extends AccessibleThemeTestCase {
@ -46,6 +47,7 @@ class DefaultThemeTest extends AccessibleThemeTestCase {
$this->appManager = $this->createMock(IAppManager::class);
$this->util = new Util(
$this->createMock(ServerVersion::class),
$this->config,
$this->appManager,
$this->createMock(IAppData::class),

@ -19,6 +19,7 @@ use OCP\IL10N;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\ServerVersion;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
@ -49,6 +50,7 @@ class DyslexiaFontTest extends TestCase {
$this->appManager = $this->createMock(IAppManager::class);
$util = new Util(
$this->createMock(ServerVersion::class),
$this->config,
$this->appManager,
$this->createMock(IAppData::class),

@ -18,6 +18,7 @@ use OCP\IConfig;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\ServerVersion;
use PHPUnit\Framework\MockObject\MockObject;
class HighContrastThemeTest extends AccessibleThemeTestCase {
@ -49,6 +50,7 @@ class HighContrastThemeTest extends AccessibleThemeTestCase {
$this->appManager = $this->createMock(IAppManager::class);
$this->util = new Util(
$this->createMock(ServerVersion::class),
$this->config,
$this->appManager,
$this->createMock(IAppData::class),

@ -13,6 +13,7 @@ use OCP\Files\NotFoundException;
use OCP\Files\SimpleFS\ISimpleFile;
use OCP\Files\SimpleFS\ISimpleFolder;
use OCP\IConfig;
use OCP\ServerVersion;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
@ -30,7 +31,7 @@ class UtilTest extends TestCase {
$this->appData = $this->createMock(IAppData::class);
$this->appManager = \OCP\Server::get(IAppManager::class);
$this->imageManager = $this->createMock(ImageManager::class);
$this->util = new Util($this->config, $this->appManager, $this->appData, $this->imageManager);
$this->util = new Util($this->createMock(ServerVersion::class), $this->config, $this->appManager, $this->appData, $this->imageManager);
}
public function dataColorContrast() {

@ -18,6 +18,7 @@ use OCP\IConfig;
use OCP\IGroup;
use OCP\IGroupManager;
use OCP\Notification\IManager;
use OCP\ServerVersion;
class UpdateAvailableNotifications extends TimedJob {
protected $connectionNotifications = [3, 7, 14, 30];
@ -27,6 +28,7 @@ class UpdateAvailableNotifications extends TimedJob {
public function __construct(
ITimeFactory $timeFactory,
protected ServerVersion $serverVersion,
protected IConfig $config,
protected IAppConfig $appConfig,
protected IManager $notificationManager,
@ -64,7 +66,7 @@ class UpdateAvailableNotifications extends TimedJob {
* Check for ownCloud update
*/
protected function checkCoreUpdate() {
if (\in_array($this->getChannel(), ['daily', 'git'], true)) {
if (\in_array($this->serverVersion->getChannel(), ['daily', 'git'], true)) {
// "These aren't the update channels you're looking for." - Ben Obi-Wan Kenobi
return;
}
@ -220,13 +222,6 @@ class UpdateAvailableNotifications extends TimedJob {
$this->notificationManager->markProcessed($notification);
}
/**
* @return string
*/
protected function getChannel(): string {
return \OC_Util::getChannel();
}
/**
* @param string $app
* @return string|false

@ -20,10 +20,12 @@ use OCP\IGroupManager;
use OCP\IUser;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
use OCP\ServerVersion;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class UpdateAvailableNotificationsTest extends TestCase {
private ServerVersion $serverVersion;
private IConfig|MockObject $config;
private IManager|MockObject $notificationManager;
private IGroupManager|MockObject $groupManager;
@ -36,6 +38,7 @@ class UpdateAvailableNotificationsTest extends TestCase {
protected function setUp(): void {
parent::setUp();
$this->serverVersion = $this->createMock(ServerVersion::class);
$this->config = $this->createMock(IConfig::class);
$this->appConfig = $this->createMock(IAppConfig::class);
$this->notificationManager = $this->createMock(IManager::class);
@ -54,6 +57,7 @@ class UpdateAvailableNotificationsTest extends TestCase {
if (empty($methods)) {
return new UpdateAvailableNotifications(
$this->timeFactory,
$this->serverVersion,
$this->config,
$this->appConfig,
$this->notificationManager,
@ -67,6 +71,7 @@ class UpdateAvailableNotificationsTest extends TestCase {
return $this->getMockBuilder(UpdateAvailableNotifications::class)
->setConstructorArgs([
$this->timeFactory,
$this->serverVersion,
$this->config,
$this->appConfig,
$this->notificationManager,
@ -158,13 +163,12 @@ class UpdateAvailableNotificationsTest extends TestCase {
*/
public function testCheckCoreUpdate(string $channel, $versionCheck, $version, $readableVersion, $errorDays): void {
$job = $this->getJob([
'getChannel',
'createNotifications',
'clearErrorNotifications',
'sendErrorNotifications',
]);
$job->expects($this->once())
$this->serverVersion->expects($this->once())
->method('getChannel')
->willReturn($channel);

@ -21,6 +21,7 @@ use OCP\AppFramework\OCS\OCSNotFoundException;
use OCP\IRequest;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\ServerVersion;
use Psr\Log\LoggerInterface;
class ConfigAPIController extends OCSController {
@ -31,6 +32,7 @@ class ConfigAPIController extends OCSController {
IUserSession $userSession,
IUserManager $userManager,
Manager $keyManager,
ServerVersion $serverVersion,
private Helper $ldapHelper,
private LoggerInterface $logger,
private ConnectionFactory $connectionFactory,
@ -41,7 +43,8 @@ class ConfigAPIController extends OCSController {
$capabilitiesManager,
$userSession,
$userManager,
$keyManager
$keyManager,
$serverVersion,
);
}

@ -7,9 +7,9 @@
*/
namespace OC\Core\Command;
use OC_Util;
use OCP\Defaults;
use OCP\IConfig;
use OCP\ServerVersion;
use OCP\Util;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
@ -19,6 +19,7 @@ class Status extends Base {
public function __construct(
private IConfig $config,
private Defaults $themingDefaults,
private ServerVersion $serverVersion,
) {
parent::__construct('status');
}
@ -41,8 +42,8 @@ class Status extends Base {
$needUpgrade = Util::needUpgrade();
$values = [
'installed' => $this->config->getSystemValueBool('installed', false),
'version' => implode('.', Util::getVersion()),
'versionstring' => OC_Util::getVersionString(),
'version' => implode('.', $this->serverVersion->getVersion()),
'versionstring' => $this->serverVersion->getVersionString(),
'edition' => '',
'maintenance' => $maintenanceMode,
'needsDbUpgrade' => $needUpgrade,

@ -27,6 +27,7 @@ use OCP\ISession;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\L10N\IFactory;
use OCP\ServerVersion;
#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
class OCJSController extends Controller {
@ -48,10 +49,12 @@ class OCJSController extends Controller {
IInitialStateService $initialStateService,
IProvider $tokenProvider,
FilenameValidator $filenameValidator,
ServerVersion $serverVersion,
) {
parent::__construct($appName, $request);
$this->helper = new JSConfigHelper(
$serverVersion,
$l10nFactory->get('lib'),
$defaults,
$appManager,

@ -16,6 +16,7 @@ use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\ServerVersion;
class OCSController extends \OCP\AppFramework\OCSController {
public function __construct(
@ -25,6 +26,7 @@ class OCSController extends \OCP\AppFramework\OCSController {
private IUserSession $userSession,
private IUserManager $userManager,
private Manager $keyManager,
private ServerVersion $serverVersion,
) {
parent::__construct($appName, $request);
}
@ -55,12 +57,11 @@ class OCSController extends \OCP\AppFramework\OCSController {
#[ApiRoute(verb: 'GET', url: '/capabilities', root: '/cloud')]
public function getCapabilities(): DataResponse {
$result = [];
[$major, $minor, $micro] = \OCP\Util::getVersion();
$result['version'] = [
'major' => (int)$major,
'minor' => (int)$minor,
'micro' => (int)$micro,
'string' => \OC_Util::getVersionString(),
'major' => $this->serverVersion->getMajorVersion(),
'minor' => $this->serverVersion->getMinorVersion(),
'micro' => $this->serverVersion->getPatchVersion(),
'string' => $this->serverVersion->getVersionString(),
'edition' => '',
'extendedSupport' => \OCP\Util::hasExtendedSupport()
];

@ -19,6 +19,7 @@ use OCP\IRequest;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\L10N\IFactory;
use OCP\ServerVersion;
class WhatsNewController extends OCSController {
public function __construct(
@ -28,12 +29,13 @@ class WhatsNewController extends OCSController {
private IUserSession $userSession,
IUserManager $userManager,
Manager $keyManager,
ServerVersion $serverVersion,
private IConfig $config,
private ChangesCheck $whatsNewService,
private IFactory $langFactory,
private Defaults $defaults,
) {
parent::__construct($appName, $request, $capabilitiesManager, $userSession, $userManager, $keyManager);
parent::__construct($appName, $request, $capabilitiesManager, $userSession, $userManager, $keyManager, $serverVersion);
}
/**

@ -91,6 +91,7 @@ if (\OCP\Util::needUpgrade()) {
$config = Server::get(IConfig::class);
$updater = new \OC\Updater(
Server::get(\OCP\ServerVersion::class),
$config,
Server::get(IAppConfig::class),
\OC::$server->getIntegrityCodeChecker(),

@ -292,10 +292,12 @@ class OC {
http_response_code(503);
header('Retry-After: 120');
$serverVersion = \OCP\Server::get(\OCP\ServerVersion::class);
// render error page
$template = new OC_Template('', 'update.use-cli', 'guest');
$template->assign('productName', 'nextcloud'); // for now
$template->assign('version', OC_Util::getVersionString());
$template->assign('version', $serverVersion->getVersionString());
$template->assign('tooBig', $tooBig);
$template->assign('cliUpgradeLink', $cliUpgradeLink);
@ -321,7 +323,7 @@ class OC {
$appManager = Server::get(\OCP\App\IAppManager::class);
$tmpl = new OC_Template('', 'update.admin', 'guest');
$tmpl->assign('version', OC_Util::getVersionString());
$tmpl->assign('version', \OCP\Server::get(\OCP\ServerVersion::class)->getVersionString());
$tmpl->assign('isAppsOnlyUpgrade', $isAppsOnlyUpgrade);
// get third party apps
@ -663,7 +665,7 @@ class OC {
if (!function_exists('simplexml_load_file')) {
throw new \OCP\HintException('The PHP SimpleXML/PHP-XML extension is not installed.', 'Install the extension or make sure it is enabled.');
}
OC_App::loadApps(['session']);
if (!self::$CLI) {
self::initSession();

@ -688,6 +688,7 @@ return array(
'OCP\\Security\\VerificationToken\\IVerificationToken' => $baseDir . '/lib/public/Security/VerificationToken/IVerificationToken.php',
'OCP\\Security\\VerificationToken\\InvalidTokenException' => $baseDir . '/lib/public/Security/VerificationToken/InvalidTokenException.php',
'OCP\\Server' => $baseDir . '/lib/public/Server.php',
'OCP\\ServerVersion' => $baseDir . '/lib/public/ServerVersion.php',
'OCP\\Session\\Exceptions\\SessionNotAvailableException' => $baseDir . '/lib/public/Session/Exceptions/SessionNotAvailableException.php',
'OCP\\Settings\\DeclarativeSettingsTypes' => $baseDir . '/lib/public/Settings/DeclarativeSettingsTypes.php',
'OCP\\Settings\\Events\\DeclarativeSettingsGetValueEvent' => $baseDir . '/lib/public/Settings/Events/DeclarativeSettingsGetValueEvent.php',

@ -721,6 +721,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OCP\\Security\\VerificationToken\\IVerificationToken' => __DIR__ . '/../../..' . '/lib/public/Security/VerificationToken/IVerificationToken.php',
'OCP\\Security\\VerificationToken\\InvalidTokenException' => __DIR__ . '/../../..' . '/lib/public/Security/VerificationToken/InvalidTokenException.php',
'OCP\\Server' => __DIR__ . '/../../..' . '/lib/public/Server.php',
'OCP\\ServerVersion' => __DIR__ . '/../../..' . '/lib/public/ServerVersion.php',
'OCP\\Session\\Exceptions\\SessionNotAvailableException' => __DIR__ . '/../../..' . '/lib/public/Session/Exceptions/SessionNotAvailableException.php',
'OCP\\Settings\\DeclarativeSettingsTypes' => __DIR__ . '/../../..' . '/lib/public/Settings/DeclarativeSettingsTypes.php',
'OCP\\Settings\\Events\\DeclarativeSettingsGetValueEvent' => __DIR__ . '/../../..' . '/lib/public/Settings/Events/DeclarativeSettingsGetValueEvent.php',

@ -13,6 +13,8 @@ use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
use OCP\Http\Client\IClientService;
use OCP\IConfig;
use OCP\Server;
use OCP\ServerVersion;
use OCP\Support\Subscription\IRegistry;
use Psr\Log\LoggerInterface;
@ -207,7 +209,7 @@ abstract class Fetcher {
*/
protected function getChannel() {
if ($this->channel === null) {
$this->channel = \OC_Util::getChannel();
$this->channel = Server::get(ServerVersion::class)->getChannel();
}
return $this->channel;
}

@ -19,6 +19,7 @@ use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IRequest;
use OCP\Server;
use OCP\ServerVersion;
use Psr\Container\ContainerExceptionInterface;
use Psr\Log\LoggerInterface;
use Symfony\Component\Console\Application as SymfonyApplication;
@ -31,6 +32,7 @@ class Application {
private SymfonyApplication $application;
public function __construct(
ServerVersion $serverVersion,
private IConfig $config,
private IEventDispatcher $dispatcher,
private IRequest $request,
@ -39,7 +41,7 @@ class Application {
private IAppManager $appManager,
private Defaults $defaults,
) {
$this->application = new SymfonyApplication($defaults->getName(), \OC_Util::getVersionString());
$this->application = new SymfonyApplication($defaults->getName(), $serverVersion->getVersionString());
}
/**

@ -21,6 +21,7 @@ use OCP\IAppConfig;
use OCP\ICache;
use OCP\ICacheFactory;
use OCP\IConfig;
use OCP\ServerVersion;
use phpseclib\Crypt\RSA;
use phpseclib\File\X509;
@ -40,6 +41,7 @@ class Checker {
private ICache $cache;
public function __construct(
private ServerVersion $serverVersion,
private EnvironmentHelper $environmentHelper,
private FileAccessHelper $fileAccessHelper,
private AppLocator $appLocator,
@ -59,7 +61,7 @@ class Checker {
*/
public function isCodeCheckEnforced(): bool {
$notSignedChannels = [ '', 'git'];
if (\in_array($this->environmentHelper->getChannel(), $notSignedChannels, true)) {
if (\in_array($this->serverVersion->getChannel(), $notSignedChannels, true)) {
return false;
}

@ -23,13 +23,4 @@ class EnvironmentHelper {
public function getServerRoot(): string {
return rtrim(\OC::$SERVERROOT, '/');
}
/**
* Provides \OC_Util::getChannel()
*
* @return string
*/
public function getChannel(): string {
return \OC_Util::getChannel();
}
}

@ -216,6 +216,7 @@ use OCP\Security\ISecureRandom;
use OCP\Security\ITrustedDomainHelper;
use OCP\Security\RateLimiting\ILimiter;
use OCP\Security\VerificationToken\IVerificationToken;
use OCP\ServerVersion;
use OCP\Settings\IDeclarativeManager;
use OCP\SetupCheck\ISetupCheckManager;
use OCP\Share\IProviderFactory;
@ -593,10 +594,12 @@ class Server extends ServerContainer implements IServerContainer {
);
/** @var SystemConfig $config */
$config = $c->get(SystemConfig::class);
/** @var ServerVersion $serverVersion */
$serverVersion = $c->get(ServerVersion::class);
if ($config->getValue('installed', false) && !(defined('PHPUNIT_RUN') && PHPUNIT_RUN)) {
$logQuery = $config->getValue('log_query');
$prefixClosure = function () use ($logQuery) {
$prefixClosure = function () use ($logQuery, $serverVersion) {
if (!$logQuery) {
try {
$v = \OC_App::getAppVersions();
@ -613,7 +616,7 @@ class Server extends ServerContainer implements IServerContainer {
'log_query' => 'enabled',
];
}
$v['core'] = implode(',', \OC_Util::getVersion());
$v['core'] = implode(',', $serverVersion->getVersion());
$version = implode(',', $v);
$instanceId = \OC_Util::getInstanceId();
$path = \OC::$SERVERROOT;
@ -865,7 +868,8 @@ class Server extends ServerContainer implements IServerContainer {
$appManager = $c->get(IAppManager::class);
return new Checker(
new EnvironmentHelper(),
$c->get(ServerVersion::class),
$c->get(EnvironmentHelper::class),
new FileAccessHelper(),
new AppLocator(),
$config,
@ -1056,7 +1060,7 @@ class Server extends ServerContainer implements IServerContainer {
$c->get(IUserSession::class),
$c->get(IURLGenerator::class),
$c->get(ICacheFactory::class),
new Util($c->get(\OCP\IConfig::class), $this->get(IAppManager::class), $c->getAppDataDir('theming'), $imageManager),
new Util($c->get(ServerVersion::class), $c->get(\OCP\IConfig::class), $this->get(IAppManager::class), $c->getAppDataDir('theming'), $imageManager),
$imageManager,
$c->get(IAppManager::class),
$c->get(INavigationManager::class),

@ -32,6 +32,7 @@ use OCP\L10N\IFactory as IL10NFactory;
use OCP\Migration\IOutput;
use OCP\Security\ISecureRandom;
use OCP\Server;
use OCP\ServerVersion;
use Psr\Log\LoggerInterface;
class Setup {
@ -380,7 +381,7 @@ class Setup {
unlink(\OC::$configDir . '/CAN_INSTALL');
}
$bootstrapCoordinator = \OCP\Server::get(\OC\AppFramework\Bootstrap\Coordinator::class);
$bootstrapCoordinator = Server::get(\OC\AppFramework\Bootstrap\Coordinator::class);
$bootstrapCoordinator->runInitialRegistration();
// Create a session token for the newly created user
@ -561,7 +562,7 @@ class Setup {
}
public function shouldRemoveCanInstallFile(): bool {
return \OC_Util::getChannel() !== 'git' && is_file(\OC::$configDir . '/CAN_INSTALL');
return Server::get(ServerVersion::class)->getChannel() !== 'git' && is_file(\OC::$configDir . '/CAN_INSTALL');
}
public function canInstallFileExists(): bool {

@ -30,6 +30,7 @@ use OCP\ILogger;
use OCP\ISession;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\ServerVersion;
use OCP\Session\Exceptions\SessionNotAvailableException;
use OCP\Share\IManager as IShareManager;
use OCP\User\Backend\IPasswordConfirmationBackend;
@ -41,6 +42,7 @@ class JSConfigHelper {
private $excludedUserBackEnds = ['user_saml' => true, 'user_globalsiteselector' => true];
public function __construct(
protected ServerVersion $serverVersion,
protected IL10N $l,
protected Defaults $defaults,
protected IAppManager $appManager,
@ -53,7 +55,7 @@ class JSConfigHelper {
protected CapabilitiesManager $capabilitiesManager,
protected IInitialStateService $initialStateService,
protected IProvider $tokenProvider,
protected FilenameValidator $filenameValidator,
protected FilenameValidator $filenameValidator,
) {
}
@ -154,8 +156,8 @@ class JSConfigHelper {
'session_lifetime' => min($this->config->getSystemValue('session_lifetime', $this->iniWrapper->getNumeric('session.gc_maxlifetime')), $this->iniWrapper->getNumeric('session.gc_maxlifetime')),
'sharing.maxAutocompleteResults' => max(0, $this->config->getSystemValueInt('sharing.maxAutocompleteResults', Constants::SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT)),
'sharing.minSearchStringLength' => $this->config->getSystemValueInt('sharing.minSearchStringLength', 0),
'version' => implode('.', Util::getVersion()),
'versionstring' => \OC_Util::getVersionString(),
'version' => implode('.', $this->serverVersion->getVersion()),
'versionstring' => $this->serverVersion->getVersionString(),
'enable_non-accessible_features' => $this->config->getSystemValueBool('enable_non-accessible_features', true),
];

@ -25,6 +25,7 @@ use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\L10N\IFactory;
use OCP\ServerVersion;
use OCP\Support\Subscription\IRegistry;
use OCP\Util;
@ -218,6 +219,7 @@ class TemplateLayout extends \OC_Template {
// this is on purpose outside of the if statement below so that the initial state is prefilled (done in the getConfig() call)
// see https://github.com/nextcloud/server/pull/22636 for details
$jsConfigHelper = new JSConfigHelper(
\OCP\Server::get(ServerVersion::class),
\OCP\Util::getL10N('lib'),
\OCP\Server::get(Defaults::class),
\OC::$server->getAppManager(),

@ -31,6 +31,7 @@ use OCP\HintException;
use OCP\IAppConfig;
use OCP\IConfig;
use OCP\ILogger;
use OCP\ServerVersion;
use OCP\Util;
use Psr\Log\LoggerInterface;
@ -53,6 +54,7 @@ class Updater extends BasicEmitter {
];
public function __construct(
private ServerVersion $serverVersion,
private IConfig $config,
private IAppConfig $appConfig,
private Checker $checker,
@ -82,14 +84,14 @@ class Updater extends BasicEmitter {
}
// Clear CAN_INSTALL file if not on git
if (\OC_Util::getChannel() !== 'git' && is_file(\OC::$configDir . '/CAN_INSTALL')) {
if ($this->serverVersion->getChannel() !== 'git' && is_file(\OC::$configDir . '/CAN_INSTALL')) {
if (!unlink(\OC::$configDir . '/CAN_INSTALL')) {
$this->log->error('Could not cleanup CAN_INSTALL from your config folder. Please remove this file manually.');
}
}
$installedVersion = $this->config->getSystemValueString('version', '0.0.0');
$currentVersion = implode('.', \OCP\Util::getVersion());
$currentVersion = implode('.', $this->serverVersion->getVersion());
$this->log->debug('starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, ['app' => 'core']);

@ -11,12 +11,14 @@ use OCP\Http\Client\IClientService;
use OCP\IAppConfig;
use OCP\IConfig;
use OCP\IUserManager;
use OCP\ServerVersion;
use OCP\Support\Subscription\IRegistry;
use OCP\Util;
use Psr\Log\LoggerInterface;
class VersionCheck {
public function __construct(
private ServerVersion $serverVersion,
private IClientService $clientService,
private IConfig $config,
private IAppConfig $appConfig,
@ -54,9 +56,9 @@ class VersionCheck {
$version = Util::getVersion();
$version['installed'] = $this->config->getAppValue('core', 'installedat');
$version['updated'] = $this->appConfig->getValueInt('core', 'lastupdatedat');
$version['updatechannel'] = \OC_Util::getChannel();
$version['updatechannel'] = $this->serverVersion->getChannel();
$version['edition'] = '';
$version['build'] = \OC_Util::getBuild();
$version['build'] = $this->serverVersion->getBuild();
$version['php_major'] = PHP_MAJOR_VERSION;
$version['php_minor'] = PHP_MINOR_VERSION;
$version['php_release'] = PHP_RELEASE_VERSION;

@ -6,6 +6,10 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
use OCP\IConfig;
use OCP\Server;
use OCP\ServerVersion;
class OC_Defaults {
private $theme;
@ -27,7 +31,8 @@ class OC_Defaults {
private $defaultProductName;
public function __construct() {
$config = \OC::$server->getConfig();
$config = Server::get(IConfig::class);
$serverVersion = Server::get(ServerVersion::class);
$this->defaultEntity = 'Nextcloud'; /* e.g. company name, used for footers and copyright notices */
$this->defaultName = 'Nextcloud'; /* short name, used when referring to the software */
@ -39,7 +44,7 @@ class OC_Defaults {
$this->defaultAndroidClientUrl = $config->getSystemValue('customclient_android', 'https://play.google.com/store/apps/details?id=com.nextcloud.client');
$this->defaultFDroidClientUrl = $config->getSystemValue('customclient_fdroid', 'https://f-droid.org/packages/com.nextcloud.client/');
$this->defaultDocBaseUrl = 'https://docs.nextcloud.com';
$this->defaultDocVersion = \OC_Util::getVersion()[0]; // used to generate doc links
$this->defaultDocVersion = $serverVersion->getMajorVersion(); // used to generate doc links
$this->defaultColorBackground = '#00679e';
$this->defaultColorPrimary = '#00679e';
$this->defaultTextColorPrimary = '#ffffff';

@ -215,76 +215,6 @@ class OC_Util {
$setupManager->tearDown();
}
/**
* get the current installed version of ownCloud
*
* @return array
*/
public static function getVersion() {
OC_Util::loadVersion();
return self::$versionCache['OC_Version'];
}
/**
* get the current installed version string of ownCloud
*
* @return string
*/
public static function getVersionString() {
OC_Util::loadVersion();
return self::$versionCache['OC_VersionString'];
}
/**
* @deprecated 11.0.0 the value is of no use anymore
* @return string
*/
public static function getEditionString() {
return '';
}
/**
* @description get the update channel of the current installed of ownCloud.
* @return string
*/
public static function getChannel() {
OC_Util::loadVersion();
return \OC::$server->getConfig()->getSystemValueString('updater.release.channel', self::$versionCache['OC_Channel']);
}
/**
* @description get the build number of the current installed of ownCloud.
* @return string
*/
public static function getBuild() {
OC_Util::loadVersion();
return self::$versionCache['OC_Build'];
}
/**
* @description load the version.php into the session as cache
* @suppress PhanUndeclaredVariable
*/
private static function loadVersion() {
if (self::$versionCache !== null) {
return;
}
$timestamp = filemtime(OC::$SERVERROOT . '/version.php');
require OC::$SERVERROOT . '/version.php';
/** @var int $timestamp */
self::$versionCache['OC_Version_Timestamp'] = $timestamp;
/** @var string $OC_Version */
self::$versionCache['OC_Version'] = $OC_Version;
/** @var string $OC_VersionString */
self::$versionCache['OC_VersionString'] = $OC_VersionString;
/** @var string $OC_Build */
self::$versionCache['OC_Build'] = $OC_Build;
/** @var string $OC_Channel */
self::$versionCache['OC_Channel'] = $OC_Channel;
}
/**
* generates a path for JS/CSS files. If no application is provided it will create the path for core.
*
@ -1021,20 +951,6 @@ class OC_Util {
return $normalizedValue;
}
/**
* A human readable string is generated based on version and build number
*
* @return string
*/
public static function getHumanVersion() {
$version = OC_Util::getVersionString();
$build = OC_Util::getBuild();
if (!empty($build) and OC_Util::getChannel() === 'daily') {
$version .= ' Build:' . $build;
}
return $version;
}
/**
* Check whether the instance needs to perform an upgrade,
* either when the core version is higher or any app requires

@ -0,0 +1,102 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCP;
/**
* @since 31.0.0
*/
class ServerVersion {
private array $version;
private string $versionString;
private string $build;
/** @var 'beta'|'stable'|'enterprise'|'git' */
private string $channel;
/**
* @since 31.0.0
*/
public function __construct() {
$versionFile = __DIR__ . '/../../version.php';
require $versionFile;
/** @var int[] $OC_Version */
$this->version = $OC_Version;
/** @var string $OC_VersionString */
$this->versionString = $OC_VersionString;
/** @var string $OC_Build */
$this->build = $OC_Build;
/** @var string $OC_Channel */
$this->channel = $OC_Channel;
}
/**
* @since 31.0.0
*/
public function getMajorVersion(): int {
return $this->version[0];
}
/**
* @since 31.0.0
*/
public function getMinorVersion(): int {
return $this->version[1];
}
/**
* @since 31.0.0
*/
public function getPatchVersion(): int {
return $this->version[2];
}
/**
* @since 31.0.0
*/
public function getVersion(): array {
return $this->version;
}
/**
* @since 31.0.0
*/
public function getVersionString(): string {
return $this->versionString;
}
/**
* @psalm-return 'beta'|'stable'|'enterprise'|'git'
* @since 31.0.0
*/
public function getChannel(): string {
return $this->channel;
}
/**
* @since 31.0.0
*/
public function getBuild(): string {
return $this->build;
}
/**
* @since 31.0.0
*/
public function getHumanVersion(): string {
$version = $this->getVersionString();
$build = $this->getBuild();
if (!empty($build) && $this->getChannel() === 'daily') {
$version .= ' Build:' . $build;
}
return $version;
}
}

@ -35,9 +35,10 @@ class Util {
* get the current installed version of Nextcloud
* @return array
* @since 4.0.0
* @deprecated 31.0.0 Use \OCP\ServerVersion::getVersion
*/
public static function getVersion() {
return \OC_Util::getVersion();
return Server::get(ServerVersion::class)->getVersion();
}
/**
@ -46,7 +47,7 @@ class Util {
public static function hasExtendedSupport(): bool {
try {
/** @var \OCP\Support\Subscription\IRegistry */
$subscriptionRegistry = \OCP\Server::get(\OCP\Support\Subscription\IRegistry::class);
$subscriptionRegistry = Server::get(\OCP\Support\Subscription\IRegistry::class);
return $subscriptionRegistry->delegateHasExtendedSupport();
} catch (ContainerExceptionInterface $e) {
}
@ -66,9 +67,10 @@ class Util {
* Get current update channel
* @return string
* @since 8.1.0
* @deprecated 31.0.0 Use \OCP\ServerVersion::getChannel
*/
public static function getChannel() {
return \OC_Util::getChannel();
return \OCP\Server::get(ServerVersion::class)->getChannel();
}
/**
@ -567,7 +569,7 @@ class Util {
if (!function_exists($functionName)) {
return false;
}
$ini = \OCP\Server::get(IniGetWrapper::class);
$ini = Server::get(IniGetWrapper::class);
$disabled = explode(',', $ini->get('disable_functions') ?: '');
$disabled = array_map('trim', $disabled);
if (in_array($functionName, $disabled)) {

@ -24,7 +24,7 @@ try {
'maintenance' => $maintenance,
'needsDbUpgrade' => \OCP\Util::needUpgrade(),
'version' => implode('.', \OCP\Util::getVersion()),
'versionstring' => OC_Util::getVersionString(),
'versionstring' => \OCP\Server::get(\OCP\ServerVersion::class)->getVersionString(),
'edition' => '',
'productname' => $defaults->getProductName(),
'extendedSupport' => \OCP\Util::hasExtendedSupport()

@ -15,6 +15,7 @@ use OCP\IRequest;
use OCP\IUser;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\ServerVersion;
use Test\TestCase;
class OCSControllerTest extends TestCase {
@ -28,6 +29,8 @@ class OCSControllerTest extends TestCase {
private $userManager;
/** @var Manager|\PHPUnit\Framework\MockObject\MockObject */
private $keyManager;
/** @var ServerVersion|\PHPUnit\Framework\MockObject\MockObject */
private $serverVersion;
/** @var OCSController */
private $controller;
@ -39,6 +42,7 @@ class OCSControllerTest extends TestCase {
$this->userSession = $this->createMock(IUserSession::class);
$this->userManager = $this->createMock(IUserManager::class);
$this->keyManager = $this->createMock(Manager::class);
$serverVersion = \OCP\Server::get(ServerVersion::class);
$this->controller = new OCSController(
'core',
@ -46,7 +50,8 @@ class OCSControllerTest extends TestCase {
$this->capabilitiesManager,
$this->userSession,
$this->userManager,
$this->keyManager
$this->keyManager,
$serverVersion
);
}
@ -72,14 +77,15 @@ class OCSControllerTest extends TestCase {
$this->userSession->expects($this->once())
->method('isLoggedIn')
->willReturn(true);
[$major, $minor, $micro] = \OCP\Util::getVersion();
$serverVersion = \OCP\Server::get(ServerVersion::class);
$result = [];
$result['version'] = [
'major' => $major,
'minor' => $minor,
'micro' => $micro,
'string' => \OC_Util::getVersionString(),
'major' => $serverVersion->getMajorVersion(),
'minor' => $serverVersion->getMinorVersion(),
'micro' => $serverVersion->getPatchVersion(),
'string' => $serverVersion->getVersionString(),
'edition' => '',
'extendedSupport' => false
];
@ -105,14 +111,14 @@ class OCSControllerTest extends TestCase {
$this->userSession->expects($this->once())
->method('isLoggedIn')
->willReturn(false);
[$major, $minor, $micro] = \OCP\Util::getVersion();
$serverVersion = \OCP\Server::get(ServerVersion::class);
$result = [];
$result['version'] = [
'major' => $major,
'minor' => $minor,
'micro' => $micro,
'string' => \OC_Util::getVersionString(),
'major' => $serverVersion->getMajorVersion(),
'minor' => $serverVersion->getMinorVersion(),
'micro' => $serverVersion->getPatchVersion(),
'string' => $serverVersion->getVersionString(),
'edition' => '',
'extendedSupport' => false
];

@ -17,11 +17,14 @@ use OCP\App\IAppManager;
use OCP\IAppConfig;
use OCP\ICacheFactory;
use OCP\IConfig;
use OCP\ServerVersion;
use phpseclib\Crypt\RSA;
use phpseclib\File\X509;
use Test\TestCase;
class CheckerTest extends TestCase {
/** @var ServerVersion|\PHPUnit\Framework\MockObject\MockObject */
private $serverVersion;
/** @var EnvironmentHelper|\PHPUnit\Framework\MockObject\MockObject */
private $environmentHelper;
/** @var AppLocator|\PHPUnit\Framework\MockObject\MockObject */
@ -43,6 +46,7 @@ class CheckerTest extends TestCase {
protected function setUp(): void {
parent::setUp();
$this->serverVersion = $this->createMock(ServerVersion::class);
$this->environmentHelper = $this->createMock(EnvironmentHelper::class);
$this->fileAccessHelper = $this->createMock(FileAccessHelper::class);
$this->appLocator = $this->createMock(AppLocator::class);
@ -62,6 +66,7 @@ class CheckerTest extends TestCase {
->willReturn(new NullCache());
$this->checker = new Checker(
$this->serverVersion,
$this->environmentHelper,
$this->fileAccessHelper,
$this->appLocator,
@ -149,7 +154,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyAppSignatureWithoutSignatureData(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -169,7 +174,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyAppSignatureWithValidSignatureData(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -208,7 +213,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyAppSignatureWithTamperedSignatureData(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -253,7 +258,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyAppSignatureWithTamperedFiles(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -314,7 +319,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyAppSignatureWithTamperedFilesAndAlternatePath(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -374,7 +379,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyAppWithDifferentScope(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -418,7 +423,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyAppWithDifferentScopeAndAlwaysTrustedCore(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -639,7 +644,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyCoreSignatureWithoutSignatureData(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -659,7 +664,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyCoreSignatureWithValidSignatureData(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -696,7 +701,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyCoreSignatureWithValidModifiedHtaccessSignatureData(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -759,7 +764,7 @@ class CheckerTest extends TestCase {
// occ integrity:sign-core --privateKey=./tests/data/integritycheck/core.key --certificate=./tests/data/integritycheck/core.crt --path=./tests/data/integritycheck/mimetypeListModified
self::assertEquals($newFile, file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/mimetypeListModified/core/js/mimetypelist.js'));
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -786,7 +791,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyCoreSignatureWithValidSignatureDataAndNotAlphabeticOrder(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -823,7 +828,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyCoreSignatureWithTamperedSignatureData(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -866,7 +871,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyCoreSignatureWithTamperedFiles(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -924,7 +929,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyCoreWithInvalidCertificate(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -967,7 +972,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyCoreWithDifferentScope(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -1012,6 +1017,7 @@ class CheckerTest extends TestCase {
public function testRunInstanceVerification(): void {
$this->checker = $this->getMockBuilder('\OC\IntegrityCheck\Checker')
->setConstructorArgs([
$this->serverVersion,
$this->environmentHelper,
$this->fileAccessHelper,
$this->appLocator,
@ -1090,7 +1096,7 @@ class CheckerTest extends TestCase {
}
public function testVerifyAppSignatureWithoutSignatureDataAndCodeCheckerDisabled(): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn('stable');
@ -1120,7 +1126,7 @@ class CheckerTest extends TestCase {
* @dataProvider channelDataProvider
*/
public function testIsCodeCheckEnforced($channel, $isCodeSigningEnforced): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn($channel);
@ -1138,7 +1144,7 @@ class CheckerTest extends TestCase {
* @dataProvider channelDataProvider
*/
public function testIsCodeCheckEnforcedWithDisabledConfigSwitch($channel): void {
$this->environmentHelper
$this->serverVersion
->expects($this->once())
->method('getChannel')
->willReturn($channel);

@ -22,8 +22,4 @@ class EnvironmentHelperTest extends TestCase {
public function testGetServerRoot(): void {
$this->assertSame(\OC::$SERVERROOT, $this->environmentHelper->getServerRoot());
}
public function testGetChannel(): void {
$this->assertSame(\OC_Util::getChannel(), $this->environmentHelper->getChannel());
}
}

@ -1,30 +0,0 @@
<?php
/**
* SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace Test\PublicNamespace;
class UtilTest extends \Test\TestCase {
/**
* @dataProvider channelProvider
*
* @param string $channel
*/
public function testOverrideChannel($channel): void {
\OCP\Util::setChannel($channel);
$actual = \OCP\Util::getChannel($channel);
$this->assertEquals($channel, $actual);
}
public function channelProvider() {
return [
['daily'],
['beta'],
['stable'],
['production']
];
}
}

@ -12,11 +12,13 @@ use OCP\Http\Client\IClientService;
use OCP\IAppConfig;
use OCP\IConfig;
use OCP\IUserManager;
use OCP\ServerVersion;
use OCP\Support\Subscription\IRegistry;
use OCP\Util;
use Psr\Log\LoggerInterface;
class VersionCheckTest extends \Test\TestCase {
/** @var ServerVersion|\PHPUnit\Framework\MockObject\MockObject */
private $serverVersion;
/** @var IConfig| \PHPUnit\Framework\MockObject\MockObject */
private $config;
/** @var IAppConfig| \PHPUnit\Framework\MockObject\MockObject */
@ -30,15 +32,12 @@ class VersionCheckTest extends \Test\TestCase {
protected function setUp(): void {
parent::setUp();
$this->config = $this->getMockBuilder(IConfig::class)
->disableOriginalConstructor()
->getMock();
$this->appConfig = $this->getMockBuilder(IAppConfig::class)
->disableOriginalConstructor()
->getMock();
$clientService = $this->getMockBuilder(IClientService::class)
->disableOriginalConstructor()
->getMock();
$this->serverVersion = $this->createMock(ServerVersion::class);
$this->config = $this->createMock(IConfig::class);
$this->appConfig = $this->createMock(IAppConfig::class);
$clientService = $this->createMock(IClientService::class);
$this->serverVersion->method('getChannel')->willReturn('git');
$this->registry = $this->createMock(IRegistry::class);
$this->registry
@ -48,6 +47,7 @@ class VersionCheckTest extends \Test\TestCase {
$this->updater = $this->getMockBuilder(VersionCheck::class)
->setMethods(['getUrlContent'])
->setConstructorArgs([
$this->serverVersion,
$clientService,
$this->config,
$this->appConfig,
@ -63,7 +63,8 @@ class VersionCheckTest extends \Test\TestCase {
* @return string
*/
private function buildUpdateUrl($baseUrl) {
return $baseUrl . '?version=' . implode('x', Util::getVersion()) . 'xinstalledatx' . time() . 'x' . \OC_Util::getChannel() . 'xxx' . PHP_MAJOR_VERSION . 'x' . PHP_MINOR_VERSION . 'x' . PHP_RELEASE_VERSION . 'x0x0';
$serverVersion = \OCP\Server::get(ServerVersion::class);
return $baseUrl . '?version=' . implode('x', $serverVersion->getVersion()) . 'xinstalledatx' . time() . 'x' . $serverVersion->getChannel() . 'xxx' . PHP_MAJOR_VERSION . 'x' . PHP_MINOR_VERSION . 'x' . PHP_RELEASE_VERSION . 'x0x0';
}
public function testCheckInCache(): void {

@ -12,10 +12,13 @@ use OC\IntegrityCheck\Checker;
use OC\Updater;
use OCP\IAppConfig;
use OCP\IConfig;
use OCP\ServerVersion;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
class UpdaterTest extends TestCase {
/** @var ServerVersion|MockObject */
private $serverVersion;
/** @var IConfig|MockObject */
private $config;
/** @var IAppConfig|MockObject */
@ -31,23 +34,15 @@ class UpdaterTest extends TestCase {
protected function setUp(): void {
parent::setUp();
$this->config = $this->getMockBuilder(IConfig::class)
->disableOriginalConstructor()
->getMock();
$this->appConfig = $this->getMockBuilder(IAppConfig::class)
->disableOriginalConstructor()
->getMock();
$this->logger = $this->getMockBuilder(LoggerInterface::class)
->disableOriginalConstructor()
->getMock();
$this->checker = $this->getMockBuilder(Checker::class)
->disableOriginalConstructor()
->getMock();
$this->installer = $this->getMockBuilder(Installer::class)
->disableOriginalConstructor()
->getMock();
$this->serverVersion = $this->createMock(ServerVersion::class);
$this->config = $this->createMock(IConfig::class);
$this->appConfig = $this->createMock(IAppConfig::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->checker = $this->createMock(Checker::class);
$this->installer = $this->createMock(Installer::class);
$this->updater = new Updater(
$this->serverVersion,
$this->config,
$this->appConfig,
$this->checker,

@ -24,16 +24,6 @@ class UtilTest extends \Test\TestCase {
}
}
public function testGetVersionString(): void {
$version = \OC_Util::getVersionString();
$this->assertTrue(is_string($version));
}
public function testGetEditionString(): void {
$edition = \OC_Util::getEditionString();
$this->assertTrue(is_string($edition));
}
public function testSanitizeHTML(): void {
$badArray = [
'While it is unusual to pass an array',

Loading…
Cancel
Save