コード例 #1
0
            public void ShouldUseGetRoutingTableForDatabaseProcedure(string version)
            {
                var V4 = new BoltProtocolV4_0();

                // Given
                var context = new Dictionary <string, string> {
                    { "context", string.Empty }
                };
                string db             = "foo";
                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(V4);
                mockConnection.Setup(m => m.RoutingContext).Returns(context);

                // When
                //var query = discovery.DiscoveryProcedure(mockConnection.Object, "foo");
                string procedure;
                var    parameters = new Dictionary <string, object>();

                V4.GetProcedureAndParameters(mockConnection.Object, db, out procedure, out parameters);

                // Then
                procedure.Should().Be("CALL dbms.routing.getRoutingTable($context, $database)");
                parameters["context"].Should().Be(context);
                parameters["database"].Should().Be(db);
            }
コード例 #2
0
            public async Task ShouldPassDatabaseBookmarkAndTxConfigToRunWithMetadataMessage()
            {
                var mockConn        = NewConnectionWithMode();
                var query           = new Query("A cypher query");
                var bookmarkTracker = new Mock <IBookmarkTracker>();
                var resourceHandler = new Mock <IResultResourceHandler>();
                var V4 = new BoltProtocolV4_0();

                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);
                });

                await V4.RunInAutoCommitTransactionAsync(mockConn.Object, query, true, bookmarkTracker.Object,
                                                         resourceHandler.Object, Database, Bookmark, TxConfig, null);

                mockConn.Verify(
                    x => x.EnqueueAsync(It.IsAny <RunWithMetadataMessage>(), It.IsAny <V4.RunResponseHandler>(), null,
                                        null),
                    Times.Once);
            }
コード例 #3
0
            public async Task ResultBuilderShouldObtainServerInfoFromConnection()
            {
                var mockConn = AsyncSessionTests.MockedConnectionWithSuccessResponse();
                var query    = new Query("lalala");
                var V4       = new BoltProtocolV4_0();

                await V4.RunInExplicitTransactionAsync(mockConn.Object, query, true);

                mockConn.Verify(x => x.Server, Times.Once);
            }
コード例 #4
0
            public async Task ShouldThrowOnImpersonatedUserAsync()
            {
                var protocol = new BoltProtocolV4_0();
                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("4.0");
            }
コード例 #5
0
            public async Task ShouldRunPullAllSync()
            {
                var mockConn = AsyncSessionTests.MockedConnectionWithSuccessResponse();
                var query    = new Query("lalala");
                var V4       = new BoltProtocolV4_0();

                await V4.RunInExplicitTransactionAsync(mockConn.Object, query, true);

                mockConn.Verify(
                    x => x.EnqueueAsync(It.IsAny <RunWithMetadataMessage>(), It.IsAny <V4.RunResponseHandler>(), null,
                                        null),
                    Times.Once);
                mockConn.Verify(x => x.SendAsync(), Times.Once);
            }
コード例 #6
0
            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 V4 = new BoltProtocolV4_0();

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

                mockConn.Verify(x => x.Server, Times.Once);
            }
コード例 #7
0
            public async Task ShouldEnqueueRunPullAndSendIfNotReactive()
            {
                var mockConn        = NewConnectionWithMode();
                var query           = new Query("A cypher query");
                var bookmarkTracker = new Mock <IBookmarkTracker>();
                var resourceHandler = new Mock <IResultResourceHandler>();
                var V4 = new BoltProtocolV4_0();

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

                mockConn.Verify(
                    x => x.EnqueueAsync(It.IsAny <RunWithMetadataMessage>(), It.IsAny <V4.RunResponseHandler>(),
                                        It.IsAny <PullMessage>(), It.IsAny <V4.PullResponseHandler>()), Times.Once);
                mockConn.Verify(x => x.SendAsync());
            }
コード例 #8
0
            public async Task ShouldEnqueueHelloAndSync()
            {
                var protocol = new BoltProtocolV4_0();

                await EnqueAndSync(protocol);
            }