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); }
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); }