protected Task <ConferenceCreatedResponseDto> CreateConference(params UserAccount[] moderators) { var creationDto = new CreateConferenceRequestDto { Configuration = new ConferenceConfiguration { Moderators = new[] { "0" }.Concat(moderators.Select(x => x.Sub)).ToList(), }, Permissions = new Dictionary <PermissionType, Dictionary <string, JValue> >(), }; return(CreateConference(creationDto)); }
protected async Task <ConferenceCreatedResponseDto> CreateConference(CreateConferenceRequestDto creationDto) { var response = await Client.PostAsync("/v1/conference", new JsonNetContent(creationDto)); response.EnsureSuccessStatusCode(); var createdConference = await response.Content.ReadFromJsonAsync <ConferenceCreatedResponseDto>(); Assert.NotNull(createdConference); Logger.Information("Created conference {conferenceId}", createdConference?.ConferenceId); return(createdConference !); }
public async Task OpenBreakoutRooms_MoveToBreakoutRoom_UpdatePermissions() { const int amount = 1; var permission = DefinedPermissions.Media.CanChangeOtherParticipantsProducers; // arrange var conferenceCreationDto = new CreateConferenceRequestDto { Configuration = new ConferenceConfiguration { Moderators = Moderator.Yield().Select(x => x.Sub).ToList() }, Permissions = new Dictionary <PermissionType, Dictionary <string, JValue> > { { PermissionType.Conference, new Dictionary <string, JValue>(permission.Configure(false).Yield()) }, { PermissionType.BreakoutRoom, new Dictionary <string, JValue>(permission.Configure(true).Yield()) }, }, }; var conference = await CreateConference(conferenceCreationDto); var connection = await ConnectUserToConference(Moderator, conference); AssertSuccess(await OpenConference(connection)); AssertSuccess(await connection.Hub.InvokeAsync <SuccessOrError <Unit> >(nameof(CoreHub.OpenBreakoutRooms), new OpenBreakoutRoomsDto(amount, null, null, null))); var notModeratorUser = CreateUser(); var notModeratorConn = await ConnectUserToConference(notModeratorUser, conference); Task AssertPermission(bool value) { return(notModeratorConn.SyncObjects.AssertSyncObject <SynchronizedParticipantPermissions>( SynchronizedParticipantPermissions.SyncObjId(notModeratorUser.Sub), syncObj => { Assert.Contains(permission.Configure(value), syncObj.Permissions); })); } await AssertPermission(false); await notModeratorConn.SyncObjects.AssertSyncObject <SynchronizedRooms>(SynchronizedRooms.SyncObjId, value => Assert.Equal(2, value.Rooms.Count)); var syncRooms = notModeratorConn.SyncObjects.GetSynchronizedObject <SynchronizedRooms>(SynchronizedRooms.SyncObjId); var breakoutRoom = syncRooms.Rooms.Single(x => x.RoomId != syncRooms.DefaultRoomId); // act AssertSuccess(await notModeratorConn.Hub.InvokeAsync <SuccessOrError <Unit> >(nameof(CoreHub.SwitchRoom), new SwitchRoomDto(breakoutRoom.RoomId))); // assert await AssertPermission(true); }