Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Feature/Controller/OpenViduTest.php
Show First 20 Lines • Show All 116 Lines • ▼ Show 20 Lines | public function testJoinRoom(): void | ||||
$this->assertSame(Room::ROLE_MODERATOR, $json['role']); | $this->assertSame(Room::ROLE_MODERATOR, $json['role']); | ||||
$this->assertSame($session_id, $json['session']); | $this->assertSame($session_id, $json['session']); | ||||
$this->assertTrue(is_string($session_id) && !empty($session_id)); | $this->assertTrue(is_string($session_id) && !empty($session_id)); | ||||
$this->assertTrue(strpos($json['token'], 'wss://') === 0); | $this->assertTrue(strpos($json['token'], 'wss://') === 0); | ||||
$this->assertTrue(!array_key_exists('shareToken', $json)); | $this->assertTrue(!array_key_exists('shareToken', $json)); | ||||
$john_token = $json['token']; | $john_token = $json['token']; | ||||
// Non-owner, now the session exists | // Non-owner, now the session exists, no 'init' argument | ||||
$response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}"); | $response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}"); | ||||
$response->assertStatus(422); | |||||
$json = $response->json(); | |||||
$this->assertSame(322, $json['code']); | |||||
$this->assertTrue(empty($json['token'])); | |||||
$this->assertTrue(empty($json['shareToken'])); | |||||
// Non-owner, now the session exists, with 'init', but no 'role' argument | |||||
$response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", ['init' => 1]); | |||||
$response->assertStatus(200); | |||||
$json = $response->json(); | |||||
$this->assertSame(Room::ROLE_SUBSCRIBER, $json['role']); | |||||
$this->assertSame($session_id, $json['session']); | |||||
$this->assertTrue(strpos($json['token'], 'wss://') === 0); | |||||
$this->assertTrue($json['token'] != $john_token); | |||||
$this->assertTrue(empty($json['shareToken'])); | |||||
// Non-owner, now the session exists, with 'init', and with 'role=PUBLISHER' | |||||
$post = ['role' => Room::ROLE_PUBLISHER, 'init' => 1]; | |||||
$response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", $post); | |||||
$response->assertStatus(200); | $response->assertStatus(200); | ||||
$json = $response->json(); | $json = $response->json(); | ||||
$this->assertSame(Room::ROLE_PUBLISHER, $json['role']); | $this->assertSame(Room::ROLE_PUBLISHER, $json['role']); | ||||
$this->assertSame($session_id, $json['session']); | $this->assertSame($session_id, $json['session']); | ||||
$this->assertTrue(strpos($json['token'], 'wss://') === 0); | $this->assertTrue(strpos($json['token'], 'wss://') === 0); | ||||
$this->assertTrue($json['token'] != $john_token); | $this->assertTrue($json['token'] != $john_token); | ||||
Show All 18 Lines | public function testJoinRoom(): void | ||||
// Non-owner, password protected room, invalid provided | // Non-owner, password protected room, invalid provided | ||||
$response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", ['password' => 'aa']); | $response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", ['password' => 'aa']); | ||||
$response->assertStatus(422); | $response->assertStatus(422); | ||||
$json = $response->json(); | $json = $response->json(); | ||||
$this->assertSame(325, $json['code']); | $this->assertSame(325, $json['code']); | ||||
// Non-owner, password protected room, valid password provided | // Non-owner, password protected room, valid password provided | ||||
$response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", ['password' => 'pass']); | // TODO: Test without init=1 | ||||
$post = ['password' => 'pass', 'init' => 'init']; | |||||
$response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", $post); | |||||
$response->assertStatus(200); | $response->assertStatus(200); | ||||
$json = $response->json(); | $json = $response->json(); | ||||
$this->assertSame($session_id, $json['session']); | $this->assertSame($session_id, $json['session']); | ||||
// Make sure the room owner can access the password protected room w/o password | // Make sure the room owner can access the password protected room w/o password | ||||
$response = $this->actingAs($john)->post("api/v4/openvidu/rooms/{$room->name}"); | // TODO: Test without init=1 | ||||
$post = ['init' => 'init']; | |||||
$response = $this->actingAs($john)->post("api/v4/openvidu/rooms/{$room->name}", $post); | |||||
$response->assertStatus(200); | $response->assertStatus(200); | ||||
} | } | ||||
/** | /** | ||||
* Test locked room and join requests | * Test locked room and join requests | ||||
* | * | ||||
* @group openvidu | * @group openvidu | ||||
*/ | */ | ||||
Show All 20 Lines | public function testJoinRequests(): void | ||||
$this->assertCount(4, $json); | $this->assertCount(4, $json); | ||||
$this->assertSame(326, $json['code']); | $this->assertSame(326, $json['code']); | ||||
$this->assertSame('error', $json['status']); | $this->assertSame('error', $json['status']); | ||||
$this->assertSame('Failed to join the session. Room locked.', $json['message']); | $this->assertSame('Failed to join the session. Room locked.', $json['message']); | ||||
$this->assertTrue($json['config']['locked']); | $this->assertTrue($json['config']['locked']); | ||||
// Non-owner, locked room, invalid requestId | // Non-owner, locked room, invalid requestId | ||||
$post = ['nickname' => 'name', 'requestId' => '-----']; | $post = ['nickname' => 'name', 'requestId' => '-----', 'init' => 1]; | ||||
$response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", $post); | $response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", $post); | ||||
$response->assertStatus(422); | $response->assertStatus(422); | ||||
$json = $response->json(); | $json = $response->json(); | ||||
$this->assertSame(326, $json['code']); | $this->assertSame(326, $json['code']); | ||||
// Non-owner, locked room, invalid requestId | // Non-owner, locked room, invalid requestId | ||||
$post = ['nickname' => 'name', 'picture' => '-----']; | $post = ['nickname' => 'name', 'init' => 1]; | ||||
$response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", $post); | $response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", $post); | ||||
$response->assertStatus(422); | $response->assertStatus(422); | ||||
$json = $response->json(); | $json = $response->json(); | ||||
$this->assertSame(326, $json['code']); | $this->assertSame(326, $json['code']); | ||||
// Non-owner, locked room, valid input | // Non-owner, locked room, valid input | ||||
$reqId = '12345678'; | $reqId = '12345678'; | ||||
▲ Show 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | public function testJoinRequests(): void | ||||
// Valid request | // Valid request | ||||
$response = $this->actingAs($john)->post("api/v4/openvidu/rooms/{$room->name}/request/{$reqId}/accept"); | $response = $this->actingAs($john)->post("api/v4/openvidu/rooms/{$room->name}/request/{$reqId}/accept"); | ||||
$response->assertStatus(200); | $response->assertStatus(200); | ||||
$json = $response->json(); | $json = $response->json(); | ||||
$this->assertSame('success', $json['status']); | $this->assertSame('success', $json['status']); | ||||
// Non-owner, locked room, join request accepted | // Non-owner, locked room, join request accepted | ||||
$post['init'] = 1; | |||||
$post['role'] = Room::ROLE_PUBLISHER; | |||||
$response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", $post); | $response = $this->actingAs($jack)->post("api/v4/openvidu/rooms/{$room->name}", $post); | ||||
$response->assertStatus(200); | $response->assertStatus(200); | ||||
$json = $response->json(); | $json = $response->json(); | ||||
$this->assertSame(Room::ROLE_PUBLISHER, $json['role']); | $this->assertSame(Room::ROLE_PUBLISHER, $json['role']); | ||||
$this->assertTrue(strpos($json['token'], 'wss://') === 0); | $this->assertTrue(strpos($json['token'], 'wss://') === 0); | ||||
// TODO: Test a scenario where both password and lock are enabled | // TODO: Test a scenario where both password and lock are enabled | ||||
Show All 9 Lines | class OpenViduTest extends TestCase | ||||
{ | { | ||||
$this->assignBetaEntitlement('john@kolab.org', 'meet'); | $this->assignBetaEntitlement('john@kolab.org', 'meet'); | ||||
// There's no asy way to logout the user in the same test after | // There's no asy way to logout the user in the same test after | ||||
// using actingAs(). That's why this is moved to a separate test | // using actingAs(). That's why this is moved to a separate test | ||||
$room = Room::where('name', 'john')->first(); | $room = Room::where('name', 'john')->first(); | ||||
// Guest, request with screenShare token | // Guest, request with screenShare token | ||||
$response = $this->post("api/v4/openvidu/rooms/{$room->name}", ['screenShare' => 1]); | $post = ['role' => Room::ROLE_PUBLISHER, 'screenShare' => 1, 'init' => 1]; | ||||
$response = $this->post("api/v4/openvidu/rooms/{$room->name}", $post); | |||||
$response->assertStatus(200); | $response->assertStatus(200); | ||||
$json = $response->json(); | $json = $response->json(); | ||||
$this->assertSame(Room::ROLE_PUBLISHER, $json['role']); | $this->assertSame(Room::ROLE_PUBLISHER, $json['role']); | ||||
$this->assertSame($room->session_id, $json['session']); | $this->assertSame($room->session_id, $json['session']); | ||||
$this->assertTrue(strpos($json['token'], 'wss://') === 0); | $this->assertTrue(strpos($json['token'], 'wss://') === 0); | ||||
$this->assertTrue(strpos($json['shareToken'], 'wss://') === 0); | $this->assertTrue(strpos($json['shareToken'], 'wss://') === 0); | ||||
▲ Show 20 Lines • Show All 197 Lines • Show Last 20 Lines |