public async Task ShouldPassBookmarkAndTxConfigToRunWithMetadataMessage(AccessMode mode) { var mockConn = NewConnectionWithMode(mode); var query = new Query("A cypher query"); var bookmarkTracker = new Mock <IBookmarkTracker>(); var resourceHandler = new Mock <IResultResourceHandler>(); var V3 = new BoltProtocolV3(); mockConn.Setup(x => x.EnqueueAsync(It.IsAny <IRequestMessage>(), It.IsAny <IResponseHandler>(), It.IsAny <IRequestMessage>(), It.IsAny <IResponseHandler>())) .Returns(Task.CompletedTask) .Callback <IRequestMessage, IResponseHandler, IRequestMessage, IResponseHandler>( (m1, h1, m2, h2) => { h1.OnSuccess(new Dictionary <string, object>()); VerifyMetadata(m1.CastOrThrow <RunWithMetadataMessage>().Metadata, mode); }); await V3.RunInAutoCommitTransactionAsync(mockConn.Object, query, true, bookmarkTracker.Object, resourceHandler.Object, null, Bookmark, TxConfig); mockConn.Verify( x => x.EnqueueAsync(It.IsAny <RunWithMetadataMessage>(), It.IsAny <V3.RunResponseHandler>(), PullAllMessage.PullAll, It.IsAny <V3.PullResponseHandler>()), Times.Once); }
public void ShouldUseGetRoutingTableProcedure(string version) { var V3 = new BoltProtocolV3(); // Given var context = new Dictionary <string, string> { { "context", string.Empty } }; var mockConnection = new Mock <IConnection>(); var serverInfoMock = new Mock <IServerInfo>(); serverInfoMock.Setup(m => m.Agent).Returns(version); mockConnection.Setup(m => m.Server).Returns(serverInfoMock.Object); mockConnection.Setup(m => m.BoltProtocol).Returns(V3); mockConnection.Setup(m => m.RoutingContext).Returns(context); // When string procedure; var parameters = new Dictionary <string, object>(); V3.GetProcedureAndParameters(mockConnection.Object, "database", out procedure, out parameters); // Then procedure.Should().Be("CALL dbms.cluster.routing.getRoutingTable($context)"); parameters["context"].Should().Be(context); }
public void ShouldThrowWhenADatabaseIsGiven(string database) { var V3 = new BoltProtocolV3(); V3.Awaiting(p => p.BeginTransactionAsync(Mock.Of <IConnection>(), database, Bookmark.From("123"), TransactionConfig.Default)) .Should().Throw <ClientException>().WithMessage("*that does not support multiple databases*"); }
public void ShouldThrowWhenADatabaseIsGiven(string database) { var V3 = new BoltProtocolV3(); var mockConn = NewConnectionWithMode(AccessMode.Read); V3.Awaiting(p => p.BeginTransactionAsync(mockConn.Object, database, Bookmark.From("123"), TransactionConfig.Default, null)) .Should().Throw <ClientException>().WithMessage("*that does not support multiple databases*"); }
public void ShouldThrowWhenADatabaseIsGiven(string database) { var V3 = new BoltProtocolV3(); V3.Awaiting(p => p.RunInAutoCommitTransactionAsync(Mock.Of <IConnection>(), new Query("text"), false, Mock.Of <IBookmarkTracker>(), Mock.Of <IResultResourceHandler>(), database, Bookmark.From("123"), TransactionConfig.Default)) .Should().Throw <ClientException>().WithMessage("*that does not support multiple databases*"); }
public async Task ResultBuilderShouldObtainServerInfoFromConnection() { var mockConn = AsyncSessionTests.MockedConnectionWithSuccessResponse(); var query = new Query("lalala"); var V3 = new BoltProtocolV3(); await V3.RunInExplicitTransactionAsync(mockConn.Object, query, true); mockConn.Verify(x => x.Server, Times.Once); }
public async Task ShouldThrowOnImpersonatedUser() { var connection = SetupMockedConnection(); var boltProtocolV3 = new BoltProtocolV3(); //When var ex = await Assert.ThrowsAsync <ArgumentException>(() => boltProtocolV3.GetRoutingTable(connection, "myTestDatabase", string.Empty, null)); ex.Message.Should().Contain("3.0"); }
public async Task GetRoutingTableShouldThrowOnNullConnectionObject() { var v3 = new BoltProtocolV3(); var ex = await Xunit.Record.ExceptionAsync(async() => await v3.GetRoutingTable(null, "adb", null, null)); ex.Should().BeOfType <ProtocolException>().Which .Message.Should() .Contain("Attempting to get a routing table on a null connection"); }
public async Task RoutingTableShouldContainDatabase() { var connection = SetupMockedConnection(); var boltProtocolV3 = new BoltProtocolV3(); //When var routingTableDictionary = await boltProtocolV3.GetRoutingTable(connection, "myTestDatabase", null, null); //Then routingTableDictionary.ToDictionary().Should().ContainKey("db").WhichValue.Should().Be("myTestDatabase"); }
public async Task ShouldEnqueueGoodbyeAndSend() { var mockConn = new Mock <IConnection>(); var V3 = new BoltProtocolV3(); await V3.LogoutAsync(mockConn.Object); mockConn.Verify( x => x.EnqueueAsync(It.IsAny <GoodbyeMessage>(), It.IsNotNull <IResponseHandler>(), null, null), Times.Once); mockConn.Verify(x => x.SendAsync()); }
public async Task ShouldEnqueueRollbackAndSync() { var mockConn = NewConnectionWithMode(); var V3 = new BoltProtocolV3(); await V3.RollbackTransactionAsync(mockConn.Object); mockConn.Verify( x => x.EnqueueAsync(RollbackMessage.Rollback, It.IsAny <V3.RollbackResponseHandler>(), null, null), Times.Once); mockConn.Verify(x => x.SyncAsync(), Times.Once); }
public async Task ShouldNotSyncIfBookmarkIsNull() { var mockConn = NewConnectionWithMode(); var V3 = new BoltProtocolV3(); await V3.BeginTransactionAsync(mockConn.Object, null, null, null); mockConn.Verify( x => x.EnqueueAsync(It.IsAny <BeginMessage>(), It.IsAny <V3.BeginResponseHandler>(), null, null), Times.Once); mockConn.Verify(x => x.SyncAsync(), Times.Never); }
public async Task ShouldEnqueueHelloAndSync() { var mockConn = new Mock <IConnection>(); var V3 = new BoltProtocolV3(); mockConn.Setup(x => x.Server).Returns(new ServerInfo(new Uri("http://neo4j.com"))); await V3.LoginAsync(mockConn.Object, "user-zhen", AuthTokens.None); mockConn.Verify( x => x.EnqueueAsync(It.IsAny <HelloMessage>(), It.IsAny <V3.HelloResponseHandler>(), null, null), Times.Once); mockConn.Verify(x => x.SyncAsync()); }
public async Task EnqueueCommitAndSync() { var mockConn = NewConnectionWithMode(); var bookmarkTracker = new Mock <IBookmarkTracker>(); var V3 = new BoltProtocolV3(); await V3.CommitTransactionAsync(mockConn.Object, bookmarkTracker.Object); mockConn.Verify( x => x.EnqueueAsync(CommitMessage.Commit, It.IsAny <V3.CommitResponseHandler>(), null, null), Times.Once); mockConn.Verify(x => x.SyncAsync(), Times.Once); }
public async Task ShouldThrowOnImpersonatedUserAsync() { var protocol = new BoltProtocolV3(); var mockConn = NewConnectionWithMode(AccessMode.Read); var ex = await Assert.ThrowsAsync <ArgumentException>(() => protocol.BeginTransactionAsync(mockConn.Object, string.Empty, Bookmark.From("123"), TransactionConfig.Default, "ImpersonatedUser")); ex.Message.Should().Contain("3.0"); }
public async Task ShouldSyncIfValidBookmarkGiven() { var mockConn = NewConnectionWithMode(); var bookmark = Bookmark.From(AsyncSessionTests.FakeABookmark(234)); var V3 = new BoltProtocolV3(); await V3.BeginTransactionAsync(mockConn.Object, null, bookmark, null); mockConn.Verify( x => x.EnqueueAsync(It.IsAny <BeginMessage>(), It.IsAny <V3.BeginResponseHandler>(), null, null), Times.Once); mockConn.Verify(x => x.SyncAsync(), Times.Once); }
public async Task ShouldRunPullAllSync() { var mockConn = AsyncSessionTests.MockedConnectionWithSuccessResponse(); var query = new Query("lalala"); var V3 = new BoltProtocolV3(); await V3.RunInExplicitTransactionAsync(mockConn.Object, query, true); mockConn.Verify( x => x.EnqueueAsync(It.IsAny <RunWithMetadataMessage>(), It.IsAny <V3.RunResponseHandler>(), PullAllMessage.PullAll, It.IsAny <V3.PullResponseHandler>()), Times.Once); mockConn.Verify(x => x.SendAsync(), Times.Once); }
public async Task ResultBuilderShouldObtainServerInfoFromConnection() { var mockConn = NewConnectionWithMode(); var query = new Query("A cypher query"); var bookmarkTracker = new Mock <IBookmarkTracker>(); var resourceHandler = new Mock <IResultResourceHandler>(); var V3 = new BoltProtocolV3(); mockConn.Setup(x => x.EnqueueAsync(It.IsAny <IRequestMessage>(), It.IsAny <IResponseHandler>(), It.IsAny <IRequestMessage>(), It.IsAny <IResponseHandler>())) .Returns(Task.CompletedTask) .Callback <IRequestMessage, IResponseHandler, IRequestMessage, IResponseHandler>( (msg1, h1, msg2, h2) => { h1.OnSuccess(new Dictionary <string, object>()); }); await V3.RunInAutoCommitTransactionAsync(mockConn.Object, query, true, bookmarkTracker.Object, resourceHandler.Object, null, null, null); mockConn.Verify(x => x.Server, Times.Once); }
public async Task ShouldPassBookmarkTxConfigAndModeToRunWithMetadataMessage(AccessMode mode) { var mockConn = NewConnectionWithMode(mode); var V3 = new BoltProtocolV3(); mockConn.Setup(x => x.EnqueueAsync(It.IsAny <IRequestMessage>(), It.IsAny <IResponseHandler>(), It.IsAny <IRequestMessage>(), It.IsAny <IResponseHandler>())) .Returns(Task.CompletedTask) .Callback <IRequestMessage, IResponseHandler, IRequestMessage, IResponseHandler>( (m1, h1, m2, h2) => { var msg = m1.CastOrThrow <BeginMessage>(); VerifyMetadata(msg.Metadata, mode); }); await V3.BeginTransactionAsync(mockConn.Object, null, Bookmark, TxConfig); mockConn.Verify( x => x.EnqueueAsync(It.IsAny <BeginMessage>(), It.IsAny <V3.BeginResponseHandler>(), null, null), Times.Once); }