Exemplo n.º 1
0
        public void ListDatabases_should_invoke_the_correct_operation(
            [Values(false, true)] bool usingSession,
            [Values(false, true)] bool async)
        {
            var operationExecutor = new MockOperationExecutor();
            var subject           = new MongoClient(operationExecutor, DriverTestConfiguration.GetClientSettings());
            var session           = CreateClientSession();
            var cancellationToken = new CancellationTokenSource().Token;
            var filterDocument    = BsonDocument.Parse("{ name : \"awesome\" }");
            var filterDefinition  = (FilterDefinition <BsonDocument>)filterDocument;
            var nameOnly          = true;
            var options           = new ListDatabasesOptions
            {
                Filter   = filterDefinition,
                NameOnly = nameOnly
            };

            if (usingSession)
            {
                if (async)
                {
                    subject.ListDatabasesAsync(session, options, cancellationToken).GetAwaiter().GetResult();
                }
                else
                {
                    subject.ListDatabases(session, options, cancellationToken);
                }
            }
            else
            {
                if (async)
                {
                    subject.ListDatabasesAsync(options, cancellationToken).GetAwaiter().GetResult();
                }
                else
                {
                    subject.ListDatabases(options, cancellationToken);
                }
            }

            var call = operationExecutor.GetReadCall <IAsyncCursor <BsonDocument> >();

            if (usingSession)
            {
                call.SessionId.Should().BeSameAs(session.ServerSession.Id);
            }
            else
            {
                call.UsedImplicitSession.Should().BeTrue();
            }
            call.CancellationToken.Should().Be(cancellationToken);

            var operation = call.Operation.Should().BeOfType <ListDatabasesOperation>().Subject;

            operation.Filter.Should().Be(filterDocument);
            operation.NameOnly.Should().Be(nameOnly);
        }
        public async Task ListDatabaseNames()
        {
            var operationExecutor = new MockOperationExecutor();
            var client            = new MongoClient(operationExecutor);
            var names             = await client.GetDatabaseNamesAsync();

            var call = operationExecutor.GetReadCall <IReadOnlyList <string> >();

            call.Operation.Should().BeOfType <ListDatabaseNamesOperation>();
        }
Exemplo n.º 3
0
        public async Task ListDatabasesAsync_should_invoke_the_correct_operation()
        {
            var operationExecutor = new MockOperationExecutor();
            var client            = new MongoClient(operationExecutor);
            await client.ListDatabasesAsync();

            var call = operationExecutor.GetReadCall <IAsyncCursor <BsonDocument> >();

            call.Operation.Should().BeOfType <ListDatabasesOperation>();
        }
Exemplo n.º 4
0
        public async Task DropDatabaseAsync_should_invoke_the_correct_operation()
        {
            var operationExecutor = new MockOperationExecutor();
            var client            = new MongoClient(operationExecutor);
            await client.DropDatabaseAsync("awesome");

            var call = operationExecutor.GetWriteCall <BsonDocument>();

            call.Operation.Should().BeOfType <DropDatabaseOperation>();
            ((DropDatabaseOperation)call.Operation).DatabaseNamespace.Should().Be(new DatabaseNamespace("awesome"));
        }
Exemplo n.º 5
0
        public void DropDatabase_should_invoke_the_correct_operation(
            [Values(false, true)] bool usingSession,
            [Values(false, true)] bool async)
        {
            var operationExecutor = new MockOperationExecutor();
            var writeConcern      = new WriteConcern(1);
            var subject           = new MongoClient(operationExecutor, DriverTestConfiguration.GetClientSettings()).WithWriteConcern(writeConcern);
            var session           = CreateClientSession();
            var cancellationToken = new CancellationTokenSource().Token;

            if (usingSession)
            {
                if (async)
                {
                    subject.DropDatabaseAsync(session, "awesome", cancellationToken).GetAwaiter().GetResult();
                }
                else
                {
                    subject.DropDatabase(session, "awesome", cancellationToken);
                }
            }
            else
            {
                if (async)
                {
                    subject.DropDatabaseAsync("awesome", cancellationToken).GetAwaiter().GetResult();
                }
                else
                {
                    subject.DropDatabase("awesome", cancellationToken);
                }
            }

            var call = operationExecutor.GetWriteCall <BsonDocument>();

            if (usingSession)
            {
                call.SessionId.Should().BeSameAs(session.ServerSession.Id);
            }
            else
            {
                call.UsedImplicitSession.Should().BeTrue();
            }
            call.CancellationToken.Should().Be(cancellationToken);

            var dropDatabaseOperation = call.Operation.Should().BeOfType <DropDatabaseOperation>().Subject;

            dropDatabaseOperation.DatabaseNamespace.Should().Be(new DatabaseNamespace("awesome"));
            dropDatabaseOperation.WriteConcern.Should().BeSameAs(writeConcern);
        }
        public void ListDatabases_should_invoke_the_correct_operation(
            [Values(false, true)] bool usingSession,
            [Values(false, true)] bool async)
        {
            var operationExecutor = new MockOperationExecutor();
            var subject           = new MongoClient(operationExecutor, DriverTestConfiguration.GetClientSettings());
            var session           = CreateClientSession();
            var cancellationToken = new CancellationTokenSource().Token;

            if (usingSession)
            {
                if (async)
                {
                    subject.ListDatabasesAsync(session, cancellationToken).GetAwaiter().GetResult();
                }
                else
                {
                    subject.ListDatabases(session, cancellationToken);
                }
            }
            else
            {
                if (async)
                {
                    subject.ListDatabasesAsync(cancellationToken).GetAwaiter().GetResult();
                }
                else
                {
                    subject.ListDatabases(cancellationToken);
                }
            }

            var call = operationExecutor.GetReadCall <IAsyncCursor <BsonDocument> >();

            if (usingSession)
            {
                call.SessionId.Should().BeSameAs(session.ServerSession.Id);
            }
            else
            {
                call.UsedImplicitSession.Should().BeTrue();
            }
            call.CancellationToken.Should().Be(cancellationToken);

            call.Operation.Should().BeOfType <ListDatabasesOperation>();
        }
Exemplo n.º 7
0
        public void ListDatabases_should_invoke_the_correct_operation(
            [Values(false, true)] bool async)
        {
            var operationExecutor = new MockOperationExecutor();
            var client            = new MongoClient(operationExecutor, new MongoClientSettings());

            if (async)
            {
                client.ListDatabasesAsync().GetAwaiter().GetResult();
            }
            else
            {
                client.ListDatabases();
            }

            var call = operationExecutor.GetReadCall <IAsyncCursor <BsonDocument> >();

            call.Operation.Should().BeOfType <ListDatabasesOperation>();
        }
        public void DropDatabase_should_invoke_the_correct_operation(
            [Values(false, true)] bool async)
        {
            var operationExecutor = new MockOperationExecutor();
            var client            = new MongoClient(operationExecutor);

            if (async)
            {
                client.DropDatabaseAsync("awesome").GetAwaiter().GetResult();
            }
            else
            {
                client.DropDatabase("awesome");
            }

            var call = operationExecutor.GetWriteCall <BsonDocument>();

            call.Operation.Should().BeOfType <DropDatabaseOperation>();
            ((DropDatabaseOperation)call.Operation).DatabaseNamespace.Should().Be(new DatabaseNamespace("awesome"));
        }
Exemplo n.º 9
0
        public void DropDatabase_should_invoke_the_correct_operation(
            [Values(false, true)] bool async)
        {
            var operationExecutor = new MockOperationExecutor();
            var writeConcern      = new WriteConcern(1);
            var client            = new MongoClient(operationExecutor, new MongoClientSettings()).WithWriteConcern(writeConcern);

            if (async)
            {
                client.DropDatabaseAsync("awesome").GetAwaiter().GetResult();
            }
            else
            {
                client.DropDatabase("awesome");
            }

            var call = operationExecutor.GetWriteCall <BsonDocument>();

            var dropDatabaseOperation = call.Operation.Should().BeOfType <DropDatabaseOperation>().Subject;

            dropDatabaseOperation.DatabaseNamespace.Should().Be(new DatabaseNamespace("awesome"));
            dropDatabaseOperation.WriteConcern.Should().BeSameAs(writeConcern);
        }
Exemplo n.º 10
0
        public void ListDatabaseNames_should_invoke_the_correct_operation(
            [Values(false, true)] bool usingSession,
            [Values(false, true)] bool async)
        {
            var operationExecutor       = new MockOperationExecutor();
            var subject                 = new MongoClient(operationExecutor, DriverTestConfiguration.GetClientSettings());
            var session                 = CreateClientSession();
            var cancellationToken       = new CancellationTokenSource().Token;
            var listDatabaseNamesResult = @"
            {
                ""databases"" : [
                    {
                        ""name"" : ""admin"",
                        ""sizeOnDisk"" : 131072,
                        ""empty"" : false
                    },
                    {
                        ""name"" : ""blog"",
                        ""sizeOnDisk"" : 11669504,
                        ""empty"" : false
                    },
                    {
                        ""name"" : ""test-chambers"",
                        ""sizeOnDisk"" : 222883840,
                        ""empty"" : false
                    },
                    {
                        ""name"" : ""recipes"",
                        ""sizeOnDisk"" : 73728,
                        ""empty"" : false
                    },
                    {
                        ""name"" : ""employees"",
                        ""sizeOnDisk"" : 225280,
                        ""empty"" : false
                    }
                ],
                ""totalSize"" : 252534784,
                ""ok"" : 1
            }";
            var operationResult         = BsonDocument.Parse(listDatabaseNamesResult);

            operationExecutor.EnqueueResult(CreateListDatabasesOperationCursor(operationResult));

            IList <string> databaseNames;

            if (async)
            {
                if (usingSession)
                {
                    databaseNames = subject.ListDatabaseNamesAsync(session, cancellationToken).GetAwaiter().GetResult().ToList();
                }
                else
                {
                    databaseNames = subject.ListDatabaseNamesAsync(cancellationToken).GetAwaiter().GetResult().ToList();
                }
            }
            else
            {
                if (usingSession)
                {
                    databaseNames = subject.ListDatabaseNames(session, cancellationToken).ToList();
                }
                else
                {
                    databaseNames = subject.ListDatabaseNames(cancellationToken).ToList();
                }
            }

            var call = operationExecutor.GetReadCall <IAsyncCursor <BsonDocument> >();

            if (usingSession)
            {
                call.SessionId.Should().BeSameAs(session.ServerSession.Id);
            }
            else
            {
                call.UsedImplicitSession.Should().BeTrue();
            }

            call.CancellationToken.Should().Be(cancellationToken);

            var operation = call.Operation.Should().BeOfType <ListDatabasesOperation>().Subject;

            operation.NameOnly.Should().Be(true);
            databaseNames.Should().Equal(operationResult["databases"].AsBsonArray.Select(record => record["name"].AsString));
        }
Exemplo n.º 11
0
        public void Watch_should_invoke_the_correct_operation(
            [Values(false, true)] bool usingSession,
            [Values(false, true)] bool async)
        {
            var operationExecutor = new MockOperationExecutor();
            var clientSettings    = DriverTestConfiguration.GetClientSettings();
            var subject           = new MongoClient(operationExecutor, clientSettings);
            var session           = usingSession ? CreateClientSession() : null;
            var pipeline          = new EmptyPipelineDefinition <ChangeStreamDocument <BsonDocument> >().Limit(1);
            var options           = new ChangeStreamOptions
            {
                BatchSize            = 123,
                Collation            = new Collation("en-us"),
                FullDocument         = ChangeStreamFullDocumentOption.UpdateLookup,
                MaxAwaitTime         = TimeSpan.FromSeconds(123),
                ResumeAfter          = new BsonDocument(),
                StartAtOperationTime = new BsonTimestamp(1, 2)
            };
            var cancellationToken = new CancellationTokenSource().Token;
            var renderedPipeline  = new[] { BsonDocument.Parse("{ $limit : 1 }") };

            if (usingSession)
            {
                if (async)
                {
                    subject.WatchAsync(session, pipeline, options, cancellationToken).GetAwaiter().GetResult();
                }
                else
                {
                    subject.Watch(session, pipeline, options, cancellationToken);
                }
            }
            else
            {
                if (async)
                {
                    subject.WatchAsync(pipeline, options, cancellationToken).GetAwaiter().GetResult();
                }
                else
                {
                    subject.Watch(pipeline, options, cancellationToken);
                }
            }

            var call = operationExecutor.GetReadCall <IAsyncCursor <ChangeStreamDocument <BsonDocument> > >();

            if (usingSession)
            {
                call.SessionId.Should().BeSameAs(session.ServerSession.Id);
            }
            else
            {
                call.UsedImplicitSession.Should().BeTrue();
            }
            call.CancellationToken.Should().Be(cancellationToken);

            var changeStreamOperation = call.Operation.Should().BeOfType <ChangeStreamOperation <ChangeStreamDocument <BsonDocument> > >().Subject;

            changeStreamOperation.BatchSize.Should().Be(options.BatchSize);
            changeStreamOperation.Collation.Should().BeSameAs(options.Collation);
            changeStreamOperation.CollectionNamespace.Should().BeNull();
            changeStreamOperation.DatabaseNamespace.Should().BeNull();
            changeStreamOperation.FullDocument.Should().Be(options.FullDocument);
            changeStreamOperation.MaxAwaitTime.Should().Be(options.MaxAwaitTime);
            changeStreamOperation.MessageEncoderSettings.Should().NotBeNull();
            changeStreamOperation.Pipeline.Should().Equal(renderedPipeline);
            changeStreamOperation.ReadConcern.Should().Be(clientSettings.ReadConcern);
            changeStreamOperation.ResultSerializer.Should().BeOfType <ChangeStreamDocumentSerializer <BsonDocument> >();
            changeStreamOperation.ResumeAfter.Should().Be(options.ResumeAfter);
            changeStreamOperation.StartAtOperationTime.Should().Be(options.StartAtOperationTime);
        }