Skip to content

Commit

Permalink
fix(push): Use fallback keys that look like a real one
Browse files Browse the repository at this point in the history
Signed-off-by: Joas Schilling <coding@schilljs.com>
  • Loading branch information
nickvergessen committed Oct 11, 2024
1 parent 79f3c56 commit c61af81
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
13 changes: 12 additions & 1 deletion lib/Push.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
use OCP\Notification\IManager as INotificationManager;
use OCP\Notification\IncompleteParsedNotificationException;
use OCP\Notification\INotification;
use OCP\Security\ISecureRandom;
use OCP\UserStatus\IManager as IUserStatusManager;
use OCP\UserStatus\IUserStatus;
use OCP\Util;
Expand Down Expand Up @@ -81,6 +82,7 @@ public function __construct(
protected IUserStatusManager $userStatusManager,
protected IFactory $l10nFactory,
protected ITimeFactory $timeFactory,
protected ISecureRandom $random,
protected LoggerInterface $log,
) {
$this->cache = $cacheFactory->createDistributed('pushtokens');
Expand Down Expand Up @@ -426,7 +428,11 @@ protected function sendNotificationsToProxies(): void {
if ($subscriptionAwareServer === 'https://push-notifications.nextcloud.com') {
$subscriptionKey = $this->config->getAppValue('support', 'subscription_key');
} else {
$subscriptionKey = $this->config->getSystemValueString('instanceid');
$subscriptionKey = $this->config->getAppValue(Application::APP_ID, 'push_subscription_key');
if ($subscriptionKey === '') {
$subscriptionKey = $this->createPushSubscriptionKey();
$this->config->setAppValue(Application::APP_ID, 'push_subscription_key', $subscriptionKey);
}
}

$client = $this->clientService->newClient();
Expand Down Expand Up @@ -733,4 +739,9 @@ protected function deletePushTokenByDeviceIdentifier(string $deviceIdentifier):
protected function createFakeUserObject(string $userId): IUser {
return new FakeUser($userId);
}

protected function createPushSubscriptionKey(): string {
$key = $this->random->generate(25, ISecureRandom::CHAR_ALPHANUMERIC);
return implode('-', str_split($key, 5));
}
}
5 changes: 5 additions & 0 deletions tests/Unit/PushTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
use OCP\L10N\IFactory;
use OCP\Notification\IManager as INotificationManager;
use OCP\Notification\INotification;
use OCP\Security\ISecureRandom;
use OCP\UserStatus\IManager as IUserStatusManager;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Http\Message\ResponseInterface;
Expand All @@ -53,6 +54,7 @@ class PushTest extends TestCase {
protected IUserStatusManager&MockObject $userStatusManager;
protected IFactory&MockObject $l10nFactory;
protected ITimeFactory&MockObject $timeFactory;
protected ISecureRandom&MockObject $random;
protected LoggerInterface&MockObject $logger;

protected function setUp(): void {
Expand All @@ -69,6 +71,7 @@ protected function setUp(): void {
$this->userStatusManager = $this->createMock(IUserStatusManager::class);
$this->l10nFactory = $this->createMock(IFactory::class);
$this->timeFactory = $this->createMock(ITimeFactory::class);
$this->random = $this->createMock(ISecureRandom::class);
$this->logger = $this->createMock(LoggerInterface::class);

$this->cacheFactory->method('createDistributed')
Expand All @@ -93,6 +96,7 @@ protected function getPush(array $methods = []): Push|MockObject {
$this->userStatusManager,
$this->l10nFactory,
$this->timeFactory,
$this->random,
$this->logger,
])
->onlyMethods($methods)
Expand All @@ -110,6 +114,7 @@ protected function getPush(array $methods = []): Push|MockObject {
$this->userStatusManager,
$this->l10nFactory,
$this->timeFactory,
$this->random,
$this->logger,
);
}
Expand Down

0 comments on commit c61af81

Please sign in to comment.