Beispiel #1
0
        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));
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
            });
        }
Beispiel #5
0
        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);
            });
        }
Beispiel #6
0
        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); });
        }
Beispiel #7
0
        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);
        }