Skip to content

Commit

Permalink
Merge pull request #20636 from nextcloud/tests/noid/tests-for-update-…
Browse files Browse the repository at this point in the history
…notifications-controller

Add tests for update notification controller for non-default updater …
  • Loading branch information
MorrisJobke authored Apr 28, 2020
2 parents 0c701ce + 773e9d0 commit 192cf12
Show file tree
Hide file tree
Showing 2 changed files with 171 additions and 1 deletion.
2 changes: 1 addition & 1 deletion apps/updatenotification/lib/Settings/Admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public function getForm(): TemplateResponse {
$defaultCustomerUpdateServerURLPrefix = 'https://updates.nextcloud.com/customers/';

$isDefaultUpdateServerURL = $updateServerURL === $defaultUpdateServerURL
|| $updateServerURL === substr($updateServerURL, 0, strlen($defaultCustomerUpdateServerURLPrefix));
|| strpos($updateServerURL, $defaultCustomerUpdateServerURLPrefix) === 0;

$hasValidSubscription = $this->subscriptionRegistry->delegateHasValidSubscription();

Expand Down
170 changes: 170 additions & 0 deletions apps/updatenotification/tests/Settings/AdminTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,176 @@ public function testGetFormWithUpdate() {
$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());
Expand Down

0 comments on commit 192cf12

Please sign in to comment.