summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@users.noreply.github.com>2021-10-23 10:53:22 +0200
committerGitHub <noreply@github.com>2021-10-23 10:53:22 +0200
commita06001e0851abc6073af678b742da3e1aa96eec9 (patch)
tree1fefd580e28d0c5d74b8503b6a22bf00a09bcbaf /tests
parent7e117da4357cda049bc41c1e146e1b0f8a06ddee (diff)
parent6f7ca3432c0e6d1e1925179e952f79c6273295f3 (diff)
downloadnextcloud-server-a06001e0851abc6073af678b742da3e1aa96eec9.tar.gz
nextcloud-server-a06001e0851abc6073af678b742da3e1aa96eec9.zip
Merge pull request #29363 from nextcloud/fair-use-push
Diffstat (limited to 'tests')
-rw-r--r--tests/Core/Controller/LoginControllerTest.php32
-rw-r--r--tests/lib/Notification/ManagerTest.php86
-rw-r--r--tests/lib/Support/Subscription/RegistryTest.php9
3 files changed, 111 insertions, 16 deletions
diff --git a/tests/Core/Controller/LoginControllerTest.php b/tests/Core/Controller/LoginControllerTest.php
index fe42b55db15..30a625a612b 100644
--- a/tests/Core/Controller/LoginControllerTest.php
+++ b/tests/Core/Controller/LoginControllerTest.php
@@ -33,12 +33,14 @@ use OCP\AppFramework\Http\TemplateResponse;
use OCP\Defaults;
use OCP\IConfig;
use OCP\IInitialStateService;
+use OCP\IL10N;
use OCP\ILogger;
use OCP\IRequest;
use OCP\ISession;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
+use OCP\Notification\IManager;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
@@ -86,6 +88,12 @@ class LoginControllerTest extends TestCase {
/** @var \OC\Authentication\WebAuthn\Manager|MockObject */
private $webAuthnManager;
+ /** @var IManager|MockObject */
+ private $notificationManager;
+
+ /** @var IL10N|MockObject */
+ private $l;
+
protected function setUp(): void {
parent::setUp();
$this->request = $this->createMock(IRequest::class);
@@ -101,6 +109,13 @@ class LoginControllerTest extends TestCase {
$this->chain = $this->createMock(LoginChain::class);
$this->initialStateService = $this->createMock(IInitialStateService::class);
$this->webAuthnManager = $this->createMock(\OC\Authentication\WebAuthn\Manager::class);
+ $this->notificationManager = $this->createMock(IManager::class);
+ $this->l = $this->createMock(IL10N::class);
+ $this->l->expects($this->any())
+ ->method('t')
+ ->willReturnCallback(function ($text, $parameters = []) {
+ return vsprintf($text, $parameters);
+ });
$this->request->method('getRemoteAddress')
@@ -124,7 +139,9 @@ class LoginControllerTest extends TestCase {
$this->throttler,
$this->chain,
$this->initialStateService,
- $this->webAuthnManager
+ $this->webAuthnManager,
+ $this->notificationManager,
+ $this->l
);
}
@@ -249,6 +266,7 @@ class LoginControllerTest extends TestCase {
[
'MessageArray1',
'MessageArray2',
+ 'This community release of Nextcloud is unsupported and instant notifications are unavailable.',
]
);
$this->initialStateService->expects($this->at(1))
@@ -278,7 +296,7 @@ class LoginControllerTest extends TestCase {
->expects($this->once())
->method('isLoggedIn')
->willReturn(false);
- $this->initialStateService->expects($this->at(2))
+ $this->initialStateService->expects($this->at(4))
->method('provideInitialState')
->with(
'core',
@@ -339,14 +357,14 @@ class LoginControllerTest extends TestCase {
->method('get')
->with('LdapUser')
->willReturn($user);
- $this->initialStateService->expects($this->at(0))
+ $this->initialStateService->expects($this->at(2))
->method('provideInitialState')
->with(
'core',
'loginUsername',
'LdapUser'
);
- $this->initialStateService->expects($this->at(4))
+ $this->initialStateService->expects($this->at(6))
->method('provideInitialState')
->with(
'core',
@@ -386,21 +404,21 @@ class LoginControllerTest extends TestCase {
->method('get')
->with('0')
->willReturn($user);
- $this->initialStateService->expects($this->at(1))
+ $this->initialStateService->expects($this->at(3))
->method('provideInitialState')
->with(
'core',
'loginAutocomplete',
true
);
- $this->initialStateService->expects($this->at(3))
+ $this->initialStateService->expects($this->at(5))
->method('provideInitialState')
->with(
'core',
'loginResetPasswordLink',
false
);
- $this->initialStateService->expects($this->at(4))
+ $this->initialStateService->expects($this->at(6))
->method('provideInitialState')
->with(
'core',
diff --git a/tests/lib/Notification/ManagerTest.php b/tests/lib/Notification/ManagerTest.php
index b1201d31c42..400ae3a53ef 100644
--- a/tests/lib/Notification/ManagerTest.php
+++ b/tests/lib/Notification/ManagerTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* @author Joas Schilling <nickvergessen@owncloud.com>
*
@@ -25,11 +27,16 @@ use OC\AppFramework\Bootstrap\Coordinator;
use OC\AppFramework\Bootstrap\RegistrationContext;
use OC\AppFramework\Bootstrap\ServiceRegistration;
use OC\Notification\Manager;
-use OCP\ILogger;
+use OCP\AppFramework\Utility\ITimeFactory;
+use OCP\ICache;
+use OCP\ICacheFactory;
+use OCP\IUserManager;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
use OCP\RichObjectStrings\IValidator;
+use OCP\Support\Subscription\IRegistry;
use PHPUnit\Framework\MockObject\MockObject;
+use Psr\Log\LoggerInterface;
use Test\TestCase;
class ManagerTest extends TestCase {
@@ -38,7 +45,17 @@ class ManagerTest extends TestCase {
/** @var IValidator|MockObject */
protected $validator;
- /** @var ILogger|MockObject */
+ /** @var IUserManager|MockObject */
+ protected $userManager;
+ /** @var ICacheFactory|MockObject */
+ protected $cacheFactory;
+ /** @var ICache|MockObject */
+ protected $cache;
+ /** @var ITimeFactory|MockObject */
+ protected $timeFactory;
+ /** @var IRegistry|MockObject */
+ protected $subscriptionRegistry;
+ /** @var LoggerInterface|MockObject */
protected $logger;
/** @var Coordinator|MockObject */
protected $coordinator;
@@ -49,14 +66,23 @@ class ManagerTest extends TestCase {
parent::setUp();
$this->validator = $this->createMock(IValidator::class);
- $this->logger = $this->createMock(ILogger::class);
+ $this->userManager = $this->createMock(IUserManager::class);
+ $this->cache = $this->createMock(ICache::class);
+ $this->timeFactory = $this->createMock(ITimeFactory::class);
+ $this->subscriptionRegistry = $this->createMock(IRegistry::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
+
+ $this->cacheFactory = $this->createMock(ICacheFactory::class);
+ $this->cacheFactory->method('createDistributed')
+ ->with('notifications')
+ ->willReturn($this->cache);
$this->registrationContext = $this->createMock(RegistrationContext::class);
$this->coordinator = $this->createMock(Coordinator::class);
$this->coordinator->method('getRegistrationContext')
->willReturn($this->registrationContext);
- $this->manager = new Manager($this->validator, $this->logger, $this->coordinator);
+ $this->manager = new Manager($this->validator, $this->userManager, $this->cacheFactory, $this->timeFactory, $this->subscriptionRegistry, $this->logger, $this->coordinator);
}
public function testRegisterApp() {
@@ -128,6 +154,10 @@ class ManagerTest extends TestCase {
$manager = $this->getMockBuilder(Manager::class)
->setConstructorArgs([
$this->validator,
+ $this->userManager,
+ $this->cacheFactory,
+ $this->timeFactory,
+ $this->subscriptionRegistry,
$this->logger,
$this->coordinator,
])
@@ -156,6 +186,10 @@ class ManagerTest extends TestCase {
$manager = $this->getMockBuilder(Manager::class)
->setConstructorArgs([
$this->validator,
+ $this->userManager,
+ $this->cacheFactory,
+ $this->timeFactory,
+ $this->subscriptionRegistry,
$this->logger,
$this->coordinator,
])
@@ -177,6 +211,10 @@ class ManagerTest extends TestCase {
$manager = $this->getMockBuilder(Manager::class)
->setConstructorArgs([
$this->validator,
+ $this->userManager,
+ $this->cacheFactory,
+ $this->timeFactory,
+ $this->subscriptionRegistry,
$this->logger,
$this->coordinator,
])
@@ -199,6 +237,10 @@ class ManagerTest extends TestCase {
$manager = $this->getMockBuilder(Manager::class)
->setConstructorArgs([
$this->validator,
+ $this->userManager,
+ $this->cacheFactory,
+ $this->timeFactory,
+ $this->subscriptionRegistry,
$this->logger,
$this->coordinator,
])
@@ -211,4 +253,40 @@ class ManagerTest extends TestCase {
$manager->getCount($notification);
}
+
+ public function dataIsFairUseOfFreePushService() {
+ return [
+ // Before 1st March
+ [1646089199, true, 4999, true],
+ [1646089199, true, 5000, true],
+ [1646089199, false, 4999, true],
+ [1646089199, false, 5000, true],
+
+ // After 1st March
+ [1646089200, true, 4999, true],
+ [1646089200, true, 5000, true],
+ [1646089200, false, 4999, true],
+ [1646089200, false, 5000, false],
+ ];
+ }
+
+ /**
+ * @dataProvider dataIsFairUseOfFreePushService
+ * @param int $time
+ * @param bool $hasValidSubscription
+ * @param int $userCount
+ * @param bool $isFair
+ */
+ public function testIsFairUseOfFreePushService(int $time, bool $hasValidSubscription, int $userCount, bool $isFair): void {
+ $this->timeFactory->method('getTime')
+ ->willReturn($time);
+
+ $this->subscriptionRegistry->method('delegateHasValidSubscription')
+ ->willReturn($hasValidSubscription);
+
+ $this->userManager->method('countSeenUsers')
+ ->willReturn($userCount);
+
+ $this->assertSame($isFair, $this->manager->isFairUseOfFreePushService());
+ }
}
diff --git a/tests/lib/Support/Subscription/RegistryTest.php b/tests/lib/Support/Subscription/RegistryTest.php
index 5349b041d8b..260232ac95d 100644
--- a/tests/lib/Support/Subscription/RegistryTest.php
+++ b/tests/lib/Support/Subscription/RegistryTest.php
@@ -75,8 +75,7 @@ class RegistryTest extends TestCase {
$this->serverContainer,
$this->userManager,
$this->groupManager,
- $this->logger,
- $this->notificationManager
+ $this->logger
);
}
@@ -177,7 +176,7 @@ class RegistryTest extends TestCase {
->method('get')
->willReturn($dummyGroup);
- $this->assertSame(true, $this->registry->delegateIsHardUserLimitReached());
+ $this->assertSame(true, $this->registry->delegateIsHardUserLimitReached($this->notificationManager));
}
public function testDelegateIsHardUserLimitReachedWithoutSupportApp() {
@@ -186,7 +185,7 @@ class RegistryTest extends TestCase {
->with('one-click-instance')
->willReturn(false);
- $this->assertSame(false, $this->registry->delegateIsHardUserLimitReached());
+ $this->assertSame(false, $this->registry->delegateIsHardUserLimitReached($this->notificationManager));
}
public function dataForUserLimitCheck() {
@@ -237,6 +236,6 @@ class RegistryTest extends TestCase {
->willReturn($dummyGroup);
}
- $this->assertSame($expectedResult, $this->registry->delegateIsHardUserLimitReached());
+ $this->assertSame($expectedResult, $this->registry->delegateIsHardUserLimitReached($this->notificationManager));
}
}