diff options
author | Morris Jobke <hey@morrisjobke.de> | 2020-04-28 17:18:18 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-28 17:18:18 +0300 |
commit | 192cf12440cdca9f5c044b84a9187605a58d7707 (patch) | |
tree | 5b937e39b01b74cbcf51e23b3120b0bd6534c036 | |
parent | 0c701cec565aba963573d4205295bd26c626798a (diff) | |
parent | 773e9d05546bff687c227167381ab09f40383193 (diff) |
Merge pull request #20636 from nextcloud/tests/noid/tests-for-update-notifications-controller
Add tests for update notification controller for non-default updater …
-rw-r--r-- | apps/updatenotification/lib/Settings/Admin.php | 2 | ||||
-rw-r--r-- | apps/updatenotification/tests/Settings/AdminTest.php | 170 |
2 files changed, 171 insertions, 1 deletions
diff --git a/apps/updatenotification/lib/Settings/Admin.php b/apps/updatenotification/lib/Settings/Admin.php index f623e69e02e..43ec4dcb99e 100644 --- a/apps/updatenotification/lib/Settings/Admin.php +++ b/apps/updatenotification/lib/Settings/Admin.php @@ -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(); diff --git a/apps/updatenotification/tests/Settings/AdminTest.php b/apps/updatenotification/tests/Settings/AdminTest.php index 7ac404be57f..faed2c23a8e 100644 --- a/apps/updatenotification/tests/Settings/AdminTest.php +++ b/apps/updatenotification/tests/Settings/AdminTest.php @@ -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()); |