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); $this->controller = new JoinController( 'bbb', $this->request, $this->session, $this->service, $this->urlGenerator, $this->userSession, $this->config, $this->api, $this->permission ); $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(); } }