Ejemplo n.º 1
0
        public void TestHubGroupMessage(string input, string hub)
        {
            var hubs = new List <string> {
                "hub1", "hub.hub1", "hub.hub1.h.hub2"
            };
            var parser                = new SignalRMessageParser(hubs, _resolver);
            var groupName             = GenerateRandomName();
            var fullName              = PrefixHelper.GetHubGroupName(hub + "." + groupName);
            var message               = SignalRMessageUtility.CreateMessage(fullName, input);
            var excludedConnectionIds = new string[] { GenerateRandomName(), GenerateRandomName() };

            message.Filter = GetFilter(excludedConnectionIds.Select(s => PrefixHelper.GetConnectionId(s)).ToList());

            var msgs = parser.GetMessages(message).ToList();

            Assert.Single(msgs);
            var msg = msgs[0].Message as GroupBroadcastDataMessage;

            Assert.NotNull(msg);

            // For group message, it is the full name as the group, e.g. hg-hub.hub1.h.hub2.abcde
            Assert.Equal(fullName, msg.GroupName);
            Assert.Equal <string>(excludedConnectionIds, msg.ExcludedList);
            Assert.Equal(input, msg.Payloads["json"].GetSingleFramePayload());
        }
        public void TestGetMessageWithUnknownKeyThrows(string key)
        {
            var hubs    = new List <string> {
            };
            var parser  = new SignalRMessageParser(hubs, _resolver);
            var raw     = "<script type=\"\"></script>";
            var message = new Message("foo", key, new ArraySegment <byte>(Encoding.Default.GetBytes(raw)));

            var result = Assert.Throws <NotSupportedException>(() => parser.GetMessages(message).ToList());
        }
        public void TestAddToGroupCommandMessageWithInvalidKeyThrows(CommandType type, string invalidKey)
        {
            var hubs      = new List <string> {
            };
            var parser    = new SignalRMessageParser(hubs, _resolver);
            var groupName = GenerateRandomName();
            var command   = new Command
            {
                CommandType = type,
                Value       = groupName,
                WaitForAck  = true
            };

            var message = SignalRMessageUtility.CreateMessage(invalidKey, command);

            Assert.Throws <InvalidDataException>(() => parser.GetMessages(message).ToList());
        }
        public void TestOtherGroupCommandMessagesAreIgnored(CommandType type)
        {
            var hubs      = new List <string> {
            };
            var parser    = new SignalRMessageParser(hubs, _resolver);
            var groupName = GenerateRandomName();
            var command   = new Command
            {
                CommandType = type,
                Value       = groupName,
                WaitForAck  = true
            };

            var connectionId = GenerateRandomName();
            var message      = SignalRMessageUtility.CreateMessage(PrefixHelper.GetConnectionId(connectionId), command);

            var msgs = parser.GetMessages(message).ToList();

            Assert.Empty(msgs);
        }
        public void TestHubUserMessageWithMultiplePossiblities()
        {
            var hubs = new List <string> {
                "hub", "hub.hub1", "hub.hub1.h.hub2", ".", "......"
            };
            var parser   = new SignalRMessageParser(hubs, _resolver);
            var fullName = "hub.hub1.h.hub2.user1";
            var message  = SignalRMessageUtility.CreateMessage(PrefixHelper.GetHubUserId(fullName), null);

            var msgs = parser.GetMessages(message).ToList();

            Assert.Equal(3, msgs.Count);
            var msg = msgs[0].Message as UserDataMessage;

            Assert.NotNull(msg);
            Assert.Equal("h.hub2.user1", msg.UserId);
            msg = msgs[1].Message as UserDataMessage;
            Assert.NotNull(msg);
            Assert.Equal("user1", msg.UserId);
            msg = msgs[2].Message as UserDataMessage;
            Assert.NotNull(msg);
            Assert.Equal("hub1.h.hub2.user1", msg.UserId);
        }
Ejemplo n.º 6
0
        public void TestRemoveFromGroupCommandMessage()
        {
            var hubs      = new List <string> {
            };
            var parser    = new SignalRMessageParser(hubs, _resolver, NullLogger <SignalRMessageParser> .Instance);
            var groupName = GenerateRandomName();
            var command   = new Command
            {
                CommandType = CommandType.RemoveFromGroup,
                Value       = groupName,
                WaitForAck  = true
            };

            var connectionId = GenerateRandomName();
            var message      = SignalRMessageUtility.CreateMessage(PrefixHelper.GetConnectionId(connectionId), command);

            var msgs = parser.GetMessages(message).ToList();

            Assert.Single(msgs);
            var msg = Assert.IsType <LeaveGroupWithAckMessage>(msgs[0].Message);

            Assert.Equal(connectionId, msg.ConnectionId);
            Assert.Equal(groupName, msg.GroupName);
        }