Merge pull request #20636 from nextcloud/tests/noid/tests-for-update-notifications-controller

Add tests for update notification controller for non-default updater …
This commit is contained in:
Morris Jobke 2020-04-28 16:18:18 +02:00 committed by GitHub
commit 192cf12440
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 171 additions and 1 deletions

View File

@ -95,7 +95,7 @@ class Admin implements ISettings {
$defaultCustomerUpdateServerURLPrefix = 'https://updates.nextcloud.com/customers/';
$isDefaultUpdateServerURL = $updateServerURL === $defaultUpdateServerURL
|| $updateServerURL === substr($updateServerURL, 0, strlen($defaultCustomerUpdateServerURLPrefix));
|| strpos($updateServerURL, $defaultCustomerUpdateServerURLPrefix) === 0;
$hasValidSubscription = $this->subscriptionRegistry->delegateHasValidSubscription();

View File

@ -158,6 +158,176 @@ class AdminTest extends TestCase {
$this->assertEquals($expected, $this->admin->getForm());
}
public function testGetFormWithUpdateAndChangedUpdateServer() {
$channels = [
'daily',
'beta',
'stable',
'production',
];
$currentChannel = Util::getChannel();
if ($currentChannel === 'git') {
$channels[] = 'git';
}
$this->config
->expects($this->exactly(2))
->method('getAppValue')
->willReturnMap([
['core', 'lastupdatedat', '', '12345'],
['updatenotification', 'notify_groups', '["admin"]', '["admin"]'],
]);
$this->config
->expects($this->once())
->method('getSystemValue')
->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/')
->willReturn('https://updates.nextcloud.com/updater_server_changed/');
$this->dateTimeFormatter
->expects($this->once())
->method('formatDateTime')
->with('12345')
->willReturn('LastCheckedReturnValue');
$this->updateChecker
->expects($this->once())
->method('getUpdateState')
->willReturn([
'updateAvailable' => true,
'updateVersion' => '8.1.2',
'updateVersionString' => 'Nextcloud 8.1.2',
'downloadLink' => 'https://downloads.nextcloud.org/server',
'changes' => [],
'updaterEnabled' => true,
'versionIsEol' => false,
]);
$group = $this->createMock(IGroup::class);
$group->expects($this->any())
->method('getDisplayName')
->willReturn('Administrators');
$group->expects($this->any())
->method('getGID')
->willReturn('admin');
$this->groupManager->expects($this->once())
->method('get')
->with('admin')
->willReturn($group);
$this->subscriptionRegistry
->expects($this->once())
->method('delegateHasValidSubscription')
->willReturn(true);
$params = [
'json' => json_encode([
'isNewVersionAvailable' => true,
'isUpdateChecked' => true,
'lastChecked' => 'LastCheckedReturnValue',
'currentChannel' => Util::getChannel(),
'channels' => $channels,
'newVersion' => '8.1.2',
'newVersionString' => 'Nextcloud 8.1.2',
'downloadLink' => 'https://downloads.nextcloud.org/server',
'changes' => [],
'updaterEnabled' => true,
'versionIsEol' => false,
'isDefaultUpdateServerURL' => false,
'updateServerURL' => 'https://updates.nextcloud.com/updater_server_changed/',
'notifyGroups' => [
['value' => 'admin', 'label' => 'Administrators'],
],
'hasValidSubscription' => true,
]),
];
$expected = new TemplateResponse('updatenotification', 'admin', $params, '');
$this->assertEquals($expected, $this->admin->getForm());
}
public function testGetFormWithUpdateAndCustomersUpdateServer() {
$channels = [
'daily',
'beta',
'stable',
'production',
];
$currentChannel = Util::getChannel();
if ($currentChannel === 'git') {
$channels[] = 'git';
}
$this->config
->expects($this->exactly(2))
->method('getAppValue')
->willReturnMap([
['core', 'lastupdatedat', '', '12345'],
['updatenotification', 'notify_groups', '["admin"]', '["admin"]'],
]);
$this->config
->expects($this->once())
->method('getSystemValue')
->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/')
->willReturn('https://updates.nextcloud.com/customers/ABC-DEF/');
$this->dateTimeFormatter
->expects($this->once())
->method('formatDateTime')
->with('12345')
->willReturn('LastCheckedReturnValue');
$this->updateChecker
->expects($this->once())
->method('getUpdateState')
->willReturn([
'updateAvailable' => true,
'updateVersion' => '8.1.2',
'updateVersionString' => 'Nextcloud 8.1.2',
'downloadLink' => 'https://downloads.nextcloud.org/server',
'changes' => [],
'updaterEnabled' => true,
'versionIsEol' => false,
]);
$group = $this->createMock(IGroup::class);
$group->expects($this->any())
->method('getDisplayName')
->willReturn('Administrators');
$group->expects($this->any())
->method('getGID')
->willReturn('admin');
$this->groupManager->expects($this->once())
->method('get')
->with('admin')
->willReturn($group);
$this->subscriptionRegistry
->expects($this->once())
->method('delegateHasValidSubscription')
->willReturn(true);
$params = [
'json' => json_encode([
'isNewVersionAvailable' => true,
'isUpdateChecked' => true,
'lastChecked' => 'LastCheckedReturnValue',
'currentChannel' => Util::getChannel(),
'channels' => $channels,
'newVersion' => '8.1.2',
'newVersionString' => 'Nextcloud 8.1.2',
'downloadLink' => 'https://downloads.nextcloud.org/server',
'changes' => [],
'updaterEnabled' => true,
'versionIsEol' => false,
'isDefaultUpdateServerURL' => true,
'updateServerURL' => 'https://updates.nextcloud.com/customers/ABC-DEF/',
'notifyGroups' => [
['value' => 'admin', 'label' => 'Administrators'],
],
'hasValidSubscription' => true,
]),
];
$expected = new TemplateResponse('updatenotification', 'admin', $params, '');
$this->assertEquals($expected, $this->admin->getForm());
}
public function testGetSection() {
$this->assertSame('overview', $this->admin->getSection());