<?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; class JoinControllerTest extends TestCase { private $request; private $service; private $userSession; private $config; private $urlGenerator; private $controller; private $api; 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->controller = new JoinController( 'bbb', $this->request, $this->session, $this->service, $this->urlGenerator, $this->userSession, $this->config, $this->api ); $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(); } }