Beispiel #1
0
 public async Task InviteMultipleMembersAsync(SignalR.TransportModels.Request.Member.InviteMultipleMembersRequest model)
 {
     await _connection.InvokeAsync("InviteMultipleMembersAsync", model);
 }
        public async Task Step3_AddInviteLeaveMember()
        {
            // Invite member
            // Arrange
            var client = _server.CreateClient();

            client.DefaultRequestHeaders.Add("Authorization", "Bearer " + _adminToken);

            var newMemberSignalRClient = new SignalRClient(_server.BaseAddress.ToString());
            var userToken = await GetJwtTokenAsync("*****@*****.**", "123QWqw!");

            await newMemberSignalRClient.ConnectAsync(userToken, _server.CreateHandler());

            var newUser = await newMemberSignalRClient.AddClientAsync();

            var inviteMultipleMembersRequest = new SignalR.TransportModels.Request.Member.InviteMultipleMembersRequest
            {
                ChannelId         = _testChannel.Id,
                RequestId         = "A372A27B-4860-44AB-9915-27B8CAFB68A3",
                InvitedMembersIds = new List <Guid> {
                    new Guid(newUser.MemberId.ToString())
                }
            };

            // Subscribe event
            MessageResponse userExistsaddedMessageResponse = null;

            void OnMessageAdded(MessageResponse response)
            {
                userExistsaddedMessageResponse = response;
            }

            newMemberSignalRClient.MessageAdded += OnMessageAdded;

            // Act
            async Task <ChannelResponse> GetChannelResponse(HttpClient httpClient)
            {
                var channelResponse = await httpClient.GetAsync(RequestUri);

                var channels = await channelResponse.Content.ReadAsStringAsync();

                var channel = JsonConvert.DeserializeObject <List <ChannelResponse> >(channels).FirstOrDefault();

                return(channel);
            }

            await _adminSignalRClient.InviteMultipleMembersAsync(inviteMultipleMembersRequest);

            var twoMemberChannel = await GetChannelResponse(client);

            var addMessageRequest = new AddMessageRequest
            {
                ChannelId = _testChannel.Id,
                Body      = "test_body",
                ImageUrl  = string.Empty,
                RequestId = "82EEC70D-D808-492C-98E3-6A5B47276990",
                Type      = MessageType.Default
            };

            await _adminSignalRClient.AddMessageAsync(addMessageRequest);

            // Unsubscribe events
            newMemberSignalRClient.MessageAdded -= OnMessageAdded;

            // Assert
            userExistsaddedMessageResponse.Should().NotBeNull();
            userExistsaddedMessageResponse.ChannelId.Should().Be(addMessageRequest.ChannelId);
            userExistsaddedMessageResponse.Body.Should().Be(addMessageRequest.Body);
            twoMemberChannel.Should().NotBeNull();
            twoMemberChannel.MembersCount.Should().Be(2);

            // Leave channel
            // Arrange
            var channelRequest = new ChannelRequest
            {
                ChannelId = _testChannel.Id,
                RequestId = "48033741-F54F-46A4-8AB4-3BFF5EACDBAC"
            };

            // Subscribe event
            MessageResponse userDoesntExistaddedMessageResponse = null;

            void OnMessageSent(MessageResponse response)
            {
                userDoesntExistaddedMessageResponse = response;
            }

            newMemberSignalRClient.MessageAdded += OnMessageSent;

            // Act
            await newMemberSignalRClient.LeaveChannelAsync(channelRequest);

            await _adminSignalRClient.AddMessageAsync(addMessageRequest);

            var oneMemberChannel = await GetChannelResponse(client);

            // Unsubscribe events
            newMemberSignalRClient.MessageAdded -= OnMessageSent;

            // Assert
            userDoesntExistaddedMessageResponse.Should().BeNull();
            oneMemberChannel.Should().NotBeNull();
            oneMemberChannel.MembersCount.Should().Be(1);
        }