Browse Source

Remove capabilities for the mobile clients

Signed-off-by: Joas Schilling <coding@schilljs.com>
pull/1585/head
Joas Schilling 7 years ago
parent
commit
5605e9ca26
No known key found for this signature in database GPG Key ID: 7076EA9751AACDDA
  1. 18
      lib/Capabilities.php
  2. 90
      tests/php/CapabilitiesTest.php

18
lib/Capabilities.php

@ -25,10 +25,28 @@ declare(strict_types=1);
namespace OCA\Spreed;
use OCP\Capabilities\IPublicCapability;
use OCP\IUser;
use OCP\IUserSession;
class Capabilities implements IPublicCapability {
/** @var Config */
protected $config;
/** @var IUserSession */
protected $userSession;
public function __construct(Config $config,
IUserSession $userSession) {
$this->config = $config;
$this->userSession = $userSession;
}
public function getCapabilities(): array {
$user = $this->userSession->getUser();
if ($user instanceof IUser && $this->config->isDisabledForUser($user)) {
return [];
}
return [
'spreed' => [
'features' => [

90
tests/php/CapabilitiesTest.php

@ -1,4 +1,5 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2018, Joas Schilling <coding@schilljs.com>
*
@ -24,13 +25,78 @@
namespace OCA\Spreed\Tests\Unit;
use OCA\Spreed\Capabilities;
use OCA\Spreed\Config;
use OCP\Capabilities\IPublicCapability;
use OCP\IUser;
use OCP\IUserSession;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class CapabilitiesTest extends TestCase {
public function testGetCapabilities() {
$capabilities = new Capabilities();
/** @var Config|MockObject */
protected $config;
/** @var IUserSession|MockObject */
protected $userSession;
public function setUp() {
parent::setUp();
$this->config = $this->createMock(Config::class);
$this->userSession = $this->createMock(IUserSession::class);
}
public function testGetCapabilitiesGuest(): void {
$capabilities = new Capabilities(
$this->config,
$this->userSession
);
$this->userSession->expects($this->once())
->method('getUser')
->willReturn(null);
$this->config->expects($this->never())
->method('isDisabledForUser');
$this->assertInstanceOf(IPublicCapability::class, $capabilities);
$this->assertSame([
'spreed' => [
'features' => [
'audio',
'video',
'chat-v2',
'guest-signaling',
'empty-group-room',
'guest-display-names',
'multi-room-users',
'favorites',
'last-room-activity',
'no-ping',
'system-messages',
'mention-flag',
'in-call-flags',
'notification-levels',
'invite-groups-and-mails',
],
],
], $capabilities->getCapabilities());
}
public function testGetCapabilitiesUserAllowed(): void {
$capabilities = new Capabilities(
$this->config,
$this->userSession
);
$user = $this->createMock(IUser::class);
$this->userSession->expects($this->once())
->method('getUser')
->willReturn($user);
$this->config->expects($this->once())
->method('isDisabledForUser')
->with($user)
->willReturn(false);
$this->assertInstanceOf(IPublicCapability::class, $capabilities);
$this->assertSame([
@ -55,4 +121,24 @@ class CapabilitiesTest extends TestCase {
],
], $capabilities->getCapabilities());
}
public function testGetCapabilitiesUserDisallowed(): void {
$capabilities = new Capabilities(
$this->config,
$this->userSession
);
$user = $this->createMock(IUser::class);
$this->userSession->expects($this->once())
->method('getUser')
->willReturn($user);
$this->config->expects($this->once())
->method('isDisabledForUser')
->with($user)
->willReturn(true);
$this->assertInstanceOf(IPublicCapability::class, $capabilities);
$this->assertSame([], $capabilities->getCapabilities());
}
}
Loading…
Cancel
Save