public async Task ShouldPassBookmarkAndTxConfigToRunWithMetadataMessage(AccessMode mode)
            {
                var mockConn        = NewConnectionWithMode(mode);
                var statement       = new Statement("A cypher query");
                var bookmarkTracker = new Mock <IBookmarkTracker>();
                var resourceHandler = new Mock <IResultResourceHandler>();

                mockConn.Setup(x => x.EnqueueAsync(It.IsAny <RunMessage>(), It.IsAny <V3.RunResponseHandler>(),
                                                   It.IsAny <PullAllMessage>(), It.IsAny <V3.PullResponseHandler>()))
                .Returns(TaskHelper.GetCompletedTask())
                .Callback <IRequestMessage, IResponseHandler, IRequestMessage, IResponseHandler>(
                    (m1, h1, m2, h2) =>
                {
                    h1.OnSuccess(new Dictionary <string, object>());
                    VerifyMetadata(m1.CastOrThrow <RunWithMetadataMessage>().Metadata, mode);
                });

                await BoltV3.RunInAutoCommitTransactionAsync(mockConn.Object, statement, true, bookmarkTracker.Object,
                                                             resourceHandler.Object, Bookmark, TxConfig);

                mockConn.Verify(
                    x => x.EnqueueAsync(It.IsAny <RunWithMetadataMessage>(), It.IsAny <V3.RunResponseHandler>(),
                                        PullAllMessage.PullAll,
                                        It.IsAny <V3.PullResponseHandler>()),
                    Times.Once);
            }
예제 #2
0
            public async Task ShouldNotSyncIfBookmarkIsNull()
            {
                var mockConn = new Mock <IConnection>();
                await BoltV3.BeginTransactionAsync(mockConn.Object, null, null);

                mockConn.Verify(x => x.Enqueue(It.IsAny <BeginMessage>(), It.IsAny <IMessageResponseCollector>(), null), Times.Once);
                mockConn.Verify(x => x.SyncAsync(), Times.Never);
            }
예제 #3
0
            public async Task EnqueueCommitAndSync()
            {
                var mockConn = new Mock <IConnection>();
                await BoltV3.CommitTransactionAsync(mockConn.Object);

                mockConn.Verify(x => x.Enqueue(Commit, It.IsAny <BookmarkCollector>(), null), Times.Once);
                mockConn.Verify(x => x.SyncAsync(), Times.Once);
            }
예제 #4
0
            public void ResultBuilderShouldObtainServerInfoFromConnection()
            {
                var mockConn  = new Mock <IConnection>();
                var statement = new Statement("lalala");

                BoltV3.RunInExplicitTransaction(mockConn.Object, statement);
                mockConn.Verify(x => x.Server, Times.Once);
            }
 public void ShouldThrowWhenADatabaseIsGiven(string database)
 {
     BoltV3.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*");
 }
예제 #6
0
            public async Task ShouldEnqueueGoodbyeAndSend()
            {
                var mockConn = new Mock <IConnection>();
                await BoltV3.LogoutAsync(mockConn.Object);

                mockConn.Verify(x => x.Enqueue(It.IsAny <GoodbyeMessage>(), null, null), Times.Once);
                mockConn.Verify(x => x.SendAsync());
            }
예제 #7
0
            public async Task ShouldSyncIfValidBookmarkGiven()
            {
                var mockConn = new Mock <IConnection>();
                var bookmark = Bookmark.From(FakeABookmark(234));
                await BoltV3.BeginTransactionAsync(mockConn.Object, bookmark, null);

                mockConn.Verify(x => x.Enqueue(It.IsAny <BeginMessage>(), It.IsAny <IMessageResponseCollector>(), null), Times.Once);
                mockConn.Verify(x => x.SyncAsync(), Times.Once);
            }
            public async Task ResultBuilderShouldObtainServerInfoFromConnection()
            {
                var mockConn  = SessionTests.MockedConnectionWithSuccessResponse();
                var statement = new Statement("lalala");

                await BoltV3.RunInExplicitTransactionAsync(mockConn.Object, statement, true);

                mockConn.Verify(x => x.Server, Times.Once);
            }
예제 #9
0
            public void ShouldEnqueueRollbackAndSync()
            {
                var mockConn = new Mock <IConnection>();

                BoltV3.RollbackTransactionAsync(mockConn.Object);

                mockConn.Verify(x => x.Enqueue(Rollback, It.IsAny <BookmarkCollector>(), null), Times.Once);
                mockConn.Verify(x => x.SyncAsync(), Times.Once);
            }
예제 #10
0
            public void ResultBuilderShouldObtainServerInfoFromConnection()
            {
                var mockConn    = new Mock <IConnection>();
                var statement   = new Statement("A cypher query");
                var mockHandler = new Mock <IResultResourceHandler>();

                BoltV3.RunInAutoCommitTransaction(mockConn.Object, statement, mockHandler.Object, null, null);

                mockConn.Verify(x => x.Server, Times.Once);
            }
예제 #11
0
            public void ShouldNotSyncIfInvalidBookmarkGiven()
            {
                var mockConn = new Mock <IConnection>();
                var bookmark = Bookmark.From((string)null);

                BoltV3.BeginTransaction(mockConn.Object, bookmark, null);

                mockConn.Verify(x => x.Enqueue(It.IsAny <BeginMessage>(), It.IsAny <IMessageResponseCollector>(), null), Times.Once);
                mockConn.Verify(x => x.Sync(), Times.Never);
            }
예제 #12
0
            public async Task ShouldRunPullAllSync()
            {
                var mockConn  = MockedConnectionWithSuccessResponse();
                var statement = new Statement("lalala");

                await BoltV3.RunInExplicitTransactionAsync(mockConn.Object, statement);

                mockConn.Verify(x => x.Enqueue(It.IsAny <RunWithMetadataMessage>(), It.IsAny <ResultCursorBuilder>(), PullAll), Times.Once);
                mockConn.Verify(x => x.SendAsync(), Times.Once);
            }
예제 #13
0
            public void ShouldRunPullAllSync()
            {
                var mockConn  = new Mock <IConnection>();
                var statement = new Statement("lalala");

                BoltV3.RunInExplicitTransaction(mockConn.Object, statement);

                mockConn.Verify(x => x.Enqueue(It.IsAny <RunWithMetadataMessage>(), It.IsAny <ResultBuilder>(), PullAll), Times.Once);
                mockConn.Verify(x => x.Send(), Times.Once);
            }
            public async Task ShouldNotSyncIfBookmarkIsNull()
            {
                var mockConn = NewConnectionWithMode();

                await BoltV3.BeginTransactionAsync(mockConn.Object, null, null);

                mockConn.Verify(
                    x => x.EnqueueAsync(It.IsAny <BeginMessage>(), It.IsAny <V1.BeginResponseHandler>(), null, null),
                    Times.Once);
                mockConn.Verify(x => x.SyncAsync(), Times.Never);
            }
            public async Task ShouldEnqueueRollbackAndSync()
            {
                var mockConn = NewConnectionWithMode();

                await BoltV3.RollbackTransactionAsync(mockConn.Object);

                mockConn.Verify(
                    x => x.EnqueueAsync(RollbackMessage.Rollback, It.IsAny <V1.RollbackResponseHandler>(), null, null),
                    Times.Once);
                mockConn.Verify(x => x.SyncAsync(), Times.Once);
            }
예제 #16
0
            public void ShouldEnqueueRunAndPullAllAndSend()
            {
                var mockConn    = new Mock <IConnection>();
                var statement   = new Statement("A cypher query");
                var mockHandler = new Mock <IResultResourceHandler>();

                BoltV3.RunInAutoCommitTransaction(mockConn.Object, statement, mockHandler.Object, null, null);

                mockConn.Verify(x => x.Enqueue(It.IsAny <RunWithMetadataMessage>(), It.IsAny <ResultBuilder>(), PullAll), Times.Once);
                mockConn.Verify(x => x.Send());
            }
예제 #17
0
            public async Task ShouldEnqueueHelloAndSync()
            {
                var mockConn = new Mock <IConnection>();

                mockConn.Setup(x => x.Server).Returns(new ServerInfo(new Uri("http://neo4j.com")));
                await BoltV3.LoginAsync(mockConn.Object, "user-zhen", AuthTokens.None);

                mockConn.Verify(x => x.Enqueue(It.IsAny <HelloMessage>(), It.IsAny <ServerVersionCollector>(), null), Times.Once);
                mockConn.Verify(x => x.SyncAsync());
                mockConn.Verify(x => x.UpdateId(It.IsAny <string>()));
            }
            public async Task ShouldSyncIfValidBookmarkGiven()
            {
                var mockConn = NewConnectionWithMode();
                var bookmark = Bookmark.From(SessionTests.FakeABookmark(234));

                await BoltV3.BeginTransactionAsync(mockConn.Object, bookmark, null);

                mockConn.Verify(
                    x => x.EnqueueAsync(It.IsAny <BeginMessage>(), It.IsAny <V1.BeginResponseHandler>(), null, null),
                    Times.Once);
                mockConn.Verify(x => x.SyncAsync(), Times.Once);
            }
            public async Task EnqueueCommitAndSync()
            {
                var mockConn        = NewConnectionWithMode();
                var bookmarkTracker = new Mock <IBookmarkTracker>();

                await BoltV3.CommitTransactionAsync(mockConn.Object, bookmarkTracker.Object);

                mockConn.Verify(
                    x => x.EnqueueAsync(CommitMessage.Commit, It.IsAny <V1.CommitResponseHandler>(), null, null),
                    Times.Once);
                mockConn.Verify(x => x.SyncAsync(), Times.Once);
            }
            public async Task ShouldNotSyncIfInvalidBookmarkGiven()
            {
                var mockConn = NewConnectionWithMode();
                var bookmark = Bookmark.From((string)null);

                await BoltV3.BeginTransactionAsync(mockConn.Object, bookmark, null);

                mockConn.Verify(
                    x => x.EnqueueAsync(It.IsAny <BeginMessage>(), It.IsAny <V1.BeginResponseHandler>(), null, null),
                    Times.Once);
                mockConn.Verify(x => x.SyncAsync(), Times.Never);
            }
            public async Task ShouldRunPullAllSync()
            {
                var mockConn  = SessionTests.MockedConnectionWithSuccessResponse();
                var statement = new Statement("lalala");

                await BoltV3.RunInExplicitTransactionAsync(mockConn.Object, statement, 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);
            }
예제 #22
0
            public async Task ShouldPassBookmarkAndTxConfigToRunWithMetadataMessage()
            {
                var mockConn = new Mock <IConnection>();

                mockConn.Setup(x => x.Enqueue(It.IsAny <BeginMessage>(), It.IsAny <ResultBuilder>(), null))
                .Callback <IRequestMessage, IMessageResponseCollector, IRequestMessage>(
                    (m0, r, m1) =>
                {
                    var msg = m0.CastOrThrow <BeginMessage>();
                    VerifyMetadata(msg.Metadata);
                });
                await BoltV3.BeginTransactionAsync(mockConn.Object, Bookmark, TxConfig);

                mockConn.Verify(x => x.Enqueue(It.IsAny <BeginMessage>(), It.IsAny <ResultBuilder>(), null), Times.Once);
            }
예제 #23
0
            public async Task ResultBuilderShouldObtainServerInfoFromConnection()
            {
                var mockConn    = new Mock <IConnection>();
                var statement   = new Statement("A cypher query");
                var mockHandler = new Mock <IResultResourceHandler>();

                mockConn.Setup(x => x.Enqueue(It.IsAny <IRequestMessage>(), It.IsAny <ResultCursorBuilder>(), PullAll))
                .Callback <IRequestMessage, IMessageResponseCollector, IRequestMessage>(
                    (msg1, h, msg2) =>
                {
                    h?.DoneSuccess();
                });
                await BoltV3.RunInAutoCommitTransactionAsync(mockConn.Object, statement, mockHandler.Object, null, null);

                mockConn.Verify(x => x.Server, Times.Once);
            }
            public async Task ResultBuilderShouldObtainServerInfoFromConnection()
            {
                var mockConn        = NewConnectionWithMode();
                var statement       = new Statement("A cypher query");
                var bookmarkTracker = new Mock <IBookmarkTracker>();
                var resourceHandler = new Mock <IResultResourceHandler>();

                mockConn.Setup(x => x.EnqueueAsync(It.IsAny <RunMessage>(), It.IsAny <V3.RunResponseHandler>(),
                                                   It.IsAny <PullAllMessage>(), It.IsAny <V3.PullResponseHandler>()))
                .Returns(TaskHelper.GetCompletedTask())
                .Callback <IRequestMessage, IResponseHandler, IRequestMessage, IResponseHandler>(
                    (msg1, h1, msg2, h2) => { h1.OnSuccess(new Dictionary <string, object>()); });

                await BoltV3.RunInAutoCommitTransactionAsync(mockConn.Object, statement, true, bookmarkTracker.Object,
                                                             resourceHandler.Object, null, null);

                mockConn.Verify(x => x.Server, Times.Once);
            }
예제 #25
0
            public async Task ShouldPassBookmarkAndTxConfigToRunWithMetadataMessage()
            {
                var mockConn    = new Mock <IConnection>();
                var statement   = new Statement("A cypher query");
                var mockHandler = new Mock <IResultResourceHandler>();

                mockConn.Setup(x => x.Enqueue(It.IsAny <IRequestMessage>(), It.IsAny <ResultCursorBuilder>(), PullAll))
                .Callback <IRequestMessage, IMessageResponseCollector, IRequestMessage>(
                    (m0, h, m1) =>
                {
                    h?.DoneSuccess();
                    VerifyMetadata(m0.CastOrThrow <RunWithMetadataMessage>().Metadata);
                });
                await BoltV3.RunInAutoCommitTransactionAsync(mockConn.Object, statement, mockHandler.Object,
                                                             Bookmark, TxConfig);

                mockConn.Verify(x => x.Enqueue(It.IsAny <RunWithMetadataMessage>(), It.IsAny <ResultCursorBuilder>(), PullAll), Times.Once);
            }
            public async Task ShouldPassBookmarkTxConfigAndModeToRunWithMetadataMessage(AccessMode mode)
            {
                var mockConn = NewConnectionWithMode(mode);

                mockConn.Setup(x =>
                               x.EnqueueAsync(It.IsAny <BeginMessage>(), It.IsAny <V1.BeginResponseHandler>(), null, null))
                .Returns(TaskHelper.GetCompletedTask())
                .Callback <IRequestMessage, IResponseHandler, IRequestMessage, IResponseHandler>(
                    (m1, h1, m2, h2) =>
                {
                    var msg = m1.CastOrThrow <BeginMessage>();
                    VerifyMetadata(msg.Metadata, mode);
                });

                await BoltV3.BeginTransactionAsync(mockConn.Object, Bookmark, TxConfig);

                mockConn.Verify(
                    x => x.EnqueueAsync(It.IsAny <BeginMessage>(), It.IsAny <V1.BeginResponseHandler>(), null, null),
                    Times.Once);
            }
            public async Task ShouldEnqueueRunAndPullAllAndSend()
            {
                var mockConn        = NewConnectionWithMode();
                var query           = new Query("A cypher query");
                var bookmarkTracker = new Mock <IBookmarkTracker>();
                var resourceHandler = new Mock <IResultResourceHandler>();

                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 BoltV3.RunInAutoCommitTransactionAsync(mockConn.Object, query, true, bookmarkTracker.Object,
                                                             resourceHandler.Object, null, null, null);

                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());
            }
 public void ShouldThrowWhenADatabaseIsGiven(string database)
 {
     BoltV3.Awaiting(p => p.BeginTransactionAsync(Mock.Of <IConnection>(), database, Bookmark.From("123"),
                                                  TransactionConfig.Default))
     .Should().Throw <ClientException>().WithMessage("*that does not support multiple databases*");
 }