public void should_publish_started_event() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); var command = new RegisterPeerCommand(peerDescriptor); _handler.Handle(command); _bus.ExpectExactly(new PeerStarted(peerDescriptor)); }
public void should_add_peer_to_repository() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); var registerCommand = new RegisterPeerCommand(peerDescriptor); _handler.Handle(registerCommand); _repositoryMock.Verify(x => x.AddOrUpdatePeer(registerCommand.Peer)); }
public void should_handle_null_timestamp_when_removing_all_subscriptions_for_a_peer() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); peerDescriptor.TimestampUtc = null; var registerCommand = new RegisterPeerCommand(peerDescriptor); Assert.That(() => _handler.Handle(registerCommand), Throws.InstanceOf <InvalidOperationException>().With.Message.EqualTo("The TimestampUtc must be provided when registering")); }
public void should_report_registration_speed() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); var registerCommand = new RegisterPeerCommand(peerDescriptor); _handler.Handle(registerCommand); _speedReporter.Verify(x => x.ReportRegistrationDuration(It.Is <TimeSpan>(t => t < 1.Second()))); }
public void should_remove_existing_dynamic_subscriptions_on_register() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); var registerCommand = new RegisterPeerCommand(peerDescriptor); _handler.Handle(registerCommand); _repositoryMock.Verify(x => x.AddOrUpdatePeer(registerCommand.Peer)); _repositoryMock.Verify(x => x.RemoveAllDynamicSubscriptionsForPeer(registerCommand.Peer.PeerId, It.Is<DateTime>(d => d == registerCommand.Peer.TimestampUtc.Value))); }
public void should_not_throw_if_a_client_with_a_synchronised_clock_tries_to_register() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); var registerCommand = new RegisterPeerCommand(peerDescriptor); registerCommand.Peer.TimestampUtc = SystemDateTime.UtcNow + 14.Minutes(); _configurationMock.SetupGet(x => x.MaxAllowedClockDifferenceWhenRegistering).Returns(15.Minutes()); Assert.DoesNotThrow(() => _handler.Handle(registerCommand)); }
public void should_remove_existing_dynamic_subscriptions_on_register() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); var registerCommand = new RegisterPeerCommand(peerDescriptor); _handler.Handle(registerCommand); _repositoryMock.Verify(x => x.AddOrUpdatePeer(registerCommand.Peer)); _repositoryMock.Verify(x => x.RemoveAllDynamicSubscriptionsForPeer(registerCommand.Peer.PeerId, It.Is <DateTime>(d => d == registerCommand.Peer.TimestampUtc.Value))); }
public void should_specify_datetime_kind_when_removing_all_subscriptions_for_a_peer_during_register() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); peerDescriptor.TimestampUtc = new DateTime(DateTime.Now.Ticks, DateTimeKind.Unspecified); var registerCommand = new RegisterPeerCommand(peerDescriptor); _handler.Handle(registerCommand); _repositoryMock.Verify(x => x.AddOrUpdatePeer(registerCommand.Peer)); _repositoryMock.Verify(x => x.RemoveAllDynamicSubscriptionsForPeer(registerCommand.Peer.PeerId, It.Is<DateTime>(d => d.Kind == DateTimeKind.Utc))); }
public void should_throw_if_a_blacklisted_peer_tries_to_register() { var blacklistedPeer = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://blacklistedpeer:123", typeof(FakeCommand)); var registerCommand = new RegisterPeerCommand(blacklistedPeer); _handler.Context = MessageContext.CreateTest(new OriginatorInfo(blacklistedPeer.Peer.Id, blacklistedPeer.Peer.EndPoint, "BLACKLISTEDMACHINE", "initiator")); var exception = typeof(InvalidOperationException).ShouldBeThrownBy(() => _handler.Handle(registerCommand)); exception.Message.ShouldEqual("Peer Abc.Testing.0 on host BLACKLISTEDMACHINE is not allowed to register on this directory"); }
public void should_set_registering_peer_up_and_responding() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); peerDescriptor.Peer.IsUp = false; peerDescriptor.Peer.IsResponding = false; var registerCommand = new RegisterPeerCommand(peerDescriptor); _handler.Handle(registerCommand); _repositoryMock.Verify(x => x.AddOrUpdatePeer(It.Is<PeerDescriptor>(p => p.Peer.IsUp && p.Peer.IsResponding))); }
public void should_specify_datetime_kind_when_removing_all_subscriptions_for_a_peer_during_register() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); peerDescriptor.TimestampUtc = new DateTime(DateTime.Now.Ticks, DateTimeKind.Unspecified); var registerCommand = new RegisterPeerCommand(peerDescriptor); _handler.Handle(registerCommand); _repositoryMock.Verify(x => x.AddOrUpdatePeer(registerCommand.Peer)); _repositoryMock.Verify(x => x.RemoveAllDynamicSubscriptionsForPeer(registerCommand.Peer.PeerId, It.Is <DateTime>(d => d.Kind == DateTimeKind.Utc))); }
public void should_throw_if_an_existing_peer_tries_to_register() { var existingPeer = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://existingpeer:123", typeof(FakeCommand)); _repositoryMock.Setup(x => x.Get(existingPeer.PeerId)).Returns(existingPeer); var newPeer = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://newpeer:123", typeof(FakeCommand)); var command = new RegisterPeerCommand(newPeer); var exception = (DomainException)typeof(DomainException).ShouldBeThrownBy(() => _handler.Handle(command)); exception.ErrorCode.ShouldEqual(DirectoryErrorCodes.PeerAlreadyExists); }
public void should_throw_if_a_client_with_a_more_recent_clock_tries_to_register() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); var registerCommand = new RegisterPeerCommand(peerDescriptor); registerCommand.Peer.TimestampUtc = SystemDateTime.UtcNow + 1.Hour(); _configurationMock.SetupGet(x => x.MaxAllowedClockDifferenceWhenRegistering).Returns(15.Minutes()); var exception = Assert.Throws <InvalidOperationException>(() => _handler.Handle(registerCommand)); exception.Message.ShouldContain("is too far ahead of the the server's current time"); }
public void should_set_registering_peer_up_and_responding() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); peerDescriptor.Peer.IsUp = false; peerDescriptor.Peer.IsResponding = false; var registerCommand = new RegisterPeerCommand(peerDescriptor); _handler.Handle(registerCommand); _repositoryMock.Verify(x => x.AddOrUpdatePeer(It.Is <PeerDescriptor>(p => p.Peer.IsUp && p.Peer.IsResponding))); }
public void should_not_throw_if_an_existing_peer_is_on_the_same_host() { var existingPeer = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://existingpeer:123", typeof(FakeCommand)); existingPeer.Peer.IsResponding = false; _repositoryMock.Setup(x => x.GetPeers(It.IsAny <bool>())).Returns(new[] { existingPeer }); var newPeer = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://existingpeer:123", typeof(FakeCommand)); var command = new RegisterPeerCommand(newPeer); _handler.Handle(command); _repositoryMock.Verify(x => x.AddOrUpdatePeer(newPeer)); }
public void should_reply_with_registred_peers() { var registredPeerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:456", typeof(FakeCommand)); _repositoryMock.Setup(x => x.GetPeers(It.Is <bool>(loadDynamicSubs => loadDynamicSubs))).Returns(new[] { registredPeerDescriptor }); var command = new RegisterPeerCommand(TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand))); _handler.Handle(command); var response = (RegisterPeerResponse)_bus.LastReplyResponse; response.PeerDescriptors.Single().ShouldHaveSamePropertiesAs(registredPeerDescriptor); }
public void should_reply_with_registred_peers() { var registredPeerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:456", typeof(FakeCommand)); _repositoryMock.Setup(x => x.GetPeers(It.Is<bool>(loadDynamicSubs => loadDynamicSubs))).Returns(new[] { registredPeerDescriptor }); var command = new RegisterPeerCommand(TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand))); _handler.Handle(command); var response = (RegisterPeerResponse)_bus.LastReplyResponse; response.PeerDescriptors.Single().ShouldHaveSamePropertiesAs(registredPeerDescriptor); }
public void should_throw_if_a_blacklisted_peer_tries_to_register() { var blacklistedPeer = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://blacklistedpeer:123", typeof(FakeCommand)); var registerCommand = new RegisterPeerCommand(blacklistedPeer); _handler.Context = MessageContext.CreateTest(new OriginatorInfo(blacklistedPeer.Peer.Id, blacklistedPeer.Peer.EndPoint, "BLACKLISTEDMACHINE", "initiator")); var exception = typeof(InvalidOperationException).ShouldBeThrownBy(() => _handler.Handle(registerCommand)); exception.Message.ShouldEqual("Peer BLACKLISTEDMACHINE is not allowed to register on this directory"); }
public void should_not_throw_if_an_existing_peer_is_on_the_same_host() { var existingPeer = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://existingpeer:123", typeof(FakeCommand)); existingPeer.Peer.IsResponding = false; _repositoryMock.Setup(x => x.GetPeers(It.IsAny<bool>())).Returns(new[] { existingPeer }); var newPeer = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://existingpeer:123", typeof(FakeCommand)); var command = new RegisterPeerCommand(newPeer); _handler.Handle(command); _repositoryMock.Verify(x => x.AddOrUpdatePeer(newPeer)); }
public void should_handle_null_timestamp_when_removing_all_subscriptions_for_a_peer() { var peerDescriptor = TestDataBuilder.CreatePersistentPeerDescriptor("tcp://abctest:123", typeof(FakeCommand)); peerDescriptor.TimestampUtc = null; var registerCommand = new RegisterPeerCommand(peerDescriptor); Assert.That(() => _handler.Handle(registerCommand), Throws.InstanceOf<InvalidOperationException>().With.Message.EqualTo("The TimestampUtc must be provided when registering")); }