public async Task CombinedChannelsConnectThenSubscribeThenDisconnectAsync() { // Arrange var pusher = PusherFactory.GetPusher(new FakeAuthoriser(UserNameFactory.CreateUniqueUserName()), saveTo: _clients); var disconnectedEvent = new AutoResetEvent(false); pusher.Disconnected += sender => { disconnectedEvent.Set(); }; List <string> channelNames = CreateChannelNames(); // Act await ConnectThenSubscribeMultipleChannelsTestAsync(pusher, channelNames).ConfigureAwait(false); await pusher.DisconnectAsync().ConfigureAwait(false); disconnectedEvent.WaitOne(TimeSpan.FromSeconds(5)); // Need to delay as there is no channel disconnected event to wait upon. await Task.Delay(1000).ConfigureAwait(false); // Assert AssertIsDisconnected(pusher, channelNames); }
public async Task UnsubscribeAllWithBacklogTest() { /* * Test provides code coverage for Pusher.Backlog scenarios. */ // Arrange var pusher = PusherFactory.GetPusher(new FakeAuthoriser(UserNameFactory.CreateUniqueUserName()), saveTo: _clients); List <string> channelNames = CreateChannelNames(numberOfChannels: 6); // Act await SubscribeMultipleChannelsTestAsync(connectBeforeSubscribing : true, pusher, channelNames).ConfigureAwait(false); IList <Channel> channels = pusher.GetAllChannels(); await pusher.DisconnectAsync().ConfigureAwait(false); await pusher.UnsubscribeAllAsync().ConfigureAwait(false); await pusher.ConnectAsync().ConfigureAwait(false); // Assert foreach (Channel channel in channels) { ValidateUnsubscribedChannel(pusher, channel); } }
public async Task CombinedChannelsSubscribeThenConnectThenUnsubscribeTest() { // Arrange var pusher = PusherFactory.GetPusher(new FakeAuthoriser(UserNameFactory.CreateUniqueUserName()), saveTo: _clients); List <string> channelNames = CreateChannelNames(numberOfChannels: 6); // Act foreach (string channelName in channelNames) { await pusher.SubscribeAsync(channelName).ConfigureAwait(false); } await pusher.ConnectAsync().ConfigureAwait(false); IList <Channel> channels = pusher.GetAllChannels(); foreach (string channelName in channelNames) { await pusher.UnsubscribeAsync(channelName).ConfigureAwait(false); } // Assert foreach (Channel channel in channels) { ValidateUnsubscribedChannel(pusher, channel); } }
public async Task CombinedChannelsConnectThenSubscribeAsync() { // Arrange var pusher = PusherFactory.GetPusher(new FakeAuthoriser(UserNameFactory.CreateUniqueUserName()), saveTo: _clients); List <string> channelNames = CreateChannelNames(); // Act and Assert await ConnectThenSubscribeMultipleChannelsTestAsync(pusher, channelNames).ConfigureAwait(false); }
public async Task CombinedChannelsConnectThenSubscribeThenUnsubscribeAllTest() { // Arrange var pusher = PusherFactory.GetPusher(new FakeAuthoriser(UserNameFactory.CreateUniqueUserName()), saveTo: _clients); List <string> channelNames = CreateChannelNames(numberOfChannels: 6); // Act await SubscribeMultipleChannelsTestAsync(connectBeforeSubscribing : true, pusher, channelNames).ConfigureAwait(false); IList <Channel> channels = pusher.GetAllChannels(); await pusher.UnsubscribeAllAsync().ConfigureAwait(false); // Assert foreach (Channel channel in channels) { ValidateUnsubscribedChannel(pusher, channel); } }
public void PresenceChannelShouldAddATypedMemberWhenGivenAMemberAsync() { // Arrange var stubOptions = new PusherOptions { Authorizer = new FakeAuthoriser(UserNameFactory.CreateUniqueUserName()) }; var pusher = PusherFactory.GetPusher(stubOptions); AutoResetEvent reset = new AutoResetEvent(false); pusher.Connected += sender => { reset.Set(); }; AsyncContext.Run(() => pusher.ConnectAsync()); reset.WaitOne(TimeSpan.FromSeconds(5)); reset.Reset(); var mockChannelName = ChannelNameFactory.CreateUniqueChannelName(presenceChannel: true); var channelSubscribed = false; // Act var channel = AsyncContext.Run(() => pusher.SubscribePresenceAsync <FakeUserInfo>(mockChannelName)); channel.Subscribed += sender => { channelSubscribed = true; reset.Set(); }; reset.WaitOne(TimeSpan.FromSeconds(10)); // Assert Assert.IsNotNull(channel); StringAssert.Contains(mockChannelName, channel.Name); Assert.IsTrue(channel.IsSubscribed); Assert.IsTrue(channelSubscribed); CollectionAssert.IsNotEmpty(channel.Members); }
public void PusherShouldSubscribeToAChannelWhenGivenAPopulatedPrivateChannelName() { // Arrange var stubOptions = new PusherOptions { Authorizer = new FakeAuthoriser(UserNameFactory.CreateUniqueUserName()) }; var pusher = PusherFactory.GetPusher(stubOptions); AutoResetEvent reset = new AutoResetEvent(false); pusher.Connected += sender => { reset.Set(); }; pusher.Connect(); reset.WaitOne(TimeSpan.FromSeconds(5)); reset.Reset(); var mockChannelName = ChannelNameFactory.CreateUniqueChannelName(privateChannel: true); var channelSubscribed = false; // Act var channel = AsyncContext.Run(() => pusher.Subscribe(mockChannelName)); channel.Subscribed += sender => { channelSubscribed = true; reset.Set(); }; reset.WaitOne(TimeSpan.FromSeconds(5)); // Assert Assert.IsNotNull(channel); StringAssert.Contains(mockChannelName, channel.Name); Assert.IsTrue(channel.IsSubscribed); Assert.IsTrue(channelSubscribed); }
public async Task CombinedChannelsSubscribeThenConnectThenReconnectWhenTheUnderlyingSocketIsClosedAsync() { // Arrange var pusher = PusherFactory.GetPusher(new FakeAuthoriser(UserNameFactory.CreateUniqueUserName()), saveTo: _clients); var subscribedEvent = new AutoResetEvent(false); List <string> channelNames = CreateChannelNames(); // Act await SubscribeThenConnectMultipleChannelsTestAsync(pusher, channelNames).ConfigureAwait(false); int subscribedCount = 0; pusher.Subscribed += (sender, channelName) => { subscribedCount++; if (subscribedCount == channelNames.Count) { subscribedEvent.Set(); } }; await Task.Run(() => { WebSocket socket = ConnectionTest.GetWebSocket(pusher); socket.Close(); }).ConfigureAwait(false); // Assert Assert.IsTrue(subscribedEvent.WaitOne(TimeSpan.FromSeconds(5))); AssertIsSubscribed(pusher, channelNames); }