public void CommitNotLoggedInTest() { var connection = Substitute.For <IPersistentConnection>(); var deviceAuthenticator = Substitute.For <IDeviceAuthenticator>(); var deviceOperations = Substitute.For <IDeviceOperations>(); var dateTimeProvider = Substitute.For <IDateTimeProvider>(); var outgoingMessageReader = Substitute.For <IMessagingOperations>(); dateTimeProvider.UtcNow.Returns(DateTime.UtcNow); var pusherRegistry = new PusherRegistry(dateTimeProvider); var connectionRegistry = new ConnectionRegistry(pusherRegistry, null); var deviceId = Identity.Next(); connection.ConnectionId.Returns(Guid.NewGuid()); deviceAuthenticator.Authenticate(null).ReturnsForAnyArgs(true); deviceOperations.Get(null).ReturnsForAnyArgs(TestDataCreator.Device(deviceId, "1234", "2345", "3456", "4567", 1)); connectionRegistry.RegisterInitiatedConnection(connection); var commandExecutor = new CommandExecutor(pusherRegistry, connectionRegistry, outgoingMessageReader, deviceAuthenticator, deviceOperations, null, null); dateTimeProvider.UtcNow.Returns(DateTime.UtcNow); pusherRegistry.SetAsCommitNeededConnections(new[] { connection }); outgoingMessageReader.Commit((long)0).ReturnsForAnyArgs(OutgoingState.Ok); connection.ClearReceivedCalls(); commandExecutor.Execute(connection, new CommitCommand()); connection.DidNotReceive().Heartbeat(); }
public void GetPeekConnectionRequeueFromCommitToPeekTest() { var dateTimeProvider = Substitute.For <IDateTimeProvider>(); dateTimeProvider.UtcNow.Returns(DateTime.UtcNow); var pusherRegistry = new PusherRegistry(dateTimeProvider); var connectionRegistry = new ConnectionRegistry(pusherRegistry, null); var persistentConnection = Substitute.For <IPersistentConnection>(); persistentConnection.ConnectionId.Returns(Guid.NewGuid()); connectionRegistry.RegisterInitiatedConnection(persistentConnection); connectionRegistry.PromoteToLoggedInConnection(persistentConnection, Identity.Next(), 1); connectionRegistry.PromoteToSubscribedConnection(persistentConnection.DeviceId, SubscriptionType.PeekAndCommit); persistentConnection.LastHeartbeat.Returns(DateTime.UtcNow.AddSeconds(-20.0)); persistentConnection.NextPeekTime.Returns(DateTime.UtcNow.AddSeconds(-0.1)); var conn = pusherRegistry.GetPeekConnection(); pusherRegistry.SetAsCommitNeededConnections(new[] { conn }); persistentConnection.LastCommitTime = DateTime.UtcNow.AddSeconds(-20); dateTimeProvider.UtcNow.Returns(DateTime.UtcNow.AddMilliseconds(200)); pusherRegistry.GetPeekConnection(); }
public void CommitSuccessTest() { var connection = Substitute.For <IPersistentConnection>(); var deviceAuthenticator = Substitute.For <IDeviceAuthenticator>(); var deviceOperations = Substitute.For <IDeviceOperations>(); var dateTimeProvider = Substitute.For <IDateTimeProvider>(); var outgoingMessageReader = Substitute.For <IMessagingOperations>(); dateTimeProvider.UtcNow.Returns(DateTime.UtcNow); var pusherRegistry = new PusherRegistry(dateTimeProvider); var connectionRegistry = new ConnectionRegistry(pusherRegistry, null); var deviceId = Identity.Next(); connection.ConnectionId.Returns(Guid.NewGuid()); deviceAuthenticator.Authenticate(null).ReturnsForAnyArgs(true); deviceOperations.Get(null).ReturnsForAnyArgs(TestDataCreator.Device(deviceId, "1234", "2345", "3456", "4567", 1)); connectionRegistry.RegisterInitiatedConnection(connection); var commandExecutor = new CommandExecutor(pusherRegistry, connectionRegistry, outgoingMessageReader, deviceAuthenticator, deviceOperations, null, null); commandExecutor.Execute(connection, new LoginCommand(deviceId + " " + Identity.Next())); commandExecutor.Execute(connection, new SubscribeCommand("peekandcommit")); dateTimeProvider.UtcNow.Returns(DateTime.UtcNow); pusherRegistry.SetAsCommitNeededConnections(new[] { connection }); outgoingMessageReader.Commit((long)0).ReturnsForAnyArgs(OutgoingState.Ok); Assert.IsTrue(pusherRegistry.IsCommitable(deviceId)); commandExecutor.Execute(connection, new CommitCommand()); Assert.IsFalse(pusherRegistry.IsCommitable(deviceId)); commandExecutor.Execute(connection, new CommitCommand()); }