Ejemplo n.º 1
0
        public async Task Step2_ShouldCreateChannel()
        {
            // Arrange
            var admin = await _adminSignalRClient.AddClientAsync();

            var client = await _userSignalRClient.AddClientAsync();

            // Subscribe event
            ChannelSummaryResponse createdChannel = null;

            void OnChannelCreated(ChannelSummaryResponse channelSummaryResponse)
            {
                createdChannel = channelSummaryResponse;
            }

            _adminSignalRClient.ChannelCreated += OnChannelCreated;

            // Subscribe event
            MemberSummaryResponse  joinedMember  = null;
            ChannelSummaryResponse joinedChannel = null;

            void OnMemberJoined(MemberSummaryResponse memberSummary, ChannelSummaryResponse channelSummaryResponse)
            {
                joinedMember  = memberSummary;
                joinedChannel = channelSummaryResponse;
            }

            _adminSignalRClient.MemberJoined += OnMemberJoined;

            var createChannelRequest = new CreateChannelRequest
            {
                Name           = "channel_name_without_spaces",
                Description    = "channel description",
                WelcomeMessage = "welcome message",
                Type           = ChannelType.Private,
                RequestId      = "3433E3F8-E363-4A07-8CAA-8F759340F769",
                AllowedMembers = new List <string>
                {
                    admin.MemberId.ToString(),
                client.MemberId.ToString()
                }
            };

            // Act
            _testChannel = await _adminSignalRClient.CreateChannelAsync(createChannelRequest);

            // Unsubscribe events
            _adminSignalRClient.ChannelCreated -= OnChannelCreated;
            _adminSignalRClient.MemberJoined   -= OnMemberJoined;

            // Assert
            createdChannel.Should().NotBeNull();
            createdChannel.Should().BeEquivalentTo(_testChannel);

            joinedMember.Should().NotBeNull();

            joinedChannel.Should().NotBeNull();
            joinedChannel.Should().BeEquivalentTo(_testChannel);
        }
Ejemplo n.º 2
0
        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);
        }