public async Task PatchConference_ChangeName_UpdateSynchronizedConferenceInfo() { const string newName = "Hello World"; // arrange var conference = await CreateConference(); var connection = await ConnectUserToConference(Moderator, conference); // act var client = Factory.CreateClient(); connection.User.SetupHttpClient(client); var patch = new JsonPatchDocument <ConferenceData>(); patch.Add(x => x.Configuration.Name, newName); var response = await client.PatchAsync($"/v1/conference/{conference.ConferenceId}", JsonNetContent.Create(patch)); response.EnsureSuccessStatusCode(); // assert await connection.SyncObjects.AssertSyncObject <SynchronizedConferenceInfo>(SyncObjId, value => Assert.Equal(newName, value.Name)); }
public async Task PromoteUserToModerator_ParticipantJoined_UpdateSynchronizedObject() { // arrange var(connection, conference) = await ConnectToOpenedConference(); var olaf = CreateUser(); await ConnectUserToConference(olaf, conference); await connection.SyncObjects.AssertSyncObject <SynchronizedParticipants>(SyncObjId, value => Assert.Contains(value.Participants, x => x.Key == olaf.Sub && !x.Value.IsModerator)); // act var client = Factory.CreateClient(); connection.User.SetupHttpClient(client); var patch = new JsonPatchDocument <ConferenceData>(); patch.Add(x => x.Configuration.Moderators, olaf.Sub); var response = await client.PatchAsync($"/v1/conference/{conference.ConferenceId}", JsonNetContent.Create(patch)); response.EnsureSuccessStatusCode(); // assert await connection.SyncObjects.AssertSyncObject <SynchronizedParticipants>(SyncObjId, value => Assert.Contains(value.Participants, x => x.Key == olaf.Sub && x.Value.IsModerator)); }
public async Task PatchConference_DoesNotExist_ReturnConferenceNotFound() { _factory.CreateUser("Vincent", true).SetupHttpClient(_client); var patch = GetValidPatch(); var response = await _client.PatchAsync("/v1/conference/asdasd", JsonNetContent.Create(patch)); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); var result = await response.Content.ReadFromJsonAsync <Error>(); Assert.Equal(ConferenceError.ConferenceNotFound.Code, result?.Code); }
public async Task PatchConference_ChangePermissions_UpdateSynchronizedPermissions() { var permission = DefinedPermissions.Conference.CanOpenAndClose; // arrange var conference = await CreateConference(Moderator); var connection = await ConnectUserToConference(Moderator, conference); var syncObjId = SynchronizedParticipantPermissions.SyncObjId(connection.User.Sub); await connection.SyncObjects.AssertSyncObject <SynchronizedParticipantPermissions>(syncObjId, value => Assert.Contains(value.Permissions, x => x.Key == permission.Key)); // act var client = Factory.CreateClient(); connection.User.SetupHttpClient(client); var patch = new JsonPatchDocument <ConferenceData>(); patch.Add(x => x.Permissions[PermissionType.Moderator], new Dictionary <string, JValue>(permission.Configure(false).Yield())); var response = await client.PatchAsync($"/v1/conference/{conference.ConferenceId}", JsonNetContent.Create(patch)); response.EnsureSuccessStatusCode(); // assert await connection.SyncObjects.AssertSyncObject <SynchronizedParticipantPermissions>(syncObjId, value => { Assert.False(new CachedPermissionStack(value.Permissions).GetPermissionValue(permission).Result); }); }
public async Task PatchConference_IsAdmin_ReturnSuccess() { // arrange _factory.CreateUser("Vincent", true).SetupHttpClient(_client); var conferenceData = new ConferenceData(); conferenceData.Configuration.Moderators.Add("test"); var conferenceId = await CreateConference(conferenceData); // act var patch = new JsonPatchDocument <ConferenceData>(); patch.Add(x => x.Configuration.Moderators, "test2"); var response = await _client.PatchAsync($"/v1/conference/{conferenceId}", JsonNetContent.Create(patch)); response.EnsureSuccessStatusCode(); // assert await AssertConference(conferenceId, conference => { AssertHelper.AssertScrambledEquals(new[] { "test", "test2" }, conference.Configuration.Moderators); }); }
public async Task PatchConference_RemoveModeratorSoNoModeratorsExist_ReturnErrorAndDontChange() { // arrange _factory.CreateUser("Vincent", true).SetupHttpClient(_client); var conferenceData = new ConferenceData(); conferenceData.Configuration.Moderators.Add("test"); var conferenceId = await CreateConference(conferenceData); // act var patch = new JsonPatchDocument <ConferenceData>(); patch.Remove(x => x.Configuration.Moderators, 0); var response = await _client.PatchAsync($"/v1/conference/{conferenceId}", JsonNetContent.Create(patch)); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); // assert await AssertConference(conferenceId, conference => { Assert.Single(conference.Configuration.Moderators); }); }
public async Task PatchConference_IsNeitherModeratorNorAdmin_ReturnFailure() { // arrange var user = _factory.CreateUser("Vincent", false).SetupHttpClient(_client); var conferenceData = new ConferenceData(); conferenceData.Configuration.Moderators.Add("wtf"); var conferenceId = await CreateConference(conferenceData); // act var patch = new JsonPatchDocument <ConferenceData>(); patch.Add(x => x.Configuration.Moderators, "test2"); var response = await _client.PatchAsync($"/v1/conference/{conferenceId}", JsonNetContent.Create(patch)); Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode); }