]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add tests for update notification controller for non-default updater server URL 20636/head
authorMorris Jobke <hey@morrisjobke.de>
Fri, 24 Apr 2020 16:00:49 +0000 (18:00 +0200)
committerMorris Jobke <hey@morrisjobke.de>
Tue, 28 Apr 2020 13:28:47 +0000 (15:28 +0200)
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
apps/updatenotification/lib/Settings/Admin.php
apps/updatenotification/tests/Settings/AdminTest.php

index f623e69e02e978612624b6177017d84f27235b31..43ec4dcb99e96f27338d686d780a8147fa7504fc 100644 (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();
 
index 7ac404be57f73e5e0855464cb8a1e205eef877da..faed2c23a8ed6934a9893726229ff0a62caf4562 100644 (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());