cloud_bbb/tests/Unit/Controller/JoinControllerTest.php

135 lines
3.1 KiB
PHP
Raw Normal View History

2020-06-10 13:55:21 +02:00
<?php
namespace OCA\BigBlueButton\Tests\Controller;
use PHPUnit\Framework\TestCase;
use OCP\AppFramework\Http\RedirectResponse;
use OCP\IURLGenerator;
use OCP\ISession;
use OCP\IUserSession;
use OCP\IConfig;
use OCP\IRequest;
use OCP\IUser;
use OCA\BigBlueButton\Service\RoomService;
use OCA\BigBlueButton\Controller\JoinController;
use OCA\BigBlueButton\BigBlueButton\API;
use OCA\BigBlueButton\NotFoundException;
use OCA\BigBlueButton\Db\Room;
use OCA\BigBlueButton\Permission;
2020-06-10 13:55:21 +02:00
class JoinControllerTest extends TestCase
{
private $request;
private $service;
private $userSession;
private $config;
private $urlGenerator;
private $controller;
private $api;
private $permission;
2020-06-10 13:55:21 +02:00
private $room;
public function setUp(): void
{
parent::setUp();
$this->request = $this->createMock(IRequest::class);
$this->session = $this->createMock(ISession::class);
$this->service = $this->createMock(RoomService::class);
$this->userSession = $this->createMock(IUserSession::class);
$this->config = $this->createMock(IConfig::class);
$this->urlGenerator = $this->createMock(IURLGenerator::class);
$this->api = $this->createMock(API::class);
$this->permission = $this->createMock(Permission::class);
2020-06-10 13:55:21 +02:00
$this->controller = new JoinController(
'bbb',
$this->request,
$this->session,
$this->service,
$this->urlGenerator,
$this->userSession,
$this->config,
$this->api,
$this->permission
2020-06-10 13:55:21 +02:00
);
$this->room = new Room();
$this->room->uid = 'uid_foo';
$this->room->userId = 'user_foo';
$this->room->access = Room::ACCESS_PUBLIC;
$this->room->name = 'name_foo';
$this->room->password = 'password_foo';
}
public function testNonExistingRoom()
{
$this->expectException(NotFoundException::class);
$this->service
->expects($this->once())
->method('findByUID')
->willReturn(null);
$this->controller->index(null);
}
public function testUserIsLoggedIn()
{
$this->controller->setToken($this->room->uid);
$this->service
->expects($this->once())
->method('findByUID')
->willReturn($this->room);
$this->userSession
->expects($this->once())
->method('isLoggedIn')
->willReturn(true);
$user = $this->createMock(IUser::class);
$user->method('getDisplayName')->willReturn('User Bar');
$user->method('getUID')->willReturn('user_bar');
$this->userSession
->expects($this->once())
->method('getUser')
->willReturn($user);
$this->api
->expects($this->once())
->method('createMeeting')
->willReturn(12345);
$url = 'https://foobar';
$this->api
->expects($this->once())
->method('createJoinUrl')
->willReturn($url);
$result = $this->controller->index(null);
$this->assertInstanceOf(RedirectResponse::class, $result);
$this->assertEquals($url, $result->getRedirectURL());
}
public function testUserNeedsToAuthenticate()
{
$this->markTestIncomplete();
}
public function testInvalidDisplayname()
{
$this->markTestIncomplete();
}
public function testPasswordRequired()
{
$this->markTestIncomplete();
}
public function testFormActionAllowed()
{
$this->markTestIncomplete();
}
}